feat: add levee work records
This commit is contained in:
@@ -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='畔塗記録',
|
||||
),
|
||||
),
|
||||
]
|
||||
|
||||
@@ -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()}'
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user