V0.1
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
from django.db import models
|
||||
from django.db.models.fields.related import RelatedField
|
||||
from django.http.response import JsonResponse
|
||||
|
||||
|
||||
import json
|
||||
|
||||
|
||||
def generic_edit(model, request, id=None):
|
||||
"""Create/edit generic object view."""
|
||||
|
||||
if id:
|
||||
item = model.objects.filter(id=id, author=request.user.setting).first()
|
||||
|
||||
else:
|
||||
item = model(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": item.serialize(),
|
||||
}
|
||||
)
|
||||
@@ -1,11 +1,10 @@
|
||||
import json
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.http import JsonResponse
|
||||
|
||||
|
||||
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
|
||||
from django.http import JsonResponse
|
||||
from items.models import Item, ItemType
|
||||
from items.models import Item, ItemRelation, ItemType, LinkedProperty, Property
|
||||
from items.views.base import generic_edit
|
||||
|
||||
|
||||
@login_required
|
||||
@@ -31,57 +30,27 @@ def item_list(request):
|
||||
def item_edit(request, id=None):
|
||||
"""Create/edit item view."""
|
||||
|
||||
if id:
|
||||
item = Item.objects.filter(id=id, author=request.user.setting).first()
|
||||
return generic_edit(Item, request, id)
|
||||
|
||||
else:
|
||||
item = Item(author=request.user.setting)
|
||||
|
||||
@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)
|
||||
|
||||
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": Item.objects.filter(id=item.id).serialize().first(),
|
||||
"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),
|
||||
}
|
||||
)
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
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 Property
|
||||
from items.views.base import generic_edit
|
||||
|
||||
|
||||
@login_required
|
||||
def property_list(request):
|
||||
|
||||
items = Property.objects.filter(author=request.user.setting)
|
||||
|
||||
return JsonResponse(
|
||||
{
|
||||
"result": {
|
||||
"properties": list(items.serialize()),
|
||||
"properties_headers": header_for_table(Property),
|
||||
},
|
||||
"count": items.count(),
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def property_edit(request, id=None):
|
||||
"""Create/edit property view."""
|
||||
|
||||
return generic_edit(Property, request, id)
|
||||
@@ -0,0 +1,29 @@
|
||||
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, Property, RelationProperty
|
||||
|
||||
|
||||
@login_required
|
||||
def relation_details(request, id):
|
||||
|
||||
relation = ItemRelation.objects.filter(author=request.user.setting, id=id).first()
|
||||
|
||||
if not relation:
|
||||
return JsonResponse({}, status=404)
|
||||
|
||||
return JsonResponse(
|
||||
{
|
||||
"object": relation.serialize(),
|
||||
"parent": relation.parent.serialize(),
|
||||
"parent_headers": header_for_table(Item),
|
||||
"child": relation.child.serialize(),
|
||||
"child_headers": header_for_table(Item),
|
||||
"properties": list(relation.properties.serialize()),
|
||||
"properties_headers": header_for_table(Property),
|
||||
"relation_properties": list(relation.relation_properties.serialize()),
|
||||
"relation_properties_headers": header_for_table(RelationProperty),
|
||||
}
|
||||
)
|
||||
@@ -1,67 +1,12 @@
|
||||
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
|
||||
from items.views.base import generic_edit
|
||||
|
||||
|
||||
@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(),
|
||||
}
|
||||
)
|
||||
return generic_edit(ItemType, request, id)
|
||||
|
||||
Reference in New Issue
Block a user