fix - tag code generation in tags
This commit is contained in:
46
apps/tag/migrations/0029_alter_tag_tag_code_tagbatch.py
Normal file
46
apps/tag/migrations/0029_alter_tag_tag_code_tagbatch.py
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Generated by Django 5.0 on 2026-01-07 11:55
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('authentication', '0060_organization_ownership_code'),
|
||||||
|
('tag', '0028_tagbatch'),
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='tag',
|
||||||
|
name='tag_code',
|
||||||
|
field=models.CharField(max_length=20, null=True),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='TagBatch',
|
||||||
|
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)),
|
||||||
|
('request_number', models.CharField(default='0', max_length=50, null=True)),
|
||||||
|
('species_code', models.IntegerField(default=0)),
|
||||||
|
('serial_from', models.PositiveBigIntegerField(default=0)),
|
||||||
|
('serial_to', models.PositiveBigIntegerField(default=0)),
|
||||||
|
('status', models.CharField(choices=[('created', 'CREATED'), ('distributed', 'DISTRIBUTED')], default='created', max_length=20, null=True)),
|
||||||
|
('description', models.TextField(blank=True, 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)),
|
||||||
|
('organization', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tag_batches', to='authentication.organization')),
|
||||||
|
('tag', models.ManyToManyField(related_name='tags', to='tag.tag')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'abstract': False,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -15,7 +15,7 @@ class Tag(BaseModel):
|
|||||||
ownership_code = models.IntegerField(default=0, help_text='ownership code of organizations like: 51, 52, etc')
|
ownership_code = models.IntegerField(default=0, help_text='ownership code of organizations like: 51, 52, etc')
|
||||||
species_code = models.IntegerField(default=0, help_text='code of livestock type like: 1->sheep')
|
species_code = models.IntegerField(default=0, help_text='code of livestock type like: 1->sheep')
|
||||||
serial = models.CharField(max_length=8, help_text='7 digit number as serial on tag code')
|
serial = models.CharField(max_length=8, help_text='7 digit number as serial on tag code')
|
||||||
tag_code = models.CharField(max_length=20, unique=True, null=True)
|
tag_code = models.CharField(max_length=20, null=True)
|
||||||
organization = models.ForeignKey(
|
organization = models.ForeignKey(
|
||||||
auth_models.Organization,
|
auth_models.Organization,
|
||||||
on_delete=models.CASCADE,
|
on_delete=models.CASCADE,
|
||||||
@@ -29,12 +29,6 @@ class Tag(BaseModel):
|
|||||||
)
|
)
|
||||||
status = models.CharField(max_length=20, default="F")
|
status = models.CharField(max_length=20, default="F")
|
||||||
|
|
||||||
# class Meta:
|
|
||||||
# indexes = [
|
|
||||||
# models.Index(fields=['ownership_code', 'species_code']),
|
|
||||||
# models.Index(fields=['status']),
|
|
||||||
# ]
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.id}-{self.tag_code}'
|
return f'{self.id}-{self.tag_code}'
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from apps.authentication.models import Organization
|
|||||||
from apps.livestock.web.api.v1.serializers import LiveStockSerializer
|
from apps.livestock.web.api.v1.serializers import LiveStockSerializer
|
||||||
from apps.tag.exceptions import TagException
|
from apps.tag.exceptions import TagException
|
||||||
from apps.tag.models import Tag, TagBatch
|
from apps.tag.models import Tag, TagBatch
|
||||||
|
from apps.tag.tools import tag_code_serial_scanning
|
||||||
|
|
||||||
|
|
||||||
class TagService:
|
class TagService:
|
||||||
@@ -12,6 +13,24 @@ class TagService:
|
|||||||
Different Services of Livestock Tags
|
Different Services of Livestock Tags
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def tag_code_compelition(self, tag_data: dict, serial, ownership_code, organization):
|
||||||
|
"""
|
||||||
|
complete data of tag
|
||||||
|
"""
|
||||||
|
|
||||||
|
tag_data.update({
|
||||||
|
'serial': serial,
|
||||||
|
'ownership_code': ownership_code,
|
||||||
|
'organization': organization,
|
||||||
|
'tag_code': f"{tag_data.get('country_code')}"
|
||||||
|
f"{tag_data.get('static_code')}"
|
||||||
|
f"{ownership_code}"
|
||||||
|
f"{tag_data.get('species_code')}"
|
||||||
|
f"{tag_code_serial_scanning(str(serial))}"
|
||||||
|
})
|
||||||
|
|
||||||
|
return tag_data
|
||||||
|
|
||||||
def create_tag(
|
def create_tag(
|
||||||
self,
|
self,
|
||||||
serial_start_range: int = None,
|
serial_start_range: int = None,
|
||||||
@@ -24,7 +43,7 @@ class TagService:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# create tag batch
|
# create tag batch
|
||||||
request_number = serial_end_range - serial_start_range
|
request_number = (serial_end_range - serial_start_range) + 1
|
||||||
batch = TagBatch.objects.create(
|
batch = TagBatch.objects.create(
|
||||||
organization=org,
|
organization=org,
|
||||||
request_number=request_number if request_number > 0 else 1,
|
request_number=request_number if request_number > 0 else 1,
|
||||||
@@ -36,12 +55,13 @@ class TagService:
|
|||||||
|
|
||||||
tag_list = []
|
tag_list = []
|
||||||
while serial_start_range <= serial_end_range:
|
while serial_start_range <= serial_end_range:
|
||||||
data.update({
|
tag_data = self.tag_code_compelition(
|
||||||
'serial': str(serial_start_range),
|
tag_data=data,
|
||||||
'ownership_code': org.ownership_code,
|
serial=serial_start_range,
|
||||||
'organization': org,
|
organization=org,
|
||||||
})
|
ownership_code=org.ownership_code
|
||||||
tag_list.append(Tag(**data))
|
)
|
||||||
|
tag_list.append(Tag(**tag_data))
|
||||||
|
|
||||||
if Tag.objects.filter(serial=serial_start_range, species_code=data.get('species_code')).exists():
|
if Tag.objects.filter(serial=serial_start_range, species_code=data.get('species_code')).exists():
|
||||||
raise TagException(f' پلاک با مشخصات مورد نظر {serial_start_range} وجود دارد ', status_code=403) # noqa
|
raise TagException(f' پلاک با مشخصات مورد نظر {serial_start_range} وجود دارد ', status_code=403) # noqa
|
||||||
@@ -66,7 +86,7 @@ class TagService:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# update tag batch
|
# update tag batch
|
||||||
request_number = serial_end_range - serial_start_range
|
request_number = (serial_end_range - serial_start_range) + 1
|
||||||
batch = TagBatch.objects.get(id=batch_id)
|
batch = TagBatch.objects.get(id=batch_id)
|
||||||
batch.request_number = request_number
|
batch.request_number = request_number
|
||||||
batch.species_code = data.get('species_code')
|
batch.species_code = data.get('species_code')
|
||||||
@@ -77,12 +97,13 @@ class TagService:
|
|||||||
# recreate tags for batch
|
# recreate tags for batch
|
||||||
tag_list = []
|
tag_list = []
|
||||||
while serial_start_range <= serial_end_range:
|
while serial_start_range <= serial_end_range:
|
||||||
data.update({
|
tag_data = self.tag_code_compelition(
|
||||||
'serial': str(serial_start_range),
|
tag_data=data,
|
||||||
'ownership_code': org.ownership_code,
|
serial=serial_start_range,
|
||||||
'organization': org,
|
organization=org,
|
||||||
})
|
ownership_code=org.ownership_code
|
||||||
tag_list.append(Tag(**data))
|
)
|
||||||
|
tag_list.append(Tag(**tag_data))
|
||||||
|
|
||||||
if Tag.objects.filter(
|
if Tag.objects.filter(
|
||||||
serial=serial_start_range,
|
serial=serial_start_range,
|
||||||
|
|||||||
Reference in New Issue
Block a user