Add more components + base for history

This commit is contained in:
2024-10-01 15:42:18 +02:00
parent fb4d566007
commit 8f9c83dc2a
38 changed files with 1374 additions and 665 deletions
+8 -2
View File
@@ -41,10 +41,16 @@ def generic_edit(model, request, id=None):
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])
# Also allow for nested object (giving the full object instead of the id only)
if isinstance(data[field.name], dict):
setattr(item, f"{field.name}_id", data[field.name]["id"])
else:
setattr(item, f"{field.name}_id", data[field.name])
# For now, disregard m2m fields
continue
if field.name not in data:
+2 -1
View File
@@ -21,7 +21,7 @@ def item_list(request):
"types": list(types.serialize()),
"types_headers": header_for_table(ItemType),
},
"count": items.count(),
"count": items.count() + types.count(),
}
)
@@ -44,6 +44,7 @@ def item_details(request, id):
return JsonResponse(
{
"object": item.serialize(),
"headers": header_for_table(Item),
"parents": list(item.parents.serialize()),
"parents_headers": header_for_table(ItemRelation),
"children": list(item.children.serialize()),
+24 -4
View File
@@ -3,22 +3,28 @@ from django.http import JsonResponse
from app.utils.api.api_list import header_for_table
from items.models import Property
from items.models import LinkedProperty, Property, RelationProperty
from items.views.base import generic_edit
@login_required
def property_list(request):
items = Property.objects.filter(author=request.user.setting)
properties = Property.objects.filter(author=request.user.setting)
linked_properties = LinkedProperty.objects.filter(author=request.user.setting)
relation_properties = RelationProperty.objects.filter(author=request.user.setting)
return JsonResponse(
{
"result": {
"properties": list(items.serialize()),
"properties": list(properties.serialize()),
"properties_headers": header_for_table(Property),
"linked_properties": list(linked_properties.serialize()),
"linked_properties_headers": header_for_table(LinkedProperty),
"relation_properties": list(relation_properties.serialize()),
"relation_properties_headers": header_for_table(RelationProperty),
},
"count": items.count(),
"count": properties.count() + linked_properties.count() + relation_properties.count(),
}
)
@@ -28,3 +34,17 @@ def property_edit(request, id=None):
"""Create/edit property view."""
return generic_edit(Property, request, id)
@login_required
def linked_property_edit(request, id=None):
"""Create/edit linked property view."""
return generic_edit(LinkedProperty, request, id)
@login_required
def relation_property_edit(request, id=None):
"""Create/edit relation property view."""
return generic_edit(RelationProperty, request, id)
+24
View File
@@ -4,6 +4,23 @@ from django.http import JsonResponse
from app.utils.api.api_list import header_for_table
from items.models import Item, ItemRelation, Property, RelationProperty
from items.views.base import generic_edit
@login_required
def relation_list(request):
relations = ItemRelation.objects.filter(author=request.user.setting)
return JsonResponse(
{
"result": {
"relations": list(relations.serialize()),
"headers": header_for_table(ItemRelation),
},
"count": relations.count(),
}
)
@login_required
@@ -27,3 +44,10 @@ def relation_details(request, id):
"relation_properties_headers": header_for_table(RelationProperty),
}
)
@login_required
def relation_edit(request, id=None):
"""Create/edit relation view."""
return generic_edit(ItemRelation, request, id)