Skip to content

Commit

Permalink
OpenID column removed from userModel and code
Browse files Browse the repository at this point in the history
  • Loading branch information
smotornyuk committed Jul 12, 2017
1 parent b9b18ff commit 6edf69d
Show file tree
Hide file tree
Showing 8 changed files with 24 additions and 31 deletions.
2 changes: 0 additions & 2 deletions ckan/config/routing.py
Expand Up @@ -358,8 +358,6 @@ def make_map():
map.redirect('/user/', '/user')
with SubMapper(map, controller='user') as m:
m.connect('/user/edit', action='edit')
# Note: openid users have slashes in their ids, so need the wildcard
# in the route.
m.connect('user_generate_apikey', '/user/generate_key/{id}', action='generate_apikey')
m.connect('/user/activity/{id}/{offset}', action='activity')
m.connect('user_activity_stream', '/user/activity/{id}',
Expand Down
6 changes: 2 additions & 4 deletions ckan/lib/create_test_data.py
Expand Up @@ -502,14 +502,12 @@ def create_users(cls, user_dicts):

@classmethod
def _create_user_without_commit(cls, name='', **user_dict):
if model.User.by_name(name) or \
(user_dict.get('open_id') and
model.User.by_openid(user_dict.get('openid'))):
if model.User.by_name(name):
log.warning('Cannot create user "%s" as it already exists.' %
name or user_dict['name'])
return
# User objects are not revisioned so no need to create a revision
user_ref = name or user_dict['openid']
user_ref = name
assert user_ref
for k, v in user_dict.items():
if v:
Expand Down
2 changes: 0 additions & 2 deletions ckan/logic/action/create.py
Expand Up @@ -942,8 +942,6 @@ def user_create(context, data_dict):
:type fullname: string
:param about: a description of the new user (optional)
:type about: string
:param openid: (optional)
:type openid: string
:returns: the newly created user
:rtype: dictionary
Expand Down
13 changes: 5 additions & 8 deletions ckan/logic/action/get.py
Expand Up @@ -852,11 +852,10 @@ def user_list(context, data_dict):
model.User.about.label('about'),
model.User.about.label('email'),
model.User.created.label('created'),
_select([_func.count(model.Revision.id)],
_or_(
model.Revision.author == model.User.name,
model.Revision.author == model.User.openid
)).label('number_of_edits'),
_select(
[_func.count(model.Revision.id)],
model.Revision.author == model.User.name
).label('number_of_edits'),
_select([_func.count(model.Package.id)],
_and_(
model.Package.creator_user_id == model.User.id,
Expand All @@ -873,9 +872,7 @@ def user_list(context, data_dict):
if order_by == 'edits':
query = query.order_by(_desc(
_select([_func.count(model.Revision.id)],
_or_(
model.Revision.author == model.User.name,
model.Revision.author == model.User.openid))))
model.Revision.author == model.User.name)))
else:
query = query.order_by(
_case([(
Expand Down
1 change: 0 additions & 1 deletion ckan/logic/schema.py
Expand Up @@ -409,7 +409,6 @@ def default_user_schema():
'email': [not_empty, unicode],
'about': [ignore_missing, user_about_validator, unicode],
'created': [ignore],
'openid': [ignore_missing],
'sysadmin': [ignore_missing, ignore_not_sysadmin],
'apikey': [ignore],
'reset_key': [ignore],
Expand Down
13 changes: 13 additions & 0 deletions ckan/migration/versions/086_drop_openid_column.py
@@ -0,0 +1,13 @@
# encoding: utf-8

from sqlalchemy import *
from migrate import *


def upgrade(migrate_engine):
metadata = MetaData()
metadata.bind = migrate_engine
migrate_engine.execute('''
ALTER TABLE "user"
DROP COLUMN openid;
''')
16 changes: 3 additions & 13 deletions ckan/model/user.py
Expand Up @@ -22,7 +22,6 @@
Column('id', types.UnicodeText, primary_key=True,
default=_types.make_uuid),
Column('name', types.UnicodeText, nullable=False, unique=True),
Column('openid', types.UnicodeText),
Column('password', types.UnicodeText),
Column('fullname', types.UnicodeText),
Column('email', types.UnicodeText),
Expand All @@ -44,11 +43,6 @@ class User(vdm.sqlalchemy.StatefulObjectMixin,
VALID_NAME = re.compile(r"^[a-zA-Z0-9_\-]{3,255}$")
DOUBLE_SLASH = re.compile(':\/([^/])')

@classmethod
def by_openid(cls, openid):
obj = meta.Session.query(cls).autoflush(False)
return obj.filter_by(openid=openid).first()

@classmethod
def by_email(cls, email):
return meta.Session.query(cls).filter_by(email=email).all()
Expand Down Expand Up @@ -84,17 +78,14 @@ def email_hash(self):
return md5(e).hexdigest()

def get_reference_preferred_for_uri(self):
'''Returns a reference (e.g. name, id, openid) for this user
'''Returns a reference (e.g. name, id) for this user
suitable for the user\'s URI.
When there is a choice, the most preferable one will be
given, based on readability. This is expected when repoze.who can
give a more friendly name for an openid user.
given, based on readability.
The result is not escaped (will get done in url_for/redirect_to).
'''
if self.name:
ref = self.name
elif self.openid:
ref = self.openid
else:
ref = self.id
return ref
Expand Down Expand Up @@ -282,7 +273,7 @@ def get_groups(self, group_type=None, capacity=None):

@classmethod
def search(cls, querystr, sqlalchemy_query=None, user_name=None):
'''Search name, fullname, email and openid. '''
'''Search name, fullname, email. '''
if sqlalchemy_query is None:
query = meta.Session.query(cls)
else:
Expand All @@ -291,7 +282,6 @@ def search(cls, querystr, sqlalchemy_query=None, user_name=None):
filters = [
cls.name.ilike(qstr),
cls.fullname.ilike(qstr),
cls.openid.ilike(qstr),
]
# sysadmins can search on user emails
import ckan.authz as authz
Expand Down
2 changes: 1 addition & 1 deletion ckan/tests/legacy/functional/api/base.py
Expand Up @@ -355,7 +355,7 @@ class BaseModelApiTestCase(ApiTestCase, ControllerTestCase):
'description' : u'Great group!',
'packages' : [u'annakarenina', u'warandpeace'],
}
user_name = u'http://myrandom.openidservice.org/'
user_name = u'myrandom'

def setup(self):
super(BaseModelApiTestCase, self).setup()
Expand Down

0 comments on commit 6edf69d

Please sign in to comment.