def __init__(self, user='******', echo=False): rdb_session = make_rdb_session(echo=echo) self.rdb_session = rdb_session user = lookup_user(rdb_session, user) self.user_dao = UserDAO(rdb_session, user) self.maint_dao = MaintainerDAO(self.user_dao) self.org_dao = OrganizerDAO(self.user_dao)
def _admin_dao_mw(next_, rdb_session): # TODO: autolookup from login.wmflabs username user = lookup_user(rdb_session, 'Slaporte') user_dao = UserDAO(rdb_session, user) maint_dao = MaintainerDAO(user_dao) org_dao = OrganizerDAO(user_dao) public_dao = PublicDAO(user_dao.rdb_session) return next_(user_dao=user_dao, maint_dao=maint_dao, org_dao=org_dao, public_dao=public_dao)
type=int) parser.add_argument('--ratings-csv-path', help='ratings file (use with --apply-ratings)', type=str) parser.add_argument('--campaign', help='campaign id', type=int) parser.add_argument('--force', action='store_true', help='Use with caution when cancelling things') parser.add_argument('--debug', action='store_true') args = parser.parse_args() rdb_session = make_rdb_session(echo=args.debug) user = lookup_user(rdb_session, 'Slaporte') user_dao = UserDAO(rdb_session, user) maint_dao = MaintainerDAO(user_dao) org_dao = OrganizerDAO(user_dao) force = args.force if args.list: campaigns = maint_dao.get_all_campaigns() pprint([c.to_details_dict() for c in campaigns]) if args.rdb_console: rdb_console(maint_dao) # TODO: active users
def main(): rdb_session = make_rdb_session() # TODO: startup should add maintainers as users mahm_user = lookup_user(rdb_session, 'MahmoudHashemi') # maintainer maint_dao = MaintainerDAO(rdb_session, mahm_user) org_user = maint_dao.add_organizer('LilyOfTheWest') org_dao = OrganizerDAO(rdb_session, org_user) # should automatically add the creator as coordinator campaign = org_dao.create_campaign( name='Basic test campaign', open_date=datetime.datetime(2015, 9, 10), close_date=datetime.datetime(2015, 10, 1)) mahm_user = org_dao.add_coordinator(campaign, username='******') slap_user = org_dao.add_coordinator(campaign, 'Slaporte') leila_user = org_dao.add_coordinator(campaign, 'LilyOfTheWest') import pdb pdb.set_trace() coord_dao = CoordinatorDAO(rdb_session, yarl_user) juror_usernames = ['Slaporte', 'MahmoudHashemi', 'Yarl', 'Erwmat'] rnd = coord_dao.create_round(name='Test Round 1', quorum=3, vote_method='rating', deadline_date=datetime.datetime(2015, 10, 15), jurors=juror_usernames, campaign=campaign) # returns successful, disqualified, total counts # coord_dao.add_entries_from_cat(rnd, 'Wiki Loves Monuments France 2015') if config.get('labs_db'): entries = coord_dao.add_entries_from_cat( rnd, 'Images_from_Wiki_Loves_Monuments_2015_in_Pakistan') else: entries = coord_dao.add_entries_from_csv_gist(rnd, GIST_URL) coord_dao.add_round_entries(rnd, entries) coord_dao.autodisqualify_by_date(rnd) coord_dao.autodisqualify_by_resolution(rnd) coord_dao.autodisqualify_by_uploader(rnd) #coord_dao.disqualify_entry(entry) coord_dao.activate_round(rnd) try: cross_complete(rdb_session, rnd) except PermissionDenied: pass else: raise ValueError('expected permission denied on cross complete') rate_round_tasks(rdb_session, rnd, limit_per=20) coord_dao.cancel_round(rnd) # # should fail, quorum must be <= # of jurors # coord_dao.reassign(active_jurors=['Slaporte']) rnd = coord_dao.create_round(name='Test Round 1.1', quorum=2, vote_method='rating', deadline_date=datetime.datetime(2015, 10, 15), jurors=juror_usernames, campaign=campaign) entries = coord_dao.add_entries_from_csv_gist(rnd, GIST_URL) coord_dao.add_round_entries(rnd, entries) coord_dao.activate_round(rnd) rate_round_tasks(rdb_session, rnd, limit_per=50) coord_dao.modify_jurors(rnd, [slap_user, yarl_user]) # some read tasks rate_round_tasks(rdb_session, rnd) avg_ratings_map = coord_dao.get_round_average_rating_map(rnd) threshold_map = get_threshold_map(avg_ratings_map) # let at least 100 through cur_thresh = [t for t, c in sorted(threshold_map.items()) if c >= 100][-1] adv_group = coord_dao.get_rating_advancing_group(rnd, cur_thresh) coord_dao.finalize_rating_round(rnd, cur_thresh) campaign = coord_dao.get_campaign(campaign.id) assert campaign.active_round is None # # Time for Round 2 # rnd2 = coord_dao.create_round(campaign, name='Test Round 2', vote_method='rating', quorum=2, jurors=juror_usernames, deadline_date=datetime.datetime(2015, 11, 1)) final_rnds = [r for r in campaign.rounds if r.status == 'finalized'] last_successful_rnd = final_rnds[-1] # TODO: these are ordered by date? advancing_group = coord_dao.get_rating_advancing_group(last_successful_rnd) source = 'round(#%s)' % last_successful_rnd.id coord_dao.add_round_entries(rnd2, advancing_group, source) coord_dao.activate_round(rnd2) rate_round_tasks(rdb_session, rnd2, limit_per=20) coord_dao.pause_round(rnd2) coord_dao.activate_round(rnd2) rate_round_tasks(rdb_session, rnd2) avg_ratings_map = coord_dao.get_round_average_rating_map(rnd2) threshold_map = get_threshold_map(avg_ratings_map) if config.get('labs_db'): # Assumign the category stays the same assert threshold_map == ROUND_2_CAT_THRESH else: assert threshold_map == ROUND_2_THRESH # # # # # close campaign # # download audit logs rdb_session.commit() pprint(threshold_map) import pdb pdb.set_trace()