aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/edit
diff options
context:
space:
mode:
authortilly-Q <nattilypigeonfowl@gmail.com>2014-05-12 12:26:07 -0400
committertilly-Q <nattilypigeonfowl@gmail.com>2014-05-12 12:26:07 -0400
commit7bcb3e100c38270342da8a84e63f5350f9c71f05 (patch)
tree0a52d0a0cb95c20f08b48238dd77d19cd64e0a0a /mediagoblin/edit
parentfd7069632b0aa6064e0abe1f3c0c129fb316faa6 (diff)
parent494bce47f92165f322347003baac22731e0ee7aa (diff)
downloadmediagoblin-7bcb3e100c38270342da8a84e63f5350f9c71f05.tar.lz
mediagoblin-7bcb3e100c38270342da8a84e63f5350f9c71f05.tar.xz
mediagoblin-7bcb3e100c38270342da8a84e63f5350f9c71f05.zip
Merge branch 'metadata-editor' into metadata
Diffstat (limited to 'mediagoblin/edit')
-rw-r--r--mediagoblin/edit/forms.py12
-rw-r--r--mediagoblin/edit/views.py52
2 files changed, 63 insertions, 1 deletions
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index 2c9b5e99..7ddf603e 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -122,3 +122,15 @@ class ChangeEmailForm(wtforms.Form):
[wtforms.validators.Required()],
description=_(
"Enter your password to prove you own this account."))
+
+class MetaDataForm(wtforms.Form):
+ identifier = wtforms.TextField(_(u'Identifier'))
+ value = wtforms.TextField(_(u'Value'))
+
+class EditMetaDataForm(wtforms.Form):
+ media_metadata = wtforms.FieldList(
+ wtforms.FormField(MetaDataForm, label="")
+ )
+ context = wtforms.FieldList(
+ wtforms.FormField(MetaDataForm, label="")
+ )
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 80590875..4ab3fe01 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -17,6 +17,7 @@
from datetime import datetime
from itsdangerous import BadSignature
+from pyld import jsonld
from werkzeug.exceptions import Forbidden
from werkzeug.utils import secure_filename
@@ -29,7 +30,8 @@ from mediagoblin.edit import forms
from mediagoblin.edit.lib import may_edit_media
from mediagoblin.decorators import (require_active_login, active_user_from_url,
get_media_entry_by_id, user_may_alter_collection,
- get_user_collection)
+ get_user_collection, user_has_privilege,
+ user_not_banned)
from mediagoblin.tools.crypto import get_timed_signer_url
from mediagoblin.tools.mail import email_debug_message
from mediagoblin.tools.response import (render_to_response,
@@ -432,3 +434,51 @@ def change_email(request):
'mediagoblin/edit/change_email.html',
{'form': form,
'user': user})
+
+@user_has_privilege(u'admin')
+@require_active_login
+@get_media_entry_by_id
+def edit_metadata(request, media):
+ form = forms.EditMetaDataForm(request.form)
+ if request.method == "POST" and form.validate():
+ context = dict([(row['identifier'],row['value'])
+ for row in form.context.data])
+ metadata_dict = dict([(row['identifier'],row['value'])
+ for row in form.media_metadata.data])
+ # TODO VALIDATE THIS BEFORE WE ENTER IT
+ # validate(metadata_dict)
+ # validate(context)
+ json_ld_metadata = jsonld.compact(metadata_dict, context)
+ # media.media_metadata = json_ld_metadata
+ # media.save()
+ return redirect_obj(request, media)
+
+ if media.media_metadata:
+ for row in media.media_metadata.iteritems():
+ if row[0] == "@context": continue
+ identifier = row[0]
+ # TODO Will change when we revert the metadata branch
+ value = row[1]['@value']
+ form.media_metadata.append_entry({
+ 'identifier':identifier,
+ 'value':value})
+ for row in media.media_metadata['@context'].iteritems():
+ identifier, value = row[0:2]
+ form.context.append_entry({
+ 'identifier':identifier,
+ 'value':value})
+ else:
+ form.media_metadata.append_entry({
+ 'identifier':"",
+ 'value':""})
+ form.media_metadata.append_entry({
+ 'identifier':"",
+ 'value':""})
+ form.context.append_entry({
+ 'identifier':"",
+ 'value':""})
+ return render_to_response(
+ request,
+ 'mediagoblin/edit/metadata.html',
+ {'form':form,
+ 'media':media})