diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py index 6cc7a9cb..ce66526f 100644 --- a/mediagoblin/edit/forms.py +++ b/mediagoblin/edit/forms.py @@ -124,12 +124,13 @@ class ChangeEmailForm(wtforms.Form): "Enter your password to prove you own this account.")) class MetaDataForm(wtforms.Form): - identifier = wtforms.TextField( - _(u'Id')) - value = wtforms.TextField( - _(u'Value')) + identifier = wtforms.TextField('') + value = wtforms.TextField('') class EditMetaDataForm(wtforms.Form): media_metadata = wtforms.FieldList( - wtforms.FormField(MetaDataForm) + wtforms.FormField(MetaDataForm, label="") + ) + context = wtforms.FieldList( + wtforms.FormField(MetaDataForm, label="") ) diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py index e20d0ecc..e3dd82ab 100644 --- a/mediagoblin/edit/views.py +++ b/mediagoblin/edit/views.py @@ -439,7 +439,22 @@ def change_email(request): @get_media_entry_by_id def edit_metadata(request, media): form = forms.EditMetaDataForm() + 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}) return render_to_response( request, 'mediagoblin/edit/metadata.html', - {'form':form}) + {'form':form, + 'media':media}) diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css index 32c6c6cb..f0f9e3e6 100644 --- a/mediagoblin/static/css/base.css +++ b/mediagoblin/static/css/base.css @@ -938,3 +938,17 @@ p.verifier { none repeat scroll 0% 0% rgb(221, 221, 221); padding: 1em 0px; } + +/* for the media metadata editing table */ +table.metadata_editor { + + margin: 10px auto; + width: 800px; +} + +table.metadata_editor tr td { + width:350px; +} +table.metadata_editor tr td input.form_field_input { + width: 300px +} diff --git a/mediagoblin/templates/mediagoblin/edit/metadata.html b/mediagoblin/templates/mediagoblin/edit/metadata.html index 3f97555e..cbf74106 100644 --- a/mediagoblin/templates/mediagoblin/edit/metadata.html +++ b/mediagoblin/templates/mediagoblin/edit/metadata.html @@ -17,7 +17,113 @@ #} {%- extends "mediagoblin/base.html" %} {% import "/mediagoblin/utils/wtforms.html" as wtforms_util %} +{% block mediagoblin_head %} + +{% endblock %} {% block mediagoblin_content %} - {{ wtforms_util.render_divs(form) }} +

{% trans media_name=media.title -%} + Metadata for "{{ media_name }}"{% endtrans %}

+
+ +

{% trans %}Context{% endtrans %}

+ + + + + + {% for miniform in form.context -%} + {{ wtforms_util.render_table_row(miniform) }} + {% endfor -%} +
+ {% trans %}Identifier{% endtrans %}{% trans %}Value{% endtrans %}
+ + + + + + +
+ + +

{% trans %}Data{% endtrans %}

+ + + + + + {% for miniform in form.media_metadata -%} + {{ wtforms_util.render_table_row(miniform) }} + {% endfor -%} +
+ {% trans %}Identifier{% endtrans %}{% trans %}Value{% endtrans %}
+ + + + + + + + + + +
+
+ {{ csrf_token }} +
+ {% endblock mediagoblin_content %} diff --git a/mediagoblin/templates/mediagoblin/utils/metadata_table.html b/mediagoblin/templates/mediagoblin/utils/metadata_table.html index 2eb57af3..0c67264a 100644 --- a/mediagoblin/templates/mediagoblin/utils/metadata_table.html +++ b/mediagoblin/templates/mediagoblin/utils/metadata_table.html @@ -33,4 +33,10 @@ {%- endfor %} {% endif %} + {% if request.user and request.user.has_privilege('admin') %} + + {% trans %}Edit Metadata{% endtrans %} + {% endif %} {%- endmacro %} diff --git a/mediagoblin/templates/mediagoblin/utils/wtforms.html b/mediagoblin/templates/mediagoblin/utils/wtforms.html index e079274e..e861b674 100644 --- a/mediagoblin/templates/mediagoblin/utils/wtforms.html +++ b/mediagoblin/templates/mediagoblin/utils/wtforms.html @@ -87,6 +87,24 @@ {% endfor %} {%- endmacro %} +{% macro render_table_row(form) %} + + {%- for field in form %} + + {{field}} + {%- if field.errors -%} +
+ + {%- endif -%} + + {%- endfor %} + +{%- endmacro %} + {# Render a boolean field #} {% macro render_bool(field) %}