batch item/documents edit

This commit is contained in:
j 2018-09-18 23:17:32 +02:00
commit 0a4c507346
12 changed files with 879 additions and 510 deletions

View file

@ -262,6 +262,8 @@ def update_static():
pandora_json = os.path.join(settings.STATIC_ROOT, 'json/pandora.json')
for root, folders, files in os.walk(os.path.join(settings.STATIC_ROOT, 'js')):
for f in files:
if f.startswith('._'):
continue
f = os.path.join(root, f)
#ignore old embed js file
if 'js/embed/' in f:

View file

@ -132,14 +132,19 @@ def editDocument(request, data):
response = json_response()
item = 'item' in data and Item.objects.get(public_id=data['item']) or None
if data['id']:
document = models.Document.get(data['id'])
if document.editable(request.user, item):
add_changelog(request, data)
document.edit(data, request.user, item)
document.save()
response['data'] = document.json(user=request.user, item=item)
if isinstance(data['id'], list):
documents = models.Document.objects.filter(pk__in=map(ox.fromAZ, data['id']))
else:
response = json_response(status=403, text='permission denied')
documents = [models.Document.get(data['id'])]
for document in documents:
if document.editable(request.user, item):
if document == documents[0]:
add_changelog(request, data)
document.edit(data, request.user, item)
document.save()
response['data'] = document.json(user=request.user, item=item)
else:
response = json_response(status=403, text='permission denied')
else:
response = json_response(status=500, text='invalid request')
return render_to_json_response(response)

View file

@ -622,14 +622,19 @@ def edit(request, data):
}
see: add, find, get, lookup, remove, upload
'''
item = get_object_or_404_json(models.Item, public_id=data['id'])
if item.editable(request.user):
request_data = data.copy()
response = edit_item(request, item, data)
response['data'] = item.json()
add_changelog(request, request_data)
if isinstance(data['id'], list):
items = models.Item.objects.filter(public_id__in=data['id'])
else:
response = json_response(status=403, text='permission denied')
items = [get_object_or_404_json(models.Item, public_id=data['id'])]
for item in items:
if item.editable(request.user):
request_data = data.copy()
response = edit_item(request, item, data)
response['data'] = item.json()
if item == items[0]:
add_changelog(request, request_data)
else:
response = json_response(status=403, text='permission denied')
return render_to_json_response(response)
actions.register(edit, cache=False)