signed edit data is now a dictionary

This commit is contained in:
Laura Klünder 2016-10-04 13:07:07 +02:00
parent 9d08d92844
commit 817056f235
2 changed files with 60 additions and 19 deletions

View file

@ -61,10 +61,23 @@
<h3>Your Edit</h3>
<p><strong>Map Package:</strong> {{ package_name }}</p>
{% if file_contents %}
<p><strong>New content for file:</strong> <code>{{ file_path }}</code></p>
<pre>{{ file_contents }}</pre>
{% else %}
<p><strong>Delete file:</strong> <code>{{ file_path }}</code></p>
<p>
<strong>
{% if action == 'create' %}
Create file:
{% elif action == 'edit' %}
Edit file:
{% elif action == 'delete' %}
Delete file:
{% endif %}
</strong>
<code>{{ file_path }}</code>
</p>
<p><strong>Parent commit id:</strong> <code>{{ commit_id }}</code></p>
{% if action != 'delete' %}
<p>
<strong>New file contents:</strong>
<pre>{{ file_contents }}</pre>
</p>
{% endif %}
{% endblock %}

View file

@ -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)