aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJessica Tallon <tsyesika@tsyesika.se>2015-07-17 17:51:51 +0200
committerJessica Tallon <tsyesika@tsyesika.se>2015-07-31 15:15:24 +0200
commitd88fcb03e2e520da6a7d0203d660e4536108f56b (patch)
tree75b751fae15a037301bb384e64eba13746cb57a6
parent283e6d8b9f09341e3b97418b79f389bfdfee6498 (diff)
downloadmediagoblin-d88fcb03e2e520da6a7d0203d660e4536108f56b.tar.lz
mediagoblin-d88fcb03e2e520da6a7d0203d660e4536108f56b.tar.xz
mediagoblin-d88fcb03e2e520da6a7d0203d660e4536108f56b.zip
Change codebase to query or create correct User model
The code base had many references to User.username and other specific to LocalUser attributes as that was the way it use to exist. This updates those to query on the generic User model but filtering by attributes on the LocalUser.
-rw-r--r--mediagoblin/api/decorators.py1
-rw-r--r--mediagoblin/api/views.py12
-rw-r--r--mediagoblin/auth/tools.py8
-rw-r--r--mediagoblin/db/migrations.py1
-rw-r--r--mediagoblin/decorators.py16
-rw-r--r--mediagoblin/edit/views.py7
-rw-r--r--mediagoblin/gmg_commands/addmedia.py5
-rw-r--r--mediagoblin/gmg_commands/batchaddmedia.py5
-rw-r--r--mediagoblin/gmg_commands/users.py21
-rw-r--r--mediagoblin/media_types/blog/views.py10
-rw-r--r--mediagoblin/moderation/tools.py8
-rw-r--r--mediagoblin/moderation/views.py8
-rw-r--r--mediagoblin/plugins/archivalook/tools.py10
-rw-r--r--mediagoblin/plugins/basic_auth/__init__.py8
-rw-r--r--mediagoblin/plugins/basic_auth/views.py8
-rw-r--r--mediagoblin/plugins/ldap/views.py7
-rw-r--r--mediagoblin/plugins/openid/__init__.py6
-rw-r--r--mediagoblin/plugins/persona/__init__.py6
-rw-r--r--mediagoblin/tests/__init__.py4
-rw-r--r--mediagoblin/tests/test_auth.py17
-rw-r--r--mediagoblin/tests/test_basic_auth.py6
-rw-r--r--mediagoblin/tests/test_edit.py23
-rw-r--r--mediagoblin/tests/test_ldap.py6
-rw-r--r--mediagoblin/tests/test_modelmethods.py8
-rw-r--r--mediagoblin/tests/test_moderation.py8
-rw-r--r--mediagoblin/tests/test_openid.py7
-rw-r--r--mediagoblin/tests/test_persona.py12
-rw-r--r--mediagoblin/tests/test_privileges.py8
-rw-r--r--mediagoblin/tests/test_reporting.py6
-rw-r--r--mediagoblin/tests/test_submission.py4
-rw-r--r--mediagoblin/tests/tools.py8
-rw-r--r--mediagoblin/tools/federation.py1
-rw-r--r--mediagoblin/user_pages/views.py16
33 files changed, 156 insertions, 125 deletions
diff --git a/mediagoblin/api/decorators.py b/mediagoblin/api/decorators.py
index 3dd6264e..b86099bd 100644
--- a/mediagoblin/api/decorators.py
+++ b/mediagoblin/api/decorators.py
@@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from functools import wraps
-from mediagoblin.db.models import User
from mediagoblin.decorators import require_active_login
from mediagoblin.tools.response import json_response
diff --git a/mediagoblin/api/views.py b/mediagoblin/api/views.py
index 6095a721..35f8405c 100644
--- a/mediagoblin/api/views.py
+++ b/mediagoblin/api/views.py
@@ -22,7 +22,7 @@ from werkzeug.datastructures import FileStorage
from mediagoblin.decorators import oauth_required, require_active_login
from mediagoblin.api.decorators import user_has_privilege
-from mediagoblin.db.models import User, MediaEntry, MediaComment, Activity
+from mediagoblin.db.models import User, LocalUser, MediaEntry, MediaComment, Activity
from mediagoblin.tools.federation import create_activity, create_generator
from mediagoblin.tools.routing import extract_url_arguments
from mediagoblin.tools.response import redirect, json_response, json_error, \
@@ -45,7 +45,7 @@ def get_profile(request):
can be found then this function returns a (None, None).
"""
username = request.matchdict["username"]
- user = User.query.filter_by(username=username).first()
+ user = User.query.filter(LocalUser.username==username).first()
if user is None:
return None, None
@@ -94,7 +94,7 @@ def user_endpoint(request):
def uploads_endpoint(request):
""" Endpoint for file uploads """
username = request.matchdict["username"]
- requested_user = User.query.filter_by(username=username).first()
+ requested_user = User.query.filter(LocalUser.username==username).first()
if requested_user is None:
return json_error("No such 'user' with id '{0}'".format(username), 404)
@@ -142,7 +142,7 @@ def inbox_endpoint(request, inbox=None):
inbox: allows you to pass a query in to limit inbox scope
"""
username = request.matchdict["username"]
- user = User.query.filter_by(username=username).first()
+ user = User.query.filter(LocalUser.username==username).first()
if user is None:
return json_error("No such 'user' with id '{0}'".format(username), 404)
@@ -225,7 +225,7 @@ def inbox_major_endpoint(request):
def feed_endpoint(request, outbox=None):
""" Handles the user's outbox - /api/user/<username>/feed """
username = request.matchdict["username"]
- requested_user = User.query.filter_by(username=username).first()
+ requested_user = User.query.filter(LocalUser.username==username).first()
# check if the user exists
if requested_user is None:
@@ -747,7 +747,7 @@ def lrdd_lookup(request):
username, host = resource.split("@", 1)
# Now lookup the user
- user = User.query.filter_by(username=username).first()
+ user = User.query.filter(LocalUser.username==username).first()
if user is None:
return json_error(
diff --git a/mediagoblin/auth/tools.py b/mediagoblin/auth/tools.py
index 3737fab6..5a47dae4 100644
--- a/mediagoblin/auth/tools.py
+++ b/mediagoblin/auth/tools.py
@@ -23,7 +23,7 @@ from sqlalchemy import or_
from mediagoblin import mg_globals
from mediagoblin.tools.crypto import get_timed_signer_url
-from mediagoblin.db.models import User, Privilege
+from mediagoblin.db.models import LocalUser, Privilege
from mediagoblin.tools.mail import (normalize_email, send_email,
email_debug_message)
from mediagoblin.tools.template import render_template
@@ -106,9 +106,9 @@ def send_verification_email(user, request, email=None,
def basic_extra_validation(register_form, *args):
- users_with_username = User.query.filter_by(
+ users_with_username = LocalUser.query.filter_by(
username=register_form.username.data).count()
- users_with_email = User.query.filter_by(
+ users_with_email = LocalUser.query.filter_by(
email=register_form.email.data).count()
extra_validation_passes = True
@@ -190,7 +190,7 @@ def no_auth_logout(request):
def create_basic_user(form):
- user = User()
+ user = LocalUser()
user.username = form.username.data
user.email = form.email.data
user.save()
diff --git a/mediagoblin/db/migrations.py b/mediagoblin/db/migrations.py
index 6b25aebf..b6c172e0 100644
--- a/mediagoblin/db/migrations.py
+++ b/mediagoblin/db/migrations.py
@@ -1305,6 +1305,7 @@ def migrate_data_foreign_keys(db):
use the old ActivityIntermediator to the new temparay fields which use the
new GenericForeignKey.
"""
+
metadata = MetaData(bind=db.bind)
activity_table = inspect_table(metadata, "core__activities")
ai_table = inspect_table(metadata, "core__activity_intermediators")
diff --git a/mediagoblin/decorators.py b/mediagoblin/decorators.py
index b5ec0ce8..bda18988 100644
--- a/mediagoblin/decorators.py
+++ b/mediagoblin/decorators.py
@@ -23,7 +23,7 @@ from six.moves.urllib.parse import urljoin
from mediagoblin import mg_globals as mgg
from mediagoblin import messages
-from mediagoblin.db.models import MediaEntry, User, MediaComment, AccessToken
+from mediagoblin.db.models import MediaEntry, LocalUser, MediaComment, AccessToken
from mediagoblin.tools.response import (
redirect, render_404,
render_user_banned, json_response)
@@ -106,12 +106,12 @@ def user_has_privilege(privilege_name, allow_admin=True):
def active_user_from_url(controller):
- """Retrieve User() from <user> URL pattern and pass in as url_user=...
+ """Retrieve LocalUser() from <user> URL pattern and pass in as url_user=...
Returns a 404 if no such active user has been found"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if user is None:
return render_404(request)
@@ -142,7 +142,7 @@ def user_may_alter_collection(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- creator_id = request.db.User.query.filter_by(
+ creator_id = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first().id
if not (request.user.has_privilege(u'admin') or
request.user.id == creator_id):
@@ -177,7 +177,7 @@ def get_user_media_entry(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if not user:
raise NotFound()
@@ -217,7 +217,7 @@ def get_user_collection(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = request.db.User.query.filter_by(
+ user = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first()
if not user:
@@ -242,7 +242,7 @@ def get_user_collection_item(controller):
"""
@wraps(controller)
def wrapper(request, *args, **kwargs):
- user = request.db.User.query.filter_by(
+ user = request.db.LocalUser.query.filter_by(
username=request.matchdict['user']).first()
if not user:
@@ -422,7 +422,7 @@ def oauth_required(controller):
request.access_token = AccessToken.query.filter_by(token=token).first()
if request.access_token is not None and request.user is None:
user_id = request.access_token.user
- request.user = User.query.filter_by(id=user_id).first()
+ request.user = LocalUser.query.filter_by(id=user_id).first()
return controller(request, *args, **kwargs)
diff --git a/mediagoblin/edit/views.py b/mediagoblin/edit/views.py
index 8cee1cc0..224b93de 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
@@ -444,8 +444,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(
diff --git a/mediagoblin/gmg_commands/addmedia.py b/mediagoblin/gmg_commands/addmedia.py
index 2aa8f96a..2c376b76 100644
--- a/mediagoblin/gmg_commands/addmedia.py
+++ b/mediagoblin/gmg_commands/addmedia.py
@@ -20,6 +20,7 @@ import os
import six
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin.submit.lib import (
submit_media, get_upload_file_limits,
@@ -70,7 +71,9 @@ def addmedia(args):
app = commands_util.setup_app(args)
# get the user
- user = app.db.User.query.filter_by(username=args.username.lower()).first()
+ user = app.db.User.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user is None:
print("Sorry, no user by username '%s'" % args.username)
return
diff --git a/mediagoblin/gmg_commands/batchaddmedia.py b/mediagoblin/gmg_commands/batchaddmedia.py
index 5a47d698..8012d5e9 100644
--- a/mediagoblin/gmg_commands/batchaddmedia.py
+++ b/mediagoblin/gmg_commands/batchaddmedia.py
@@ -25,6 +25,7 @@ import six
from six.moves.urllib.parse import urlparse
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin.submit.lib import (
submit_media, get_upload_file_limits,
@@ -64,7 +65,9 @@ def batchaddmedia(args):
files_uploaded, files_attempted = 0, 0
# get the user
- user = app.db.User.query.filter_by(username=args.username.lower()).first()
+ user = app.db.User.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user is None:
print(_(u"Sorry, no user by username '{username}' exists".format(
username=args.username)))
diff --git a/mediagoblin/gmg_commands/users.py b/mediagoblin/gmg_commands/users.py
index 33abc891..0916308d 100644
--- a/mediagoblin/gmg_commands/users.py
+++ b/mediagoblin/gmg_commands/users.py
@@ -20,6 +20,7 @@ import sys
import six
+from mediagoblin.db.models import LocalUser
from mediagoblin.gmg_commands import util as commands_util
from mediagoblin import auth
from mediagoblin import mg_globals
@@ -46,8 +47,8 @@ def adduser(args):
db = mg_globals.database
users_with_username = \
- db.User.query.filter_by(
- username=args.username.lower()
+ db.User.query.filter(
+ LocalUser.username==args.username.lower()
).count()
if users_with_username:
@@ -56,7 +57,7 @@ def adduser(args):
else:
# Create the user
- entry = db.User()
+ entry = db.LocalUser()
entry.username = six.text_type(args.username.lower())
entry.email = six.text_type(args.email)
entry.pw_hash = auth.gen_password_hash(args.password)
@@ -87,8 +88,9 @@ def makeadmin(args):
db = mg_globals.database
- user = db.User.query.filter_by(
- username=six.text_type(args.username.lower())).one()
+ user = db.User.query.filter(
+ LocalUser.username==six.text_type(args.username.lower())
+ ).one()
if user:
user.all_privileges.append(
db.Privilege.query.filter(
@@ -115,8 +117,9 @@ def changepw(args):
db = mg_globals.database
- user = db.User.query.filter_by(
- username=six.text_type(args.username.lower())).one()
+ user = db.User.query.filter(
+ LocalUser.username==six.text_type(args.username.lower())
+ ).one()
if user:
user.pw_hash = auth.gen_password_hash(args.password)
user.save()
@@ -138,7 +141,9 @@ def deleteuser(args):
db = mg_globals.database
- user = db.User.query.filter_by(username=args.username.lower()).first()
+ user = db.User.query.filter(
+ LocalUser.username==args.username.lower()
+ ).first()
if user:
user.delete()
print('The user %s has been deleted' % args.username)
diff --git a/mediagoblin/media_types/blog/views.py b/mediagoblin/media_types/blog/views.py
index 0b88037f..8feb6a15 100644
--- a/mediagoblin/media_types/blog/views.py
+++ b/mediagoblin/media_types/blog/views.py
@@ -46,7 +46,7 @@ from mediagoblin.tools.text import (
cleaned_markdown_conversion)
from mediagoblin.db.util import check_media_slug_used, check_collection_slug_used
-from mediagoblin.db.models import User, Collection, MediaEntry
+from mediagoblin.db.models import User, Collection, MediaEntry, LocalUser
from mediagoblin.notifications import add_comment_subscription
@@ -306,7 +306,9 @@ def blog_delete(request, **kwargs):
Deletes a blog and media entries, tags associated with it.
"""
url_user = request.matchdict.get('user')
- owner_user = request.db.User.query.filter_by(username=url_user).first()
+ owner_user = request.db.User.query.filter(
+ LocalUser.username==url_user
+ ).first()
blog_slug = request.matchdict.get('blog_slug', None)
blog = get_blog_by_slug(request, blog_slug, author=owner_user.id)
@@ -355,7 +357,9 @@ def blog_about_view(request):
blog_slug = request.matchdict.get('blog_slug', None)
url_user = request.matchdict.get('user', None)
- user = request.db.User.query.filter_by(username=url_user).first()
+ user = request.db.User.query.filter(
+ LocalUser.username=url_user
+ ).first()
blog = get_blog_by_slug(request, blog_slug, author=user.id)
if not user or not blog:
diff --git a/mediagoblin/moderation/tools.py b/mediagoblin/moderation/tools.py
index 0bcd8762..56ef9449 100644
--- a/mediagoblin/moderation/tools.py
+++ b/mediagoblin/moderation/tools.py
@@ -17,7 +17,7 @@
import six
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, Privilege, UserBan
+from mediagoblin.db.models import User, Privilege, UserBan, LocalUser
from mediagoblin.db.base import Session
from mediagoblin.tools.mail import send_email
from mediagoblin.tools.response import redirect
@@ -123,7 +123,8 @@ def take_away_privileges(user,*privileges):
privilege = Privilege.query.filter(
Privilege.privilege_name==privileges[0]).first()
user = User.query.filter(
- User.username==user).first()
+ LocalUser.username==user
+ ).first()
if privilege in user.all_privileges:
user.all_privileges.remove(privilege)
return True
@@ -155,7 +156,8 @@ def give_privileges(user,*privileges):
privilege = Privilege.query.filter(
Privilege.privilege_name==privileges[0]).first()
user = User.query.filter(
- User.username==user).first()
+ LoclUser.username==user
+ ).first()
if privilege not in user.all_privileges:
user.all_privileges.append(privilege)
return True
diff --git a/mediagoblin/moderation/views.py b/mediagoblin/moderation/views.py
index f4de11ad..b99f4660 100644
--- a/mediagoblin/moderation/views.py
+++ b/mediagoblin/moderation/views.py
@@ -15,8 +15,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from mediagoblin.db.models import (MediaEntry, User,ReportBase, Privilege,
- UserBan)
+from mediagoblin.db.models import (MediaEntry, User, ReportBase, Privilege,
+ UserBan, LocalUser)
from mediagoblin.decorators import (require_admin_or_moderator_login,
active_user_from_url, user_has_privilege,
allow_reporting)
@@ -79,7 +79,9 @@ def moderation_users_detail(request):
'''
Shows details about a particular user.
'''
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = User.query.filter(
+ LocalUser.username==request.matchdict['user']
+ ).first()
active_reports = user.reports_filed_on.filter(
ReportBase.resolved==None).limit(5)
closed_reports = user.reports_filed_on.filter(
diff --git a/mediagoblin/plugins/archivalook/tools.py b/mediagoblin/plugins/archivalook/tools.py
index b495624c..12142212 100644
--- a/mediagoblin/plugins/archivalook/tools.py
+++ b/mediagoblin/plugins/archivalook/tools.py
@@ -16,7 +16,7 @@
import six
-from mediagoblin.db.models import MediaEntry, User
+from mediagoblin.db.models import MediaEntry, User, LocalUser
from mediagoblin.plugins.archivalook.models import FeaturedMedia
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
from mediagoblin.plugins.archivalook.models import FeaturedMedia
@@ -36,10 +36,11 @@ def get_media_entry_from_uploader_slug(uploader_username, slug):
matches the specifications.
"""
uploader = User.query.filter(
- User.username == uploader_username).first()
+ LocalUser.username==uploader_username
+ ).first()
media = MediaEntry.query.filter(
- MediaEntry.get_uploader == uploader ).filter(
- MediaEntry.slug == slug).first()
+ MediaEntry.get_uploader == uploader ).filter(
+ MediaEntry.slug == slug).first()
return media
@@ -292,4 +293,3 @@ def demote_feature(media_entry):
elif target_feature.display_type == u'primary':
target_feature.display_type = u'secondary'
target_feature.save()
-
diff --git a/mediagoblin/plugins/basic_auth/__init__.py b/mediagoblin/plugins/basic_auth/__init__.py
index 64564c7f..31a4fd95 100644
--- a/mediagoblin/plugins/basic_auth/__init__.py
+++ b/mediagoblin/plugins/basic_auth/__init__.py
@@ -19,7 +19,7 @@ import os
from mediagoblin.plugins.basic_auth import forms as auth_forms
from mediagoblin.plugins.basic_auth import tools as auth_tools
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import LocalUser
from mediagoblin.tools import pluginapi
from sqlalchemy import or_
from mediagoblin.tools.staticdirect import PluginStatic
@@ -56,10 +56,10 @@ def setup_plugin():
def get_user(**kwargs):
username = kwargs.pop('username', None)
if username:
- user = User.query.filter(
+ user = LocalUser.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
return user
diff --git a/mediagoblin/plugins/basic_auth/views.py b/mediagoblin/plugins/basic_auth/views.py
index 02d370f0..95f91b4c 100644
--- a/mediagoblin/plugins/basic_auth/views.py
+++ b/mediagoblin/plugins/basic_auth/views.py
@@ -16,7 +16,7 @@
from itsdangerous import BadSignature
from mediagoblin import messages
-from mediagoblin.db.models import User
+from mediagoblin.db.models import LocalUser
from mediagoblin.decorators import require_active_login
from mediagoblin.plugins.basic_auth import forms, tools
from mediagoblin.tools.crypto import get_timed_signer_url
@@ -48,7 +48,7 @@ def forgot_password(request):
found_by_email = '@' in fp_form.username.data
if found_by_email:
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
email=fp_form.username.data).first()
# Don't reveal success in case the lookup happened by email address.
success_message = _("If that email address (case sensitive!) is "
@@ -56,7 +56,7 @@ def forgot_password(request):
"instructions on how to change your password.")
else: # found by username
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username=fp_form.username.data).first()
if user is None:
@@ -114,7 +114,7 @@ def verify_forgot_password(request):
'index')
# check if it's a valid user id
- user = User.query.filter_by(id=int(token)).first()
+ user = LocalUser.query.filter_by(id=int(token)).first()
# no user in db
if not user:
diff --git a/mediagoblin/plugins/ldap/views.py b/mediagoblin/plugins/ldap/views.py
index be434daf..71904d1f 100644
--- a/mediagoblin/plugins/ldap/views.py
+++ b/mediagoblin/plugins/ldap/views.py
@@ -18,7 +18,7 @@ import six
from mediagoblin import mg_globals, messages
from mediagoblin.auth.tools import register_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.decorators import allow_registration, auth_enabled
from mediagoblin.plugins.ldap import forms
from mediagoblin.plugins.ldap.tools import LDAP
@@ -38,8 +38,9 @@ def login(request):
login_form.password.data)
if username:
- user = User.query.filter_by(
- username=username).first()
+ user = User.query.filter(
+ LocalUser.username==username
+ ).first()
if user:
# set up login in session
diff --git a/mediagoblin/plugins/openid/__init__.py b/mediagoblin/plugins/openid/__init__.py
index ca17a7e8..b26087a2 100644
--- a/mediagoblin/plugins/openid/__init__.py
+++ b/mediagoblin/plugins/openid/__init__.py
@@ -19,7 +19,7 @@ import uuid
from sqlalchemy import or_
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.openid.models import OpenIDUserURL
from mediagoblin.tools import pluginapi
from mediagoblin.tools.translate import lazy_pass_to_ugettext as _
@@ -67,8 +67,8 @@ def create_user(register_form):
username = register_form.username.data
user = User.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
if not user:
diff --git a/mediagoblin/plugins/persona/__init__.py b/mediagoblin/plugins/persona/__init__.py
index 700c18e2..8fab726a 100644
--- a/mediagoblin/plugins/persona/__init__.py
+++ b/mediagoblin/plugins/persona/__init__.py
@@ -19,7 +19,7 @@ import os
from sqlalchemy import or_
from mediagoblin.auth.tools import create_basic_user
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.persona.models import PersonaUserEmails
from mediagoblin.tools import pluginapi
from mediagoblin.tools.staticdirect import PluginStatic
@@ -60,8 +60,8 @@ def create_user(register_form):
username = register_form.username.data
user = User.query.filter(
or_(
- User.username == username,
- User.email == username,
+ LocalUser.username == username,
+ LocalUser.email == username,
)).first()
if not user:
diff --git a/mediagoblin/tests/__init__.py b/mediagoblin/tests/__init__.py
index fbf3fc6c..ed0653fb 100644
--- a/mediagoblin/tests/__init__.py
+++ b/mediagoblin/tests/__init__.py
@@ -16,7 +16,7 @@
import pytest
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template
@@ -44,7 +44,7 @@ class MGClientTestCase:
fixture_add_user(username, **options)
def user(self, username):
- return User.query.filter(User.username == username).first()
+ return User.query.filter(LocalUser.username==username).first()
def _do_request(self, url, *context_keys, **kwargs):
template.clear_test_template_context()
diff --git a/mediagoblin/tests/test_auth.py b/mediagoblin/tests/test_auth.py
index 5ce67688..b731ce52 100644
--- a/mediagoblin/tests/test_auth.py
+++ b/mediagoblin/tests/test_auth.py
@@ -23,7 +23,7 @@ import six
import six.moves.urllib.parse as urlparse
from mediagoblin import mg_globals
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.tests.tools import get_app, fixture_add_user
from mediagoblin.tools import template, mail
from mediagoblin.auth import tools as auth_tools
@@ -98,8 +98,9 @@ def test_register_views(test_app):
assert 'mediagoblin/user_pages/user_nonactive.html' in template.TEMPLATE_TEST_CONTEXT
## Make sure user is in place
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.User.query.filter(
+ LocalUser.usrname==u'angrygirl'
+ ).first()
assert new_user
## Make sure that the proper privileges are granted on registration
@@ -137,8 +138,9 @@ def test_register_views(test_app):
# assert context['verification_successful'] == True
# TODO: Would be good to test messages here when we can do so...
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'angrygirl'
+ ).first()
assert new_user
## Verify the email activation works
@@ -149,8 +151,9 @@ def test_register_views(test_app):
'mediagoblin/user_pages/user.html']
# assert context['verification_successful'] == True
# TODO: Would be good to test messages here when we can do so...
- new_user = mg_globals.database.User.query.filter_by(
- username=u'angrygirl').first()
+ new_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'angrygirl'
+ ).first()
assert new_user
# Uniqueness checks
diff --git a/mediagoblin/tests/test_basic_auth.py b/mediagoblin/tests/test_basic_auth.py
index e7157bee..0d698a20 100644
--- a/mediagoblin/tests/test_basic_auth.py
+++ b/mediagoblin/tests/test_basic_auth.py
@@ -16,7 +16,7 @@
import six.moves.urllib.parse as urlparse
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.basic_auth import tools as auth_tools
from mediagoblin.tests.tools import fixture_add_user
from mediagoblin.tools import template
@@ -88,7 +88,7 @@ def test_change_password(test_app):
assert urlparse.urlsplit(res.location)[2] == '/edit/account/'
# test_user has to be fetched again in order to have the current values
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = User.query.filter(LocalUser.username==u'chris').first()
assert auth_tools.bcrypt_check_password('123456', test_user.pw_hash)
# test that the password cannot be changed if the given
@@ -100,5 +100,5 @@ def test_change_password(test_app):
'new_password': '098765',
})
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = User.query.filter(LocalUser.username==u'chris').first()
assert not auth_tools.bcrypt_check_password('098765', test_user.pw_hash)
diff --git a/mediagoblin/tests/test_edit.py b/mediagoblin/tests/test_edit.py
index 384929cb..3bf85edf 100644
--- a/mediagoblin/tests/test_edit.py
+++ b/mediagoblin/tests/test_edit.py
@@ -19,7 +19,7 @@ import six.moves.urllib.parse as urlparse
import pytest
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, MediaEntry
+from mediagoblin.db.models import User, LocalUser, MediaEntry
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
from mediagoblin import auth
from mediagoblin.tools import template, mail
@@ -44,12 +44,12 @@ class TestUserEdit(object):
self.login(test_app)
# Make sure user exists
- assert User.query.filter_by(username=u'chris').first()
+ assert User.query.filter(LocalUser.username=u'chris').first()
res = test_app.post('/edit/account/delete/', {'confirmed': 'y'})
# Make sure user has been deleted
- assert User.query.filter_by(username=u'chris').first() == None
+ assert User.query.filter(LocalUser.username==u'chris').first() == None
#TODO: make sure all corresponding items comments etc have been
# deleted too. Perhaps in submission test?
@@ -79,7 +79,7 @@ class TestUserEdit(object):
'bio': u'I love toast!',
'url': u'http://dustycloud.org/'})
- test_user = User.query.filter_by(username=u'chris').first()
+ test_user = User.query.filter(LocalUser.username==u'chris').first()
assert test_user.bio == u'I love toast!'
assert test_user.url == u'http://dustycloud.org/'
@@ -159,9 +159,10 @@ class TestUserEdit(object):
assert urlparse.urlsplit(res.location)[2] == '/'
# Email shouldn't be saved
- email_in_db = mg_globals.database.User.query.filter_by(
- email='new@example.com').first()
- email = User.query.filter_by(username='chris').first().email
+ email_in_db = mg_globals.database.User.query.filter(
+ LocalUser.email=='new@example.com'
+ ).first()
+ email = User.query.filter(LocalUser.username=='chris').first().email
assert email_in_db is None
assert email == 'chris@example.com'
@@ -172,7 +173,7 @@ class TestUserEdit(object):
res.follow()
# New email saved?
- email = User.query.filter_by(username='chris').first().email
+ email = User.query.filter(LocalUser.username=='chris').first().email
assert email == 'new@example.com'
# test changing the url inproperly
@@ -181,8 +182,10 @@ class TestMetaDataEdit:
def setup(self, test_app):
# set up new user
self.user_password = u'toast'
- self.user = fixture_add_user(password = self.user_password,
- privileges=[u'active',u'admin'])
+ self.user = fixture_add_user(
+ password = self.user_password,
+ privileges=[u'active',u'admin']
+ )
self.test_app = test_app
def login(self, test_app):
diff --git a/mediagoblin/tests/test_ldap.py b/mediagoblin/tests/test_ldap.py
index f251d150..827864fa 100644
--- a/mediagoblin/tests/test_ldap.py
+++ b/mediagoblin/tests/test_ldap.py
@@ -26,6 +26,7 @@ import six.moves.urllib.parse as urlparse
from mediagoblin import mg_globals
from mediagoblin.db.base import Session
+from mediagoblin.db.models import LocalUser
from mediagoblin.tests.tools import get_app
from mediagoblin.tools import template
@@ -114,8 +115,9 @@ def test_ldap_plugin(ldap_plugin_app):
ldap_plugin_app.get('/auth/logout/')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Log back in
diff --git a/mediagoblin/tests/test_modelmethods.py b/mediagoblin/tests/test_modelmethods.py
index 0706aae4..78b29892 100644
--- a/mediagoblin/tests/test_modelmethods.py
+++ b/mediagoblin/tests/test_modelmethods.py
@@ -20,8 +20,8 @@
from __future__ import print_function
from mediagoblin.db.base import Session
-from mediagoblin.db.models import MediaEntry, User, Privilege, Activity, \
- Generator
+from mediagoblin.db.models import MediaEntry, User, LocalUser, Privilege, \
+ Activity, Generator
from mediagoblin.tests import MGClientTestCase
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry, \
@@ -169,9 +169,9 @@ class TestUserHasPrivilege:
fixture_add_user(u'aeva',
privileges=[u'moderator',u'active'])
self.natalie_user = User.query.filter(
- User.username==u'natalie').first()
+ LocalUser.username==u'natalie').first()
self.aeva_user = User.query.filter(
- User.username==u'aeva').first()
+ LocalUser.username==u'aeva').first()
def test_privilege_added_correctly(self, test_app):
self._setup()
diff --git a/mediagoblin/tests/test_moderation.py b/mediagoblin/tests/test_moderation.py
index e7a0ebef..46de6ed9 100644
--- a/mediagoblin/tests/test_moderation.py
+++ b/mediagoblin/tests/test_moderation.py
@@ -18,7 +18,7 @@ import pytest
from mediagoblin.tests.tools import (fixture_add_user,
fixture_add_comment_report, fixture_add_comment)
-from mediagoblin.db.models import User, CommentReport, MediaComment, UserBan
+from mediagoblin.db.models import User, LocalUser, CommentReport, MediaComment, UserBan
from mediagoblin.tools import template, mail
from webtest import AppError
@@ -47,9 +47,9 @@ class TestModerationViews:
self.query_for_users()
def query_for_users(self):
- self.admin_user = User.query.filter(User.username==u'admin').first()
- self.mod_user = User.query.filter(User.username==u'moderator').first()
- self.user = User.query.filter(User.username==u'regular').first()
+ self.admin_user = User.query.filter(LocalUser.username==u'admin').first()
+ self.mod_user = User.query.filter(LocalUser.username==u'moderator').first()
+ self.user = User.query.filter(LocalUser.username==u'regular').first()
def do_post(self, data, *context_keys, **kwargs):
url = kwargs.pop('url', '/submit/')
diff --git a/mediagoblin/tests/test_openid.py b/mediagoblin/tests/test_openid.py
index a3ab176a..409fcea2 100644
--- a/mediagoblin/tests/test_openid.py
+++ b/mediagoblin/tests/test_openid.py
@@ -28,7 +28,7 @@ openid_consumer = pytest.importorskip(
from mediagoblin import mg_globals
from mediagoblin.db.base import Session
-from mediagoblin.db.models import User
+from mediagoblin.db.models import User, LocalUser
from mediagoblin.plugins.openid.models import OpenIDUserURL
from mediagoblin.tests.tools import get_app, fixture_add_user
from mediagoblin.tools import template
@@ -192,8 +192,9 @@ class TestOpenIDPlugin(object):
openid_plugin_app.get('/auth/logout')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Log back in
diff --git a/mediagoblin/tests/test_persona.py b/mediagoblin/tests/test_persona.py
index a8466b8a..6112430f 100644
--- a/mediagoblin/tests/test_persona.py
+++ b/mediagoblin/tests/test_persona.py
@@ -27,7 +27,7 @@ import six.moves.urllib.parse as urlparse
pytest.importorskip("requests")
from mediagoblin import mg_globals
-from mediagoblin.db.base import Session
+from mediagoblin.db.base import Session, LocalUser
from mediagoblin.db.models import Privilege
from mediagoblin.tests.tools import get_app
from mediagoblin.tools import template
@@ -117,14 +117,16 @@ class TestPersonaPlugin(object):
persona_plugin_app.get('/auth/logout/')
# Get user and detach from session
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
active_privilege = Privilege.query.filter(
Privilege.privilege_name==u'active').first()
test_user.all_privileges.append(active_privilege)
test_user.save()
- test_user = mg_globals.database.User.query.filter_by(
- username=u'chris').first()
+ test_user = mg_globals.database.User.query.filter(
+ LocalUser.username==u'chris'
+ ).first()
Session.expunge(test_user)
# Add another user for _test_edit_persona
diff --git a/mediagoblin/tests/test_privileges.py b/mediagoblin/tests/test_privileges.py
index 8ea3d754..b3383b25 100644
--- a/mediagoblin/tests/test_privileges.py
+++ b/mediagoblin/tests/test_privileges.py
@@ -21,7 +21,7 @@ from webtest import AppError
from mediagoblin.tests.tools import fixture_add_user, fixture_media_entry
-from mediagoblin.db.models import User, UserBan
+from mediagoblin.db.models import User, LocalUser, UserBan
from mediagoblin.tools import template
from .resources import GOOD_JPG
@@ -64,9 +64,9 @@ class TestPrivilegeFunctionality:
return response, context_data
def query_for_users(self):
- self.admin_user = User.query.filter(User.username==u'alex').first()
- self.mod_user = User.query.filter(User.username==u'meow').first()
- self.user = User.query.filter(User.username==u'natalie').first()
+ self.admin_user = User.query.filter(LocalUser.username==u'alex').first()
+ self.mod_user = User.query.filter(LocalUser.username==u'meow').first()
+ self.user = User.query.filter(LocalUser.username==u'natalie').first()
def testUserBanned(self):
self.login(u'natalie')
diff --git a/mediagoblin/tests/test_reporting.py b/mediagoblin/tests/test_reporting.py
index 6a9fe205..8b7f6559 100644
--- a/mediagoblin/tests/test_reporting.py
+++ b/mediagoblin/tests/test_reporting.py
@@ -20,7 +20,7 @@ import six
from mediagoblin.tools import template
from mediagoblin.tests.tools import (fixture_add_user, fixture_media_entry,
fixture_add_comment, fixture_add_comment_report)
-from mediagoblin.db.models import (MediaReport, CommentReport, User,
+from mediagoblin.db.models import (MediaReport, CommentReport, User, LocalUser
MediaComment)
@@ -56,8 +56,8 @@ class TestReportFiling:
return response, context_data
def query_for_users(self):
- return (User.query.filter(User.username==u'allie').first(),
- User.query.filter(User.username==u'natalie').first())
+ return (User.query.filter(LocalUser.username==u'allie').first(),
+ User.query.filter(LocalUser.username==u'natalie').first())
def testMediaReports(self):
self.login(u'allie')
diff --git a/mediagoblin/tests/test_submission.py b/mediagoblin/tests/test_submission.py
index 65c4b3a3..b5ec3d71 100644
--- a/mediagoblin/tests/test_submission.py
+++ b/mediagoblin/tests/test_submission.py
@@ -35,7 +35,7 @@ Gst.init(None)
from mediagoblin.tests.tools import fixture_add_user
from .media_tools import create_av
from mediagoblin import mg_globals
-from mediagoblin.db.models import MediaEntry, User
+from mediagoblin.db.models import MediaEntry, User, LocalUser
from mediagoblin.db.base import Session
from mediagoblin.tools import template
from mediagoblin.media_types.image import ImageMediaManager
@@ -72,7 +72,7 @@ class TestSubmission:
#### totally stupid.
#### Also if we found a way to make this run it should be a
#### property.
- return User.query.filter(User.username==u'chris').first()
+ return User.query.filter(LocalUser.username==u'chris').first()
def login(self):
self.test_app.post(
diff --git a/mediagoblin/tests/tools.py b/mediagoblin/tests/tools.py
index dec95e83..76b7983a 100644
--- a/mediagoblin/tests/tools.py
+++ b/mediagoblin/tests/tools.py
@@ -25,7 +25,7 @@ from paste.deploy import loadapp
from webtest import TestApp
from mediagoblin import mg_globals
-from mediagoblin.db.models import User, MediaEntry, Collection, MediaComment, \
+from mediagoblin.db.models import User, LocalUser, MediaEntry, Collection, MediaComment, \
CommentSubscription, CommentNotification, Privilege, CommentReport, Client, \
RequestToken, AccessToken, Activity, Generator
from mediagoblin.tools import testing
@@ -176,9 +176,9 @@ def assert_db_meets_expected(db, expected):
def fixture_add_user(username=u'chris', password=u'toast',
privileges=[], wants_comment_notification=True):
# Reuse existing user or create a new one
- test_user = User.query.filter_by(username=username).first()
+ test_user = User.query.filter(LocalUser.username==username).first()
if test_user is None:
- test_user = User()
+ test_user = LocalUser()
test_user.username = username
test_user.email = username + u'@example.com'
if password is not None:
@@ -191,7 +191,7 @@ def fixture_add_user(username=u'chris', password=u'toast',
test_user.save()
# Reload
- test_user = User.query.filter_by(username=username).first()
+ test_user = User.query.filter(LocalUser.username==username).first()
# ... and detach from session:
Session.expunge(test_user)
diff --git a/mediagoblin/tools/federation.py b/mediagoblin/tools/federation.py
index 39b465bf..f2ee468c 100644
--- a/mediagoblin/tools/federation.py
+++ b/mediagoblin/tools/federation.py
@@ -83,7 +83,6 @@ def create_activity(verb, obj, actor, target=None, generator=None):
# If they've set it override the actor from the obj.
activity.actor = actor.id if isinstance(actor, User) else actor
-
activity.generator = generator.id
activity.save()
diff --git a/mediagoblin/user_pages/views.py b/mediagoblin/user_pages/views.py
index cc7f3684..33ca7c40 100644
--- a/mediagoblin/user_pages/views.py
+++ b/mediagoblin/user_pages/views.py
@@ -22,7 +22,7 @@ import six
from mediagoblin import messages, mg_globals
from mediagoblin.db.models import (MediaEntry, MediaTag, Collection,
- CollectionItem, User, Activity)
+ CollectionItem, LocalUser, Activity)
from mediagoblin.tools.response import render_to_response, render_404, \
redirect, redirect_obj
from mediagoblin.tools.text import cleaned_markdown_conversion
@@ -53,8 +53,8 @@ _log.setLevel(logging.DEBUG)
@user_not_banned
@uses_pagination
def user_home(request, page):
- """'Homepage' of a User()"""
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ """'Homepage' of a LocalUser()"""
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
if not user:
return render_404(request)
elif not user.has_privilege(u'active'):
@@ -90,7 +90,7 @@ def user_home(request, page):
@active_user_from_url
@uses_pagination
def user_gallery(request, page, url_user=None):
- """'Gallery' of a User()"""
+ """'Gallery' of a LocalUser()"""
tag = request.matchdict.get('tag', None)
cursor = MediaEntry.query.filter_by(
uploader=url_user.id,
@@ -485,7 +485,7 @@ def atom_feed(request):
"""
generates the atom feed with the newest images
"""
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username = request.matchdict['user']).first()
if not user or not user.has_privilege(u'active'):
return render_404(request)
@@ -547,7 +547,7 @@ def collection_atom_feed(request):
"""
generates the atom feed with the newest images from a collection
"""
- user = User.query.filter_by(
+ user = LocalUser.query.filter_by(
username = request.matchdict['user']).first()
if not user or not user.has_privilege(u'active'):
return render_404(request)
@@ -617,7 +617,7 @@ def processing_panel(request):
Show to the user what media is still in conversion/processing...
and what failed, and why!
"""
- user = User.query.filter_by(username=request.matchdict['user']).first()
+ user = LocalUser.query.filter_by(username=request.matchdict['user']).first()
# TODO: XXX: Should this be a decorator?
#
# Make sure we have permission to access this user's panel. Only
@@ -705,7 +705,7 @@ def activity_view(request):
"""
# Get the user object.
username = request.matchdict["username"]
- user = User.query.filter_by(username=username).first()
+ user = LocalUser.query.filter_by(username=username).first()
activity_id = request.matchdict["id"]