コード例 #1
0
ファイル: _admin.py プロジェクト: prtksxna/montage
 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)
コード例 #2
0
ファイル: admin.py プロジェクト: baturin/montage
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)
コード例 #3
0
ファイル: admin.py プロジェクト: aissatech/montage
                        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
コード例 #4
0
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()