diff options
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"] |