First crack at basic license support.

This commit is contained in:
Aaron Williamson 2012-01-17 00:33:55 -05:00
parent 98308e61b6
commit 25b48323a8
6 changed files with 30 additions and 3 deletions

View File

@ -24,6 +24,7 @@ from mediagoblin.db import migrations
from mediagoblin.db.util import ASCENDING, DESCENDING, ObjectId from mediagoblin.db.util import ASCENDING, DESCENDING, ObjectId
from mediagoblin.tools.pagination import Pagination from mediagoblin.tools.pagination import Pagination
from mediagoblin.tools import url, common from mediagoblin.tools import url, common
from mediagoblin.tools import licenses
################### ###################
# Custom validators # Custom validators
@ -158,6 +159,8 @@ class MediaEntry(Document):
"unprocessed": uploaded but needs to go through processing for display "unprocessed": uploaded but needs to go through processing for display
"processed": processed and able to be displayed "processed": processed and able to be displayed
- license: URI for entry's license
- queued_media_file: storage interface style filepath describing a file - queued_media_file: storage interface style filepath describing a file
queued for processing. This is stored in the mg_globals.queue_store queued for processing. This is stored in the mg_globals.queue_store
storage system. storage system.
@ -174,6 +177,7 @@ class MediaEntry(Document):
- fail_error: path to the exception raised - fail_error: path to the exception raised
- fail_metadata: - fail_metadata:
""" """
__collection__ = 'media_entries' __collection__ = 'media_entries'
@ -189,6 +193,7 @@ class MediaEntry(Document):
'plugin_data': dict, # plugins can dump stuff here. 'plugin_data': dict, # plugins can dump stuff here.
'tags': [dict], 'tags': [dict],
'state': unicode, 'state': unicode,
'license': unicode, # License URI
# For now let's assume there can only be one main file queued # For now let's assume there can only be one main file queued
# at a time # at a time
@ -304,6 +309,10 @@ class MediaEntry(Document):
if self['fail_error']: if self['fail_error']:
return common.import_component(self['fail_error']) return common.import_component(self['fail_error'])
def get_license_data(self):
"""Return license dict for requested license"""
return licenses.SUPPORTED_LICENSES[self['license']]
class MediaComment(Document): class MediaComment(Document):
""" """

View File

@ -18,6 +18,7 @@ import wtforms
from mediagoblin.tools.text import tag_length_validator, TOO_LONG_TAG_WARNING from mediagoblin.tools.text import tag_length_validator, TOO_LONG_TAG_WARNING
from mediagoblin.tools.translate import fake_ugettext_passthrough as _ from mediagoblin.tools.translate import fake_ugettext_passthrough as _
from mediagoblin.tools.licenses import licenses_as_choices
class EditForm(wtforms.Form): class EditForm(wtforms.Form):
title = wtforms.TextField( title = wtforms.TextField(
@ -33,7 +34,9 @@ class EditForm(wtforms.Form):
description=_( description=_(
"The title part of this media's URL. " "The title part of this media's URL. "
"You usually don't need to change this.")) "You usually don't need to change this."))
license = wtforms.SelectField(
_('License'),
choices=licenses_as_choices())
class EditProfileForm(wtforms.Form): class EditProfileForm(wtforms.Form):
bio = wtforms.TextAreaField( bio = wtforms.TextAreaField(

View File

@ -34,6 +34,7 @@ from mediagoblin.tools.translate import pass_to_ugettext as _
from mediagoblin.tools.text import ( from mediagoblin.tools.text import (
clean_html, convert_to_tag_list_of_dicts, clean_html, convert_to_tag_list_of_dicts,
media_tags_as_string, cleaned_markdown_conversion) media_tags_as_string, cleaned_markdown_conversion)
from mediagoblin.tools.licenses import SUPPORTED_LICENSES
@get_user_media_entry @get_user_media_entry
@require_active_login @require_active_login
@ -45,7 +46,8 @@ def edit_media(request, media):
title=media['title'], title=media['title'],
slug=media['slug'], slug=media['slug'],
description=media['description'], description=media['description'],
tags=media_tags_as_string(media['tags'])) tags=media_tags_as_string(media['tags']),
license=media['license'])
form = forms.EditForm( form = forms.EditForm(
request.POST, request.POST,
@ -71,6 +73,10 @@ def edit_media(request, media):
media['description_html'] = cleaned_markdown_conversion( media['description_html'] = cleaned_markdown_conversion(
media['description']) media['description'])
media['license'] = (
unicode(request.POST.get('license'))
or '')
media['slug'] = unicode(request.POST['slug']) media['slug'] = unicode(request.POST['slug'])
media.save() media.save()

View File

@ -19,7 +19,7 @@ import wtforms
from mediagoblin.tools.text import tag_length_validator from mediagoblin.tools.text import tag_length_validator
from mediagoblin.tools.translate import fake_ugettext_passthrough as _ from mediagoblin.tools.translate import fake_ugettext_passthrough as _
from mediagoblin.tools.licenses import licenses_as_choices
class SubmitStartForm(wtforms.Form): class SubmitStartForm(wtforms.Form):
file = wtforms.FileField(_('File')) file = wtforms.FileField(_('File'))
@ -31,3 +31,6 @@ class SubmitStartForm(wtforms.Form):
tags = wtforms.TextField( tags = wtforms.TextField(
_('Tags'), _('Tags'),
[tag_length_validator]) [tag_length_validator])
license = wtforms.SelectField(
_('License'),
choices=licenses_as_choices())

View File

@ -61,6 +61,10 @@ def submit_start(request):
entry['description_html'] = cleaned_markdown_conversion( entry['description_html'] = cleaned_markdown_conversion(
entry['description']) entry['description'])
entry['license'] = (
unicode(request.POST.get('license'))
or '')
entry['media_type'] = u'image' # heh entry['media_type'] = u'image' # heh
entry['uploader'] = request.user['_id'] entry['uploader'] = request.user['_id']

View File

@ -171,6 +171,8 @@
{% if media.tags %} {% if media.tags %}
{% include "mediagoblin/utils/tags.html" %} {% include "mediagoblin/utils/tags.html" %}
{% endif %} {% endif %}
{% include "mediagoblin/utils/license.html" %}
</div> </div>
{% else %} {% else %}
<p>{% trans %}Sorry, no such media found.{% endtrans %}<p/> <p>{% trans %}Sorry, no such media found.{% endtrans %}<p/>