First crack at basic license support.
This commit is contained in:
parent
98308e61b6
commit
25b48323a8
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -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(
|
||||||
|
@ -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()
|
||||||
|
|
||||||
|
@ -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())
|
||||||
|
@ -60,6 +60,10 @@ def submit_start(request):
|
|||||||
entry['description'] = unicode(request.POST.get('description'))
|
entry['description'] = unicode(request.POST.get('description'))
|
||||||
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']
|
||||||
|
@ -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/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user