fix front redirect

This commit is contained in:
aarizona 2024-05-30 11:08:59 +03:00
parent 46c3995b6f
commit ef56974447
3 changed files with 32 additions and 16 deletions

View File

@ -10,12 +10,21 @@ class Partner(models.Model):
return f"Partner {self.id}" 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): class InventoryItem(models.Model):
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True) updated_at = models.DateTimeField(auto_now=True)
name = models.CharField(max_length=255) 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 = models.ForeignKey(
Partner, related_name="Inventory", on_delete=models.CASCADE Partner, related_name="Inventory", on_delete=models.CASCADE
) )
@ -28,19 +37,10 @@ class Element(models.Model):
photo = models.ImageField(upload_to=".") photo = models.ImageField(upload_to=".")
additional_text = models.TextField() additional_text = models.TextField()
created_at = models.DateTimeField(auto_now_add=True) created_at = models.DateTimeField(auto_now_add=True)
inventory = models.ForeignKey( inventory = models.ForeignKey(
InventoryItem, related_name="Element", on_delete=models.CASCADE InventoryItem, related_name="Element", on_delete=models.CASCADE
) )
def __str__(self): def __str__(self):
return f"Element {self.id} (Inventory {self.inventory.id})" 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}"

View File

@ -1,4 +1,5 @@
import requests import requests
import datetime
from django.conf import settings from django.conf import settings
@ -92,7 +93,10 @@ class ElementViewSet(viewsets.ModelViewSet):
if Partner.objects.filter(external_id=data["partner"]).exists(): if Partner.objects.filter(external_id=data["partner"]).exists():
partner_object = Partner.objects.get(external_id=data["partner"]) partner_object = Partner.objects.get(external_id=data["partner"])
else: 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) partner_serializer = PartnerSerializer(partner_object, many=False)
# check if inventory exist # check if inventory exist
@ -103,7 +107,10 @@ class ElementViewSet(viewsets.ModelViewSet):
): ):
inventory_object = InventoryItem.objects.get(id=data["inventory"]) inventory_object = InventoryItem.objects.get(id=data["inventory"])
else: 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) inventory_serializer = InventorySerializer(inventory_object, many=False)
element_item = Element.objects.create( element_item = Element.objects.create(

View File

@ -43,9 +43,18 @@ const schema = object({
type Schema = InferType<typeof schema> type Schema = InferType<typeof schema>
async function onSubmit(event: FormSubmitEvent<Schema>) { async function onSubmit(event: FormSubmitEvent<Schema>) {
const data = await $fetch(`${apiBase}/element/`, { method: 'POST', body: JSON.stringify(event.data) }) const prepader_data = event.data
const newElements = await $fetch<ApiTypeList>(`${apiBase}/element?inventory_id=${route.params.inv_id}`, { headers }) prepader_data.partner_name = external_data.partner.find(el => el.Ref_Key == state.partner)?.Description
elements.value = newElements.results 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<ApiTypeList>(`${apiBase}/element?inventory_id=${inv_id}`, { headers })
elements.value = newElements.results
}
} }
const searchInExternal = (q: string) => { const searchInExternal = (q: string) => {