feat: add levee work records

This commit is contained in:
akira
2026-04-04 11:32:26 +09:00
parent c773c7d3b8
commit b7b9818855
20 changed files with 929 additions and 6 deletions

View File

@@ -0,0 +1,41 @@
# Generated by Django 5.2 on 2026-04-04
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('levee_work', '0001_initial'),
('workrecords', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='workrecord',
name='work_type',
field=models.CharField(
choices=[
('fertilizer_delivery', '肥料運搬'),
('fertilizer_spreading', '肥料散布'),
('levee_work', '畔塗'),
],
max_length=40,
verbose_name='作業種別',
),
),
migrations.AddField(
model_name='workrecord',
name='levee_work_session',
field=models.OneToOneField(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name='work_record',
to='levee_work.leveeworksession',
verbose_name='畔塗記録',
),
),
]

View File

@@ -5,6 +5,7 @@ class WorkRecord(models.Model):
class WorkType(models.TextChoices):
FERTILIZER_DELIVERY = 'fertilizer_delivery', '肥料運搬'
FERTILIZER_SPREADING = 'fertilizer_spreading', '肥料散布'
LEVEE_WORK = 'levee_work', '畔塗'
work_date = models.DateField(verbose_name='作業日')
work_type = models.CharField(
@@ -31,6 +32,14 @@ class WorkRecord(models.Model):
related_name='work_record',
verbose_name='散布実績',
)
levee_work_session = models.OneToOneField(
'levee_work.LeveeWorkSession',
on_delete=models.CASCADE,
null=True,
blank=True,
related_name='work_record',
verbose_name='畔塗記録',
)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
@@ -41,4 +50,3 @@ class WorkRecord(models.Model):
def __str__(self):
return f'{self.work_date} {self.get_work_type_display()}'

View File

@@ -22,6 +22,7 @@ class WorkRecordSerializer(serializers.ModelSerializer):
'delivery_plan_id',
'delivery_plan_name',
'spreading_session',
'levee_work_session',
'created_at',
'updated_at',
]
@@ -35,4 +36,3 @@ class WorkRecordSerializer(serializers.ModelSerializer):
if obj.delivery_trip_id:
return obj.delivery_trip.delivery_plan.name
return None

View File

@@ -31,3 +31,18 @@ def sync_spreading_work_record(session):
'delivery_trip': None,
},
)
def sync_levee_work_record(session):
WorkRecord.objects.update_or_create(
levee_work_session=session,
defaults={
'work_date': session.date,
'work_type': WorkRecord.WorkType.LEVEE_WORK,
'title': session.title,
'year': session.year,
'auto_created': True,
'delivery_trip': None,
'spreading_session': None,
},
)

View File

@@ -14,9 +14,9 @@ class WorkRecordViewSet(viewsets.ReadOnlyModelViewSet):
'delivery_trip',
'delivery_trip__delivery_plan',
'spreading_session',
'levee_work_session',
)
year = self.request.query_params.get('year')
if year:
queryset = queryset.filter(year=year)
return queryset