aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/edit
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/edit')
-rw-r--r--mediagoblin/edit/forms.py23
-rw-r--r--mediagoblin/edit/lib.py2
-rw-r--r--mediagoblin/edit/views.py20
3 files changed, 33 insertions, 12 deletions
diff --git a/mediagoblin/edit/forms.py b/mediagoblin/edit/forms.py
index cf5056cf..83e83c3c 100644
--- a/mediagoblin/edit/forms.py
+++ b/mediagoblin/edit/forms.py
@@ -24,6 +24,18 @@ from mediagoblin.tools.metadata import DEFAULT_SCHEMA, DEFAULT_CHECKER
from mediagoblin.auth.tools import normalize_user_or_email_field
+class WebsiteField(wtforms.StringField):
+ """A field that expects a website URL but adds http:// if not provided."""
+ def process_formdata(self, valuelist):
+ if valuelist:
+ data = valuelist[0]
+ if not data.startswith((u'http://', u'https://')):
+ data = u'http://' + data
+ self.data = data
+ else:
+ super(WebsiteField, self).process_formdata(valuelist)
+
+
class EditForm(wtforms.Form):
title = wtforms.StringField(
_('Title'),
@@ -49,6 +61,7 @@ class EditForm(wtforms.Form):
[wtforms.validators.Optional(),],
choices=licenses_as_choices())
+
class EditProfileForm(wtforms.Form):
bio = wtforms.TextAreaField(
_('Bio'),
@@ -56,13 +69,16 @@ class EditProfileForm(wtforms.Form):
description=_("""You can use
<a href="http://daringfireball.net/projects/markdown/basics">
Markdown</a> for formatting."""))
- url = wtforms.StringField(
+ url = WebsiteField(
_('Website'),
[wtforms.validators.Optional(),
- wtforms.validators.URL(message=_("This address contains errors"))])
+ wtforms.validators.URL(message=_("This address contains errors"))],
+ description=_("www.example.com, http://www.example.com or "
+ "https://www.example.com"))
location = wtforms.StringField(_('Hometown'))
+
class EditAccountForm(wtforms.Form):
wants_comment_notification = wtforms.BooleanField(
description=_("Email me when others comment on my media"))
@@ -126,6 +142,7 @@ class ChangeEmailForm(wtforms.Form):
description=_(
"Enter your password to prove you own this account."))
+
class MetaDataValidator(object):
"""
Custom validator which runs form data in a MetaDataForm through a jsonschema
@@ -152,10 +169,12 @@ class MetaDataValidator(object):
raise wtforms.validators.ValidationError(
errors.pop())
+
class MetaDataForm(wtforms.Form):
identifier = wtforms.StringField(_(u'Identifier'),[MetaDataValidator()])
value = wtforms.StringField(_(u'Value'))
+
class EditMetaDataForm(wtforms.Form):
media_metadata = wtforms.FieldList(
wtforms.FormField(MetaDataForm, ""),
diff --git a/mediagoblin/edit/lib.py b/mediagoblin/edit/lib.py
index 6acebc96..3f52376a 100644
--- a/mediagoblin/edit/lib.py
+++ b/mediagoblin/edit/lib.py
@@ -17,7 +17,7 @@
def may_edit_media(request, media):
"""Check, if the request's user may edit the media details"""
- if media.uploader == request.user.id:
+ if media.actor == request.user.id:
return True
if request.user.has_privilege(u'admin'):
return True
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 8cee1cc0..45cc0fb9 100644
--- a/mediagoblin/edit/views.py
+++ b/mediagoblin/edit/views.py
@@ -47,7 +47,7 @@ from mediagoblin.tools.text import (
convert_to_tag_list_of_dicts, media_tags_as_string)
from mediagoblin.tools.url import slugify
from mediagoblin.db.util import check_media_slug_used, check_collection_slug_used
-from mediagoblin.db.models import User, Client, AccessToken, Location
+from mediagoblin.db.models import User, LocalUser, Client, AccessToken, Location
import mimetypes
@@ -73,7 +73,7 @@ def edit_media(request, media):
# Make sure there isn't already a MediaEntry with such a slug
# and userid.
slug = slugify(form.slug.data)
- slug_used = check_media_slug_used(media.uploader, slug, media.id)
+ slug_used = check_media_slug_used(media.actor, slug, media.id)
if slug_used:
form.slug.errors.append(
@@ -293,7 +293,7 @@ def deauthorize_applications(request):
_("Application has been deauthorized")
)
- access_tokens = AccessToken.query.filter_by(user=request.user.id)
+ access_tokens = AccessToken.query.filter_by(actor=request.user.id)
applications = [(a.get_requesttoken, a) for a in access_tokens]
return render_to_response(
@@ -314,7 +314,8 @@ def delete_account(request):
request.session.delete()
# Delete user account and all related media files etc....
- request.user.delete()
+ user = User.query.filter(User.id==user.id).first()
+ user.delete()
# We should send a message that the user has been deleted
# successfully. But we just deleted the session, so we
@@ -349,12 +350,12 @@ def edit_collection(request, collection):
if request.method == 'POST' and form.validate():
# Make sure there isn't already a Collection with such a slug
# and userid.
- slug_used = check_collection_slug_used(collection.creator,
+ slug_used = check_collection_slug_used(collection.actor,
form.slug.data, collection.id)
# Make sure there isn't already a Collection with this title
existing_collection = request.db.Collection.query.filter_by(
- creator=request.user.id,
+ actor=request.user.id,
title=form.title.data).first()
if existing_collection and existing_collection.id != collection.id:
@@ -375,7 +376,7 @@ def edit_collection(request, collection):
return redirect_obj(request, collection)
if request.user.has_privilege(u'admin') \
- and collection.creator != request.user.id \
+ and collection.actor != request.user.id \
and request.method != 'POST':
messages.add_message(
request, messages.WARNING,
@@ -444,8 +445,9 @@ def change_email(request):
if request.method == 'POST' and form.validate():
new_email = form.new_email.data
- users_with_email = User.query.filter_by(
- email=new_email).count()
+ users_with_email = User.query.filter(
+ LocalUser.email==new_email
+ ).count()
if users_with_email:
form.new_email.errors.append(