From 1ea840fbc775e475de5af9c276c043160fcb1566 Mon Sep 17 00:00:00 2001 From: Mojtaba-z Date: Sat, 27 Dec 2025 13:59:32 +0330 Subject: [PATCH] import - organizations in rancher serializer / temporary tags model --- apps/herd/web/api/v1/serializers.py | 5 +++ apps/livestock/web/api/v1/api.py | 2 +- apps/tag/migrations/0023_temporarytags.py | 37 +++++++++++++++++++++ apps/tag/models.py | 40 +++++++++++++++-------- 4 files changed, 69 insertions(+), 15 deletions(-) create mode 100644 apps/tag/migrations/0023_temporarytags.py diff --git a/apps/herd/web/api/v1/serializers.py b/apps/herd/web/api/v1/serializers.py index 9efa53a..1de4c0c 100644 --- a/apps/herd/web/api/v1/serializers.py +++ b/apps/herd/web/api/v1/serializers.py @@ -62,6 +62,11 @@ class RancherSerializer(serializers.ModelSerializer): 'name': instance.city.name } + representation['organizations'] = [ + {'id': item.organization.id, 'name': item.organization.name} + for item in instance.organization_links.all() + ] + return representation diff --git a/apps/livestock/web/api/v1/api.py b/apps/livestock/web/api/v1/api.py index 9b167fb..75023c9 100644 --- a/apps/livestock/web/api/v1/api.py +++ b/apps/livestock/web/api/v1/api.py @@ -40,7 +40,7 @@ class LiveStockViewSet(viewsets.ModelViewSet, SoftDeleteMixin): # noqa """ list of live stocks """ - queryset = self.filter_queryset(self.get_queryset().order_by('-modify_date')) + queryset = self.filter_queryset(self.get_queryset().order_by('-birthdate')) # paginate queryset page = self.paginate_queryset(queryset) diff --git a/apps/tag/migrations/0023_temporarytags.py b/apps/tag/migrations/0023_temporarytags.py new file mode 100644 index 0000000..f6a6fa4 --- /dev/null +++ b/apps/tag/migrations/0023_temporarytags.py @@ -0,0 +1,37 @@ +# Generated by Django 5.0 on 2025-12-27 08:01 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tag', '0022_alter_tagassignment_status'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='TemporaryTags', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('create_date', models.DateTimeField(auto_now_add=True)), + ('modify_date', models.DateTimeField(auto_now=True)), + ('creator_info', models.CharField(max_length=100, null=True)), + ('modifier_info', models.CharField(max_length=100, null=True)), + ('trash', models.BooleanField(default=False)), + ('tag', models.CharField(max_length=20, null=True)), + ('herd_code', models.CharField(max_length=20, null=True)), + ('gender', models.CharField(max_length=20, null=True)), + ('birthdate', models.CharField(max_length=20, null=True)), + ('type', models.CharField(max_length=20, null=True)), + ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_createddby', to=settings.AUTH_USER_MODEL)), + ('modified_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_modifiedby', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/tag/models.py b/apps/tag/models.py index e29bc51..91270e8 100644 --- a/apps/tag/models.py +++ b/apps/tag/models.py @@ -1,12 +1,13 @@ -from apps.livestock import models as livestock_models -from apps.authentication import models as auth_models -from apps.authorization import models as authoriz_models -from apps.tag.tools import tag_code_serial_scanning -from apps.core.models import BaseModel +import random + from crum import get_current_user from django.db import models from jdatetime import datetime -import random + +from apps.authentication import models as auth_models +from apps.authorization import models as authoriz_models +from apps.core.models import BaseModel +from apps.tag.tools import tag_code_serial_scanning class Tag(BaseModel): @@ -38,10 +39,10 @@ class Tag(BaseModel): if not self.tag_code: # set total tag code self.tag_code = f"{self.country_code}" \ - f"{self.static_code}" \ - f"{self.ownership_code}" \ - f"{self.species_code}" \ - f"{self.serial}" + f"{self.static_code}" \ + f"{self.ownership_code}" \ + f"{self.species_code}" \ + f"{self.serial}" if not self.organization: # set user organization for tag user = get_current_user() @@ -89,10 +90,10 @@ class TagAssignment(BaseModel): self.serial_random_part = random.randint(1000, 9999) if not self.serial: self.serial = f"" \ - f"{self.serial_sender_part}" \ - f"{self.serial_recipient_part}" \ - f"{self.serial_date_part}" \ - f"{self.serial_random_part}" + f"{self.serial_sender_part}" \ + f"{self.serial_recipient_part}" \ + f"{self.serial_date_part}" \ + f"{self.serial_random_part}" super(TagAssignment, self).save(*args, **kwargs) @@ -122,3 +123,14 @@ class AllocatedTags(BaseModel): def save(self, *args, **kwargs): super(AllocatedTags, self).save(*args, **kwargs) + + +class TemporaryTags(BaseModel): + tag = models.CharField(max_length=20, null=True) + herd_code = models.CharField(max_length=20, null=True) + gender = models.CharField(max_length=20, null=True) + birthdate = models.CharField(max_length=20, null=True) + type = models.CharField(max_length=20, null=True) + + def save(self, *args, **kwargs): + super(TemporaryTags, self).save(*args, **kwargs)