Skip to content

Commit

Permalink
Refine boolean status to tiered level
Browse files Browse the repository at this point in the history
  • Loading branch information
ethan-nelson committed Dec 8, 2016
1 parent 1c90b3e commit 79e8a83
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 39 deletions.
8 changes: 4 additions & 4 deletions osmtm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,10 @@ def main(global_config, **settings):
config.add_route('user', '/user/{username}')
config.add_route('user_admin', '/user/{id:\d+}/admin')
config.add_route('user_project_manager', '/user/{id:\d+}/project_manager')
config.add_route('user_verified_editor',
'/user/{id:\d+}/verified_editor')
config.add_route('user_verified_validator',
'/user/{id:\d+}/verified_validator')
config.add_route('user_editor_level',
'/user/{id:\d+}/editor_level/{level:\d+}')
config.add_route('user_validator_level',
'/user/{id:\d+}/validator_level/{level:\d+}')
config.add_route('user_prefered_editor',
'/user/prefered_editor/{editor}', xhr=True)
config.add_route('user_prefered_language',
Expand Down
20 changes: 2 additions & 18 deletions osmtm/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,9 +118,6 @@ class ST_SetSRID(GenericFunction):
ADMIN = 1
PROJECT_MANAGER = 2

VERIFIED_EDITOR = 1
VERIFIED_VALIDATOR = 1


class User(Base):
__tablename__ = "users"
Expand All @@ -140,11 +137,8 @@ class User(Base):
Message.read.isnot(True)
))

editor_status = Column(Integer)
validator_status = Column(Integer)

verified_editor = VERIFIED_EDITOR
verified_validator = VERIFIED_VALIDATOR
editor_level = Column(Integer, default=0)
validator_level = Column(Integer, default=0)

def __init__(self, id, username):
self.id = id
Expand All @@ -158,22 +152,12 @@ def is_admin(self):
def is_project_manager(self):
return self.role is self.role_project_manager

@hybrid_property
def is_verified_editor(self):
return self.editor_status is self.verified_editor

@hybrid_property
def is_verified_validator(self):
return self.validator_status is self.verified_validator

def as_dict(self):
return {
"id": self.id,
"username": self.username,
"is_admin": self.is_admin,
"is_project_manager": self.is_project_manager,
"is_verified_editor": self.is_verified_editor,
"is_verified_validator": self.is_verified_validator
}


Expand Down
18 changes: 9 additions & 9 deletions osmtm/tests/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,15 +101,15 @@ def test_user_project_manager__logged_in_as_admin(self):
DBSession.delete(user)
transaction.commit()

def test_verified_statuses(self):
def test_editor_validator_levels(self):
from osmtm.models import User, DBSession
import transaction

edi_userid = 1111
edi_username = u'verified_editor_soon'
edi_username = u'editor_level_soon'

val_userid = 2222
val_username = u'verified_validator_soon'
val_username = u'validator_level_soon'

edi_user = User(edi_userid, edi_username)
val_user = User(val_userid, val_username)
Expand All @@ -122,20 +122,20 @@ def test_verified_statuses(self):
edi_user_before = DBSession.query(User).get(edi_userid)
val_user_before = DBSession.query(User).get(val_userid)

self.assertFalse(edi_user_before.is_verified_editor)
self.assertFalse(val_user_before.is_verified_validator)
self.assertEqual(edi_user_before.editor_level, 0)
self.assertEqual(val_user_before.validator_level, 0)

headers = self.login_as_admin()
self.testapp.get('/user/%s/verified_editor' % edi_userid,
self.testapp.get('/user/%s/editor_level/%s' % (edi_userid, 1),
headers=headers, status=302)
self.testapp.get('/user/%s/verified_validator' % val_userid,
self.testapp.get('/user/%s/validator_level/%s' % (val_userid, 1),
headers=headers, status=302)

edi_user_after = DBSession.query(User).get(edi_userid)
val_user_after = DBSession.query(User).get(val_userid)

self.assertTrue(edi_user_after.is_verified_editor)
self.assertTrue(val_user_after.is_verified_validator)
self.assertEqual(edi_user_after.editor_level, 1)
self.assertEqual(val_user_after.validator_level, 1)

def test_user(self):
httpretty.enable()
Expand Down
16 changes: 8 additions & 8 deletions osmtm/views/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,26 +97,26 @@ def user_project_manager(request):
username=user.username))


@view_config(route_name='user_verified_editor', permission="user_edit")
def user_verified_editor(request):
@view_config(route_name='user_editor_level', permission="user_edit")
def user_editor_level(request):
id = request.matchdict['id']
level = request.matchdict['level']
user = DBSession.query(User).get(id)

user.editor_status = User.verified_editor if not user.is_verified_editor \
else None
user.editor_level = level
DBSession.flush()

return HTTPFound(location=route_path("user", request,
username=user.username))


@view_config(route_name='user_verified_validator', permission="user_edit")
def user_verified_validator(request):
@view_config(route_name='user_validator_level', permission="user_edit")
def user_validator_level(request):
id = request.matchdict['id']
level = request.matchdict['level']
user = DBSession.query(User).get(id)

user.validator_status = User.verified_validator if not \
user.is_verified_validator else None
user.validator_level = level
DBSession.flush()

return HTTPFound(location=route_path("user", request,
Expand Down

0 comments on commit 79e8a83

Please sign in to comment.