Working v0

This commit is contained in:
2024-09-27 18:09:38 +02:00
parent f3116a6876
commit 8dfafa9404
25 changed files with 740 additions and 389 deletions
@@ -1,6 +1,6 @@
import json
from app.utils.api.api_list import encrypted_fields, header_for_table
from app.utils.api.api_list import header_for_table
from django.contrib.auth.decorators import login_required
from django.db import models
from django.db.models.fields.related import RelatedField
@@ -12,18 +12,15 @@ from items.models import Item, ItemType
def item_list(request):
items = Item.objects.filter(author=request.user.setting)
types = ItemType.objects.filter(author=request.user.setting)
return JsonResponse(
{
"result": {
"items": list(items.serialize()),
"types": list(types.serialize()),
"items_headers": header_for_table(Item),
"types": list(types.serialize()),
"types_headers": header_for_table(ItemType),
"items_encrypted": encrypted_fields(Item),
"types_encrypted": encrypted_fields(ItemType),
},
"count": items.count(),
}
@@ -85,6 +82,6 @@ def item_edit(request, id=None):
return JsonResponse(
{
"item": Item.objects.filter(id=item.id).serialize().first(),
"object": Item.objects.filter(id=item.id).serialize().first(),
}
)
+67
View File
@@ -0,0 +1,67 @@
import json
from django.contrib.auth.decorators import login_required
from django.db import models
from django.db.models.fields.related import RelatedField
from django.http import JsonResponse
from items.models import ItemType
@login_required
def type_edit(request, id=None):
"""Create/edit type view."""
if id:
item = ItemType.objects.filter(id=id, author=request.user.setting).first()
else:
item = ItemType(author=request.user.setting)
if not item:
return JsonResponse({}, status=404)
if request.method == "DELETE":
try:
item.delete()
except Exception:
return JsonResponse({"error": "INVALID_DELETE"}, status=401)
return JsonResponse({})
if request.method != "POST":
return JsonResponse({}, status=405)
try:
data = json.loads(request.body)
except Exception:
return JsonResponse({"error": "INVALID_DATA"}, status=401)
for field in item._meta.fields:
if field.name in item.Serialization.excluded_fields_edit:
continue
if isinstance(field, RelatedField):
# For now, disregard related field (fk, m2m, 1-1)
if isinstance(field, models.ForeignKey):
setattr(item, f"{field.name}_id", data[field.name])
continue
if field.name not in data:
continue
setattr(item, field.name, data[field.name])
try:
item.save()
except Exception:
return JsonResponse({"error": "DATA_INVALID"}, status=401)
return JsonResponse(
{
"object": ItemType.objects.filter(id=item.id).serialize().first(),
}
)