Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Start foundation for editor, validator statuses #899

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions alembic/versions/56b62a1ce043_add_editor_and_validator_status.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
"""Add editor and validator status

Revision ID: 56b62a1ce043
Revises: 5002e75c0604
Create Date: 2016-11-27 11:29:58.757273

"""

# revision identifiers, used by Alembic.
revision = '56b62a1ce043'
down_revision = '5002e75c0604'

from alembic import op
import sqlalchemy as sa


def upgrade():
op.add_column('users', sa.Column('editor_level', sa.Integer))
op.add_column('users', sa.Column('validator_level', sa.Integer))
op.execute('UPDATE users SET (editor_level, validator_level) = (0, 0);')


def downgrade():
op.drop_column('users', 'editor_level')
op.drop_column('users', 'validator_level')
4 changes: 4 additions & 0 deletions osmtm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +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_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
5 changes: 4 additions & 1 deletion osmtm/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ class User(Base):
Message.read.isnot(True)
))

editor_level = Column(Integer, default=0)
validator_level = Column(Integer, default=0)

def __init__(self, id, username):
self.id = id
self.username = username
Expand All @@ -154,7 +157,7 @@ def as_dict(self):
"id": self.id,
"username": self.username,
"is_admin": self.is_admin,
"is_project_manager": self.is_project_manager
"is_project_manager": self.is_project_manager,
}


Expand Down
38 changes: 37 additions & 1 deletion osmtm/tests/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def test_users__logged_in(self):

def test_users_json(self):
res = self.testapp.get('/users.json', status=200)
self.assertEqual(len(res.json), 5)
self.assertEqual(len(res.json), 7)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think tests run alphabetically? This didn't fail before because the test function I originally added was test_verified_statuses. Now that it's test_editor..., it runs before test_users_json, adding two new users and throwing off this count.


def test_users_json__query(self):
res = self.testapp.get('/users.json',
Expand Down Expand Up @@ -101,6 +101,42 @@ def test_user_project_manager__logged_in_as_admin(self):
DBSession.delete(user)
transaction.commit()

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

edi_userid = 1111
edi_username = u'editor_level_soon'

val_userid = 2222
val_username = u'validator_level_soon'

edi_user = User(edi_userid, edi_username)
val_user = User(val_userid, val_username)

DBSession.add(edi_user)
DBSession.add(val_user)
DBSession.flush()
transaction.commit()

edi_user_before = DBSession.query(User).get(edi_userid)
val_user_before = DBSession.query(User).get(val_userid)

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/editor_level/%s' % (edi_userid, 1),
headers=headers, status=302)
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.assertEqual(edi_user_after.editor_level, 1)
self.assertEqual(val_user_after.validator_level, 1)

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


@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_level = level
DBSession.flush()

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


@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_level = level
DBSession.flush()

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


@view_config(route_name='user', renderer='user.mako')
def user(request):

Expand Down