Add allocation variety change history UI
This commit is contained in:
@@ -35,6 +35,8 @@ class PlanSerializer(serializers.ModelSerializer):
|
||||
crop_name = serializers.ReadOnlyField(source='crop.name')
|
||||
variety_name = serializers.ReadOnlyField(source='variety.name')
|
||||
field_name = serializers.ReadOnlyField(source='field.name')
|
||||
variety_change_count = serializers.SerializerMethodField()
|
||||
latest_variety_change = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = Plan
|
||||
@@ -52,6 +54,32 @@ class PlanSerializer(serializers.ModelSerializer):
|
||||
notes=validated_data.get('notes', NO_CHANGE),
|
||||
)
|
||||
|
||||
def get_variety_change_count(self, obj):
|
||||
prefetched = getattr(obj, '_prefetched_objects_cache', {})
|
||||
changes = prefetched.get('variety_changes')
|
||||
if changes is not None:
|
||||
return len(changes)
|
||||
return obj.variety_changes.count()
|
||||
|
||||
def get_latest_variety_change(self, obj):
|
||||
prefetched = getattr(obj, '_prefetched_objects_cache', {})
|
||||
changes = prefetched.get('variety_changes')
|
||||
if changes is not None:
|
||||
latest = changes[0] if changes else None
|
||||
else:
|
||||
latest = obj.variety_changes.select_related('old_variety', 'new_variety').first()
|
||||
if latest is None:
|
||||
return None
|
||||
return {
|
||||
'id': latest.id,
|
||||
'changed_at': latest.changed_at,
|
||||
'old_variety_id': latest.old_variety_id,
|
||||
'old_variety_name': latest.old_variety.name if latest.old_variety else None,
|
||||
'new_variety_id': latest.new_variety_id,
|
||||
'new_variety_name': latest.new_variety.name if latest.new_variety else None,
|
||||
'fertilizer_moved_entry_count': latest.fertilizer_moved_entry_count,
|
||||
}
|
||||
|
||||
|
||||
class RiceTransplantEntrySerializer(serializers.ModelSerializer):
|
||||
field_name = serializers.CharField(source='field.name', read_only=True)
|
||||
|
||||
Reference in New Issue
Block a user