diff --git a/back/inventory/models.py b/back/inventory/models.py index d0acc2e..ac18d18 100644 --- a/back/inventory/models.py +++ b/back/inventory/models.py @@ -10,12 +10,21 @@ class Partner(models.Model): return f"Partner {self.id}" +class Author(models.Model): + id = models.AutoField(primary_key=True) + name = models.CharField(max_length=255) + telegram_id = models.CharField(max_length=50) + + def str(self): + return f"Author {self.id} - {self.name}" + + class InventoryItem(models.Model): id = models.AutoField(primary_key=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) name = models.CharField(max_length=255) - author = models.ForeignKey(Author, on_delete=models.CASCADE) + author = models.ForeignKey(Author, on_delete=models.CASCADE, null=True) partner = models.ForeignKey( Partner, related_name="Inventory", on_delete=models.CASCADE ) @@ -28,19 +37,10 @@ class Element(models.Model): photo = models.ImageField(upload_to=".") additional_text = models.TextField() created_at = models.DateTimeField(auto_now_add=True) - + inventory = models.ForeignKey( InventoryItem, related_name="Element", on_delete=models.CASCADE ) def __str__(self): return f"Element {self.id} (Inventory {self.inventory.id})" - - class Author(models.Model): - id = models.AutoField(primary_key=True) - name = models.CharField(max_length=255) - telegram_id = models.CharField(max_length=50) - - def str(self): - return f"Author {self.id} - {self.name}" - diff --git a/back/inventory/views.py b/back/inventory/views.py index 666f034..1f70842 100644 --- a/back/inventory/views.py +++ b/back/inventory/views.py @@ -1,4 +1,5 @@ import requests +import datetime from django.conf import settings @@ -92,7 +93,10 @@ class ElementViewSet(viewsets.ModelViewSet): if Partner.objects.filter(external_id=data["partner"]).exists(): partner_object = Partner.objects.get(external_id=data["partner"]) else: - partner_object = Partner.objects.create(external_id=data["partner"]) + partner_object = Partner.objects.create( + external_id=data["partner"], + name=data["partner_name"], + ) partner_serializer = PartnerSerializer(partner_object, many=False) # check if inventory exist @@ -103,7 +107,10 @@ class ElementViewSet(viewsets.ModelViewSet): ): inventory_object = InventoryItem.objects.get(id=data["inventory"]) else: - inventory_object = InventoryItem.objects.create(partner=partner_object) + inventory_object = InventoryItem.objects.create( + partner=partner_object, + name=f"{data['partner_name']} {datetime.datetime.now()}", + ) inventory_serializer = InventorySerializer(inventory_object, many=False) element_item = Element.objects.create( diff --git a/front/components/edit.vue b/front/components/edit.vue index a406096..4016d4c 100644 --- a/front/components/edit.vue +++ b/front/components/edit.vue @@ -43,9 +43,18 @@ const schema = object({ type Schema = InferType async function onSubmit(event: FormSubmitEvent) { - const data = await $fetch(`${apiBase}/element/`, { method: 'POST', body: JSON.stringify(event.data) }) - const newElements = await $fetch(`${apiBase}/element?inventory_id=${route.params.inv_id}`, { headers }) - elements.value = newElements.results + const prepader_data = event.data + prepader_data.partner_name = external_data.partner.find(el => el.Ref_Key == state.partner)?.Description + if(!prepader_data.partner_name) prepader_data.partner_name = prepader_data.partner + + const data = await $fetch(`${apiBase}/element/`, { method: 'POST', body: JSON.stringify(prepader_data) }) + const inv_id = route.params.inv_id || data.inventory?.id + if (!route.params.inv_id) { + navigateTo(`/organization/p_${data.partner.id}/i_${data.inventory.id}`) + } else { + const newElements = await $fetch(`${apiBase}/element?inventory_id=${inv_id}`, { headers }) + elements.value = newElements.results + } } const searchInExternal = (q: string) => {