Skip to content

Commit

Permalink
seamlessly handle cases when a user changes their mw username
Browse files Browse the repository at this point in the history
  • Loading branch information
mahmoud committed Mar 3, 2019
1 parent 725da01 commit 94417d4
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 4 deletions.
16 changes: 12 additions & 4 deletions montage/rdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -1965,7 +1965,7 @@ def modify_jurors(self, round_id, new_jurors, force_balance=False):
new_juror_names = sorted([nj.username for nj in new_jurors])
old_jurors = self.get_active_jurors(rnd.id)
old_juror_names = sorted([oj.username for oj in old_jurors])

if new_juror_names == old_juror_names:
raise InvalidAction('new jurors must differ from current jurors')

Expand Down Expand Up @@ -2314,7 +2314,7 @@ def add_organizer(self, username):
def remove_organizer(self, username):
user = lookup_user(self.rdb_session, username=username)
if not user:
raise InvalidAction('user %s is not an organizer' % username)
raise InvalidAction('user %s is not present in the system' % username)
user.is_organizer = False
msg = ('%s removed %s as an organizer' % (self.user.username, username))
self.log_action('remove_organizer', message=msg, role='maintianer')
Expand Down Expand Up @@ -2468,7 +2468,7 @@ def get_tasks_from_round(self, round_id, num=1, offset=0):
.filter(
Vote.round_entry.has(round_id=round_id))
.order_by(Vote.id))

# Check if this round_juror has skipped any tasks
round_juror = self._get_round_juror(round_id)
skip = round_juror.skip
Expand Down Expand Up @@ -2775,8 +2775,16 @@ def flag(self, round_id, entry_id, reason=None):

def lookup_user(rdb_session, username):
user = rdb_session.query(User).filter_by(username=username).one_or_none()
if user:
return user
user_id = get_mw_userid(username)
user = rdb_session.query(User).filter_by(id=user_id).one_or_none()
if not user:
return user
user.username = username # update our local cache of the username
return user


def lookup_series(rdb_session, name):
series = (rdb_session.query(Series)
.filter_by(name=name)
Expand Down Expand Up @@ -2896,7 +2904,7 @@ def reassign_tasks(session, rnd, new_jurors, strategy=None):

def swap_tasks(session, rnd, new_juror, old_juror):
# Transfer tasks from one juror to another

votes_to_swap = (session.query(Vote)
.filter_by(status=ACTIVE_STATUS, user=old_juror)
.join(RoundEntry)
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ SQLAlchemy==1.0.14
unicodecsv==0.14.1
Werkzeug==0.9.4
chert==0.3.0
mysqlclient==1.4.2.post1

0 comments on commit 94417d4

Please sign in to comment.