From 817056f23554cd5b32c8b481b6d2438700f9da2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Tue, 4 Oct 2016 13:07:07 +0200 Subject: [PATCH] signed edit data is now a dictionary --- .../editor/templates/editor/finalize.html | 23 ++++++-- src/c3nav/editor/views.py | 56 ++++++++++++++----- 2 files changed, 60 insertions(+), 19 deletions(-) diff --git a/src/c3nav/editor/templates/editor/finalize.html b/src/c3nav/editor/templates/editor/finalize.html index e149d5c3..958e77d6 100644 --- a/src/c3nav/editor/templates/editor/finalize.html +++ b/src/c3nav/editor/templates/editor/finalize.html @@ -61,10 +61,23 @@

Your Edit

Map Package: {{ package_name }}

- {% if file_contents %} -

New content for file: {{ file_path }}

-
{{ file_contents }}
- {% else %} -

Delete file: {{ file_path }}

+

+ + {% if action == 'create' %} + Create file: + {% elif action == 'edit' %} + Edit file: + {% elif action == 'delete' %} + Delete file: + {% endif %} + + {{ file_path }} +

+

Parent commit id: {{ commit_id }}

+ {% if action != 'delete' %} +

+ New file contents: +

{{ file_contents }}
+

{% endif %} {% endblock %} diff --git a/src/c3nav/editor/views.py b/src/c3nav/editor/views.py index 7dbdab0a..51827a54 100644 --- a/src/c3nav/editor/views.py +++ b/src/c3nav/editor/views.py @@ -36,7 +36,15 @@ def add_feature(request, feature_type): commit_msg = 'Added %s: %s' % (str(feature_type.title).lower(), title_en) activate(language) return render(request, 'editor/feature_success.html', { - 'data': signing.dumps((feature.package.name, feature.tofilename(), content, commit_msg)) + 'data': signing.dumps({ + 'type': 'editor.edit', + 'action': 'create', + 'package_name': feature.package.name, + 'commit_id': feature.package.commit_id, + 'commit_msg': commit_msg, + 'file_path': feature.tofilename(), + 'content': content, + }) }) feature.save() @@ -68,7 +76,14 @@ def edit_feature(request, name): commit_msg = 'Deleted %s: %s' % (str(feature_type.title).lower(), title_en) activate(language) return render(request, 'editor/feature_success.html', { - 'data': signing.dumps((feature.package.name, feature.tofilename(), None, commit_msg)) + 'data': signing.dumps({ + 'type': 'editor.edit', + 'action': 'delete', + 'package_name': feature.package.name, + 'commit_id': feature.package.commit_id, + 'commit_msg': commit_msg, + 'file_path': feature.tofilename(), + }) }) feature.delete() @@ -96,7 +111,15 @@ def edit_feature(request, name): commit_msg = 'Updated %s: %s' % (str(feature_type.title).lower(), title_en) activate(language) return render(request, 'editor/feature_success.html', { - 'data': signing.dumps((feature.package.name, feature.tofilename(), content, commit_msg)) + 'data': signing.dumps({ + 'type': 'editor.edit', + 'action': 'edit', + 'package_name': feature.package.name, + 'commit_id': feature.package.commit_id, + 'commit_msg': commit_msg, + 'file_path': feature.tofilename(), + 'content': content, + }) }) feature.save() @@ -117,11 +140,12 @@ def edit_feature(request, name): def finalize(request): if 'data' not in request.POST: raise SuspiciousOperation('Missing data.') - data = request.POST['data'] + data = signing.loads(request.POST['data']) - package_name, file_path, file_contents, commit_msg = signing.loads(data) + if data['type'] != 'editor.edit': + raise SuspiciousOperation('Wrong data type.') - package = Package.objects.filter(name=package_name).first() + package = Package.objects.filter(name=data['package_name']).first() hoster = None if package is not None: hoster = get_hoster_for_package(package) @@ -137,17 +161,19 @@ def finalize(request): if form.is_valid() and hoster_state == 'logged_in': pass else: - form = CommitForm({'commit_msg': commit_msg}) + form = CommitForm({'commit_msg': data['commit_msg']}) return render(request, 'editor/finalize.html', { - 'data': data, + 'data': request.POST['data'], + 'action': data['action'], + 'commit_id': data['commit_id'], 'commit_form': form, - 'package_name': package_name, + 'package_name': data['package_name'], 'hoster': hoster, 'hoster_state': hoster_state, 'hoster_error': hoster_error, - 'file_path': file_path, - 'file_contents': file_contents + 'file_path': data['file_path'], + 'file_contents': data.get('content') }) @@ -160,10 +186,12 @@ def finalize_oauth_progress(request): def finalize_oauth_redirect(request): if 'data' not in request.POST: raise SuspiciousOperation('Missing data.') - data = request.POST['data'] + data = signing.loads(request.POST['data']) - package_name, file_path, file_contents, commit_msg = signing.loads(data) - package = Package.objects.filter(name=package_name).first() + if data['type'] != 'editor.edit': + raise SuspiciousOperation('Wrong data type.') + + package = Package.objects.filter(name=data['package_name']).first() hoster = None if package is not None: hoster = get_hoster_for_package(package)