from django.contrib.auth.decorators import login_required from django.http import JsonResponse from app.utils.api.api_list import header_for_table from items.models import Item, ItemRelation, ItemType, LinkedProperty, Property from items.views.base import generic_edit @login_required 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()), "items_headers": header_for_table(Item), "types": list(types.serialize()), "types_headers": header_for_table(ItemType), }, "count": items.count(), } ) @login_required def item_edit(request, id=None): """Create/edit item view.""" return generic_edit(Item, request, id) @login_required def item_details(request, id): item = Item.objects.filter(author=request.user.setting, id=id).first() if not item: return JsonResponse({}, status=404) return JsonResponse( { "object": item.serialize(), "parents": list(item.parents.serialize()), "parents_headers": header_for_table(ItemRelation), "children": list(item.children.serialize()), "children_headers": header_for_table(ItemRelation), "properties": list(item.properties.serialize()), "properties_headers": header_for_table(Property), "linked_properties": list(item.linked_properties.serialize()), "linked_properties_headers": header_for_table(LinkedProperty), } )