-# GNU MediaGoblin -- federated, autonomous media hosting
+
# Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
import six
from datetime import datetime
-import os
from itsdangerous import BadSignature
from pyld import jsonld
from mediagoblin.decorators import (require_active_login, active_user_from_url,
get_media_entry_by_id, user_may_alter_collection,
get_user_collection, user_has_privilege,
- user_not_banned, path_subtitle)
+ user_not_banned, user_may_delete_media)
from mediagoblin.tools.crypto import get_timed_signer_url
from mediagoblin.tools.metadata import (compact_and_validate, DEFAULT_CHECKER,
DEFAULT_SCHEMA)
@get_media_entry_by_id
@require_active_login
def edit_media(request, media):
+ # If media is not processed, return NotFound.
+ if not media.state == u'processed':
+ return render_404(request)
+
if not may_edit_media(request, media):
raise Forbidden("User may not edit this media")
license=media.license)
form = forms.EditForm(
- request.form,
+ request.method=='POST' and request.form or None,
**defaults)
if request.method == 'POST' and form.validate():
@get_media_entry_by_id
@require_active_login
def edit_attachments(request, media):
+ # If media is not processed, return NotFound.
+ if not media.state == u'processed':
+ return render_404(request)
+
if mg_globals.app_config['allow_attachments']:
form = forms.EditAttachmentsForm()
else:
raise Forbidden("Attachments are disabled")
-@get_media_entry_by_id
-@require_active_login
-def edit_subtitles(request, media):
- if mg_globals.app_config['allow_subtitles']:
- form = forms.EditSubtitlesForm(request.form)
-
- # Add any subtitles
- if 'subtitle_file' in request.files \
- and request.files['subtitle_file']:
- if mimetypes.guess_type(
- request.files['subtitle_file'].filename)[0] in \
- UNSAFE_MIMETYPES:
- public_filename = secure_filename('{0}.notsafe'.format(
- request.files['subtitle_file'].filename))
- else:
- public_filename = secure_filename(
- request.files['subtitle_file'].filename)
-
- subtitle_public_filepath \
- = mg_globals.public_store.get_unique_filepath(
- ['media_entries', six.text_type(media.id), 'subtitle',
- public_filename])
-
- subtitle_public_file = mg_globals.public_store.get_file(
- subtitle_public_filepath, 'wb')
-
- try:
- subtitle_public_file.write(
- request.files['subtitle_file'].stream.read())
- finally:
- request.files['subtitle_file'].stream.close()
-
- media.subtitle_files.append(dict(
- name=form.subtitle_language.data \
- or request.files['subtitle_file'].filename,
- filepath=subtitle_public_filepath,
- created=datetime.utcnow(),
- ))
-
- media.save()
-
- messages.add_message(
- request,
- messages.SUCCESS,
- _("You added the subttile %s!") %
- (form.subtitle_language.data or
- request.files['subtitle_file'].filename))
-
- return redirect(request,
- location=media.url_for_self(request.urlgen))
- return render_to_response(
- request,
- 'mediagoblin/edit/subtitles.html',
- {'media': media,
- 'form': form})
- else:
- raise Forbidden("Subtitles are disabled")
-
@require_active_login
def legacy_edit_profile(request):
"""redirect the old /edit/profile/?username=USER to /u/USER/edit/"""
else:
location = user.get_location.name
- form = forms.EditProfileForm(request.form,
+ form = forms.EditProfileForm(
+ request.method == 'POST' and request.form or None,
url=user.url,
bio=user.bio,
location=location)
location = user.get_location
location.name = six.text_type(form.location.data)
location.save()
+ else:
+ user.location = None
user.save()
@require_active_login
def edit_account(request):
user = request.user
- form = forms.EditAccountForm(request.form,
+ form = forms.EditAccountForm(
+ request.method == 'POST' and request.form or None,
wants_comment_notification=user.wants_comment_notification,
license_preference=user.license_preference,
wants_notifications=user.wants_notifications)
description=collection.description)
form = forms.EditCollectionForm(
- request.form,
+ request.method == 'POST' and request.form or None,
**defaults)
if request.method == 'POST' and form.validate():
user=user.username)
+@require_active_login
def change_email(request):
""" View to change the user's email """
- form = forms.ChangeEmailForm(request.form)
+ form = forms.ChangeEmailForm(
+ request.method == 'POST' and request.form or None)
user = request.user
# If no password authentication, no need to enter a password
@require_active_login
@get_media_entry_by_id
def edit_metadata(request, media):
- form = forms.EditMetaDataForm(request.form)
+ # If media is not processed, return NotFound.
+ if not media.state == u'processed':
+ return render_404(request)
+
+ form = forms.EditMetaDataForm(
+ request.method == 'POST' and request.form or None)
if request.method == "POST" and form.validate():
metadata_dict = dict([(row['identifier'],row['value'])
for row in form.media_metadata.data])
request,
'mediagoblin/edit/metadata.html',
{'form':form,
- 'media':media})
-
-
-@require_active_login
-@path_subtitle
-def custom_subtitles(request,path=None):
- path = path.encode('ascii','ignore')[1:-1]
- return render_to_response(
- request,
- "mediagoblin/user_pages/custom_subtitles.html",
- {"path": path}
- )
\ No newline at end of file
+ 'media':media})
\ No newline at end of file