Example #1
0
 def f(form):
     # Managers.
     add_venue_to_user_managers(form.vars.id, util.list_diff(form.vars.managers, old_managers))
     delete_venue_from_managers(form.vars.id, util.list_diff(old_managers, form.vars.managers))
     # Observers.
     add_venue_to_user_observers(form.vars.id, util.list_diff(form.vars.observers, old_observers))
     delete_venue_from_observers(form.vars.id, util.list_diff(old_observers, form.vars.observers))
     # Submitters.
     if str(old_submit_constraint) != str(form.vars.submit_constraint):
         # We need to update.
         if old_submit_constraint != None:
             user_list = db.user_list[old_submit_constraint].user_list
             delete_venue_from_submitters(form.vars.id, user_list)
         if not util.is_none(form.vars.submit_constraint):
             user_list = db.user_list[form.vars.submit_constraint].user_list
             add_venue_to_user_submit(form.vars.id, user_list)
         # Raters.
     if str(old_rate_constraint) != str(form.vars.rate_constraint):
         # We need to update.
         if old_rate_constraint != None:
             user_list = db.user_list[old_rate_constraint].user_list
             delete_venue_from_raters(form.vars.id, user_list)
         if not util.is_none(form.vars.rate_constraint):
             user_list = db.user_list[form.vars.rate_constraint].user_list
             add_venue_to_user_rate(form.vars.id, user_list)
Example #2
0
def update_venue(id, form, old_managers, old_observers, old_submit_constraint,
                 old_rate_constraint):
    """A venue is being updated.  We need to return a callback for the form,
    that will produce the proper update, taking into account the change in permissions."""
    # Managers.
    add_venue_to_user_managers(
        id, util.list_diff(form.vars.managers, old_managers))
    delete_venue_from_managers(
        id, util.list_diff(old_managers, form.vars.managers))
    # Observers.
    add_venue_to_user_observers(
        id, util.list_diff(form.vars.observers, old_observers))
    delete_venue_from_observers(
        id, util.list_diff(old_observers, form.vars.observers))
    # Submitters.
    if str(old_submit_constraint) != str(form.vars.submit_constraint):
        # We need to update.
        if old_submit_constraint != None:
            delete_venue_from_submitters(
                id, get_list_members(old_submit_constraint))
        if not util.is_none(form.vars.submit_constraint):
            user_list = get_list_members(form.vars.submit_constraint)
            add_venue_to_user_submit(id, user_list)
    # Raters.
    if str(old_rate_constraint) != str(form.vars.rate_constraint):
        # We need to update.
        if old_rate_constraint != None:
            delete_venue_from_raters(id, get_list_members(old_rate_constraint))
        if not util.is_none(form.vars.rate_constraint):
            add_venue_to_user_rate(id,
                                   get_list_members(form.vars.rate_constraint))
Example #3
0
    def f(form):
        # Managers.
        add_venue_to_user_managers(form.vars.id, util.list_diff(form.vars.managers, old_managers))
        delete_venue_from_managers(form.vars.id, util.list_diff(old_managers, form.vars.managers))
	# Observers.
        add_venue_to_user_observers(form.vars.id, util.list_diff(form.vars.observers, old_observers))
        delete_venue_from_observers(form.vars.id, util.list_diff(old_observers, form.vars.observers))
        # Submitters.
        if str(old_submit_constraint) != str(form.vars.submit_constraint):
            # We need to update.
	    if old_submit_constraint != None:
                user_list = db.user_list[old_submit_constraint].user_list
                delete_venue_from_submitters(form.vars.id, user_list)
            if not util.is_none(form.vars.submit_constraint):
                user_list = db.user_list[form.vars.submit_constraint].user_list
                add_venue_to_user_submit(form.vars.id, user_list)
        # Raters.
        if str(old_rate_constraint) != str(form.vars.rate_constraint):
            # We need to update.
	    if old_rate_constraint != None:
                user_list = db.user_list[old_rate_constraint].user_list
                delete_venue_from_raters(form.vars.id, user_list)
            if not util.is_none(form.vars.rate_constraint):
                user_list = db.user_list[form.vars.rate_constraint].user_list
                add_venue_to_user_rate(form.vars.id, user_list)
Example #4
0
def create_venue(form):
    """Processes the creation of a context, propagating the effects."""
    # First, we need to add the context for the new managers.
    add_venue_to_user_managers(form.vars.id, form.vars.managers)
    add_venue_to_user_observers(form.vars.id, form.vars.observers)
    # If there is a submit constraint, we need to allow all the users
    # in the list to submit.
    if not util.is_none(form.vars.submit_constraint):
        user_list = db.user_list[form.vars.submit_constraint].email_list
        # We need to add everybody in that list to submit.
        add_venue_to_user_submit(form.vars.id, user_list)
    # If there is a rating constraint, we need to allow all the users
    # in the list to rate.
    if not util.is_none(form.vars.rate_constraint):
        user_list = db.user_list[form.vars.rate_constraint].email_list
        add_venue_to_user_rate(form.vars.id, user_list)
Example #5
0
def create_venue(form):
    """Processes the creation of a context, propagating the effects."""
    # First, we need to add the context for the new managers.
    add_venue_to_user_managers(form.vars.id, form.vars.managers)
    add_venue_to_user_observers(form.vars.id, form.vars.observers)
    # If there is a submit constraint, we need to allow all the users
    # in the list to submit.
    if not util.is_none(form.vars.submit_constraint):
        user_list = db.user_list[form.vars.submit_constraint].user_list
        # We need to add everybody in that list to submit.
        add_venue_to_user_submit(form.vars.id, user_list)
    # If there is a rating constraint, we need to allow all the users
    # in the list to rate.
    if not util.is_none(form.vars.rate_constraint):
        user_list = db.user_list[form.vars.rate_constraint].user_list
        add_venue_to_user_rate(form.vars.id, user_list)
Example #6
0
def view_venue_research():
    c = db.venue(request.args(0)) or redirect(URL("default", "index"))
    props = db(db.user_properties.user == auth.user.email).select().first()
    if props == None:
        can_submit = False
        can_rate = False
        has_submitted = False
        has_rated = False
        can_manage = False
        can_observe = False
        can_view_ratings = False
    else:
        can_submit = c.id in util.get_list(props.venues_can_submit) or util.is_none(c.submit_constraint)
        can_rate = c.id in util.get_list(props.venues_can_rate) or util.is_none(c.rate_constraint)
        has_submitted = c.id in util.get_list(props.venues_has_submitted)
        has_rated = c.id in util.get_list(props.venues_has_rated)
        can_manage = c.id in util.get_list(props.venues_can_manage)
        can_observe = c.id in util.get_list(props.venues_can_observe)
        # MAYDO(luca): Add option to allow only raters, or only submitters, to view
        # all ratings.
        can_view_ratings = access.can_view_ratings(c, props)
    db.venue.ranking_algo_description.readable = True
    venue_form = SQLFORM(db.venue, record=c, readonly=True)
    link_list = []
    if can_submit:
        link_list.append(A(T("Submit to this venue"), _href=URL("submission", "submit", args=[c.id])))
    if can_rate:
        link_list.append(A(T("Review a submission"), _href=URL("rating", "accept_review", args=[c.id])))
    if has_submitted:
        link_list.append(A(T("View my submissions"), _href=URL("feedback", "index", args=[c.id])))
    if can_manage:
        link_list.append(A(T("Edit"), _href=URL("managed_index", vars=dict(cid=c.id))))
        link_list.append(A(T("Add submission"), _href=URL("submission", "manager_submit", args=[c.id])))
        link_list.append(A(T("Rep sys - small alpha"), _href=URL("rating", "run_rep_sys_research", args=[c.id, 3])))
        link_list.append(A(T("Rep sys - all compar"), _href=URL("rating", "run_rep_sys_research", args=[c.id, 2])))
        link_list.append(A(T("Ranking without rep sys"), _href=URL("rating", "run_rep_sys_research", args=[c.id, 1])))
    if can_observe or can_manage:
        link_list.append(A(T("View reviewing tasks"), _href=URL("ranking", "view_tasks", args=[c.id])))
        link_list.append(A(T("View comparisons"), _href=URL("ranking", "view_comparisons_index", args=[c.id])))
    if can_view_ratings or access.can_view_submissions(c, props):
        link_list.append(A(T("View submissions"), _href=URL("ranking", "view_venue", args=[c.id])))
    if access.can_view_rating_contributions(c, props):
        link_list.append(A(T("View reviewer contribution"), _href=URL("ranking", "view_raters", args=[c.id])))
    if can_view_ratings:
        link_list.append(A(T("View final grades"), _href=URL("ranking", "view_final_grades", args=[c.id])))
    return dict(form=venue_form, link_list=link_list, venue=c, has_rated=has_rated)
Example #7
0
def view_venue_research():
    c = db.venue(request.args(0)) or redirect(URL('default', 'index'))
    props = db(db.user_properties.user == auth.user.email).select().first()
    if props == None: 
        can_submit = False
        can_rate = False
        has_submitted = False
        has_rated = False
        can_manage = False
	can_observe = False
        can_view_ratings = False
    else:
        can_submit = c.id in util.get_list(props.venues_can_submit) or util.is_none(c.submit_constraint)
        can_rate = c.id in util.get_list(props.venues_can_rate) or util.is_none(c.rate_constraint)
        has_submitted = c.id in util.get_list(props.venues_has_submitted)
        has_rated = c.id in util.get_list(props.venues_has_rated)
        can_manage = c.id in util.get_list(props.venues_can_manage)
        can_observe = c.id in util.get_list(props.venues_can_observe)
	# MAYDO(luca): Add option to allow only raters, or only submitters, to view
	# all ratings.
	can_view_ratings = access.can_view_ratings(c, props)
    db.venue.ranking_algo_description.readable = True
    venue_form = SQLFORM(db.venue, record=c, readonly=True)
    link_list = []
    if can_submit:
        link_list.append(A(T('Submit to this venue'), _href=URL('submission', 'submit', args=[c.id])))
    if can_rate:
        link_list.append(A(T('Review a submission'), _href=URL('rating', 'accept_review', args=[c.id])))
    if has_submitted:
        link_list.append(A(T('View my submissions'), _href=URL('feedback', 'index', args=[c.id])))
    if can_manage:
        link_list.append(A(T('Edit'), _href=URL('managed_index', vars=dict(cid=c.id))))
	link_list.append(A(T('Add submission'), _href=URL('submission', 'manager_submit', args=[c.id])))
        link_list.append(A(T('Rep sys - small alpha'), _href=URL('rating', 'run_rep_sys_research', args=[c.id, 3])))
        link_list.append(A(T('Rep sys - all compar'), _href=URL('rating', 'run_rep_sys_research', args=[c.id, 2])))
        link_list.append(A(T('Ranking without rep sys'), _href=URL('rating', 'run_rep_sys_research', args=[c.id, 1])))
    if can_observe or can_manage:
	link_list.append(A(T('View reviewing tasks'), _href=URL('ranking', 'view_tasks', args=[c.id])))
	link_list.append(A(T('View comparisons'), _href=URL('ranking', 'view_comparisons_index', args=[c.id])))
    if can_view_ratings or access.can_view_submissions(c, props):
        link_list.append(A(T('View submissions'), _href=URL('ranking', 'view_venue', args=[c.id])))
    if access.can_view_rating_contributions(c, props):
        link_list.append(A(T('View reviewer contribution'), _href=URL('ranking', 'view_raters', args=[c.id])))
    if can_view_ratings:
        link_list.append(A(T('View final grades'), _href=URL('ranking', 'view_final_grades', args=[c.id])))
    return dict(form=venue_form, link_list=link_list, venue=c, has_rated=has_rated)
Example #8
0
def view_venue():
    c = db.venue(request.args(0)) or redirect(URL('default', 'index'))
    props = db(db.user_properties.email == auth.user.email).select().first()
    if props == None: 
        can_submit = False
        can_rate = False
        has_submitted = False
        has_rated = False
        can_manage = False
	can_observe = False
        can_view_ratings = False
    else:
        can_submit = c.id in util.get_list(props.venues_can_submit) or util.is_none(c.submit_constraint)
        can_rate = c.id in util.get_list(props.venues_can_rate) or util.is_none(c.rate_constraint)
        has_submitted = c.id in util.get_list(props.venues_has_submitted)
        has_rated = c.id in util.get_list(props.venues_has_rated)
        can_manage = c.id in util.get_list(props.venues_can_manage)
        can_observe = c.id in util.get_list(props.venues_can_observe)
	# MAYDO(luca): Add option to allow only raters, or only submitters, to view
	# all ratings.
	can_view_ratings = access.can_view_ratings(c, props)
    venue_form = SQLFORM(db.venue, record=c, readonly=True)
    link_list = []
    if can_submit:
        link_list.append(A(T('Submit to this venue'), _href=URL('submission', 'submit', args=[c.id])))
    if can_rate:
        link_list.append(A(T('Review a submission'), _href=URL('rating', 'accept_review', args=[c.id])))
    if has_submitted:
        link_list.append(A(T('View my submissions'), _href=URL('submission', 'my_submissions_index', args=[c.id])))
    if can_manage:
        link_list.append(A(T('Edit'), _href=URL('managed_index', vars=dict(cid=c.id))))
	link_list.append(A(T('Add submission'), _href=URL('submission', 'manager_submit', args=[c.id])))
        link_list.append(A(T('Recompute submission ranking'), _href=URL('rating', 'recompute_ranks', args=[c.id])))
        link_list.append(A(T('Run reputation system'), _href=URL('rating', 'run_rep_system', args=[c.id])))
        link_list.append(A(T('Evaluate reviewers'), _href=URL('rating', 'evaluate_reviewers', args=[c.id])))
        link_list.append(A(T('Compute final grades'), _href=URL('rating', 'compute_final_grades', args=[c.id])))
    if can_observe or can_manage:
	link_list.append(A(T('View reviewing tasks'), _href=URL('ranking', 'view_tasks', args=[c.id])))
	link_list.append(A(T('View comparisons'), _href=URL('ranking', 'view_comparisons_index', args=[c.id])))
    if can_view_ratings or access.can_view_submissions(c, props):
        link_list.append(A(T('View submissions'), _href=URL('ranking', 'view_venue', args=[c.id])))
    if access.can_view_rating_contributions(c, props):
        link_list.append(A(T('View reviewer contribution'), _href=URL('ranking', 'view_raters', args=[c.id])))
    if can_view_ratings:
        link_list.append(A(T('View final grades'), _href=URL('ranking', 'view_final_grades', args=[c.id])))
    return dict(form=venue_form, link_list=link_list, venue=c, has_rated=has_rated)
Example #9
0
def create_venue(id, form):
    """Processes the creation of a context, propagating the effects."""
    # First, we need to add the context for the new managers.
    add_venue_to_user_managers(id, form.vars.managers)
    add_venue_to_user_observers(id, form.vars.observers)
    # If there is a submit constraint, we need to allow all the users
    # in the list to submit.
    if not util.is_none(form.vars.submit_constraint):
        # We need to add everybody in that list to submit.
        add_venue_to_user_submit(id, get_list_members(form.vars.submit_constraint))
    # If there is a rating constraint, we need to allow all the users
    # in the list to rate.
    if not util.is_none(form.vars.rate_constraint):
        add_venue_to_user_rate(id, get_list_members(form.vars.rate_constraint))
    # Authorizationi message.
    if not is_user_admin():
        session.flash = T('Your assignment has been created. '
                          'Before it can be used, it needs to be approved.')
Example #10
0
def create_venue(id, form):
    """Processes the creation of a context, propagating the effects."""
    # First, we need to add the context for the new managers.
    add_venue_to_user_managers(id, form.vars.managers)
    add_venue_to_user_observers(id, form.vars.observers)
    # If there is a submit constraint, we need to allow all the users
    # in the list to submit.
    if not util.is_none(form.vars.submit_constraint):
        # We need to add everybody in that list to submit.
        add_venue_to_user_submit(id,
                                 get_list_members(form.vars.submit_constraint))
    # If there is a rating constraint, we need to allow all the users
    # in the list to rate.
    if not util.is_none(form.vars.rate_constraint):
        add_venue_to_user_rate(id, get_list_members(form.vars.rate_constraint))
    # Authorizationi message.
    if not is_user_admin():
        session.flash = T('Your assignment has been created. '
                          'Before it can be used, it needs to be approved.')
Example #11
0
def assign_reviewers():
    c = db.venue(request.args(0)) or redirect('default', 'index')
    props = db(db.user_properties.email == auth.user.email).select().first()
    if props == None:
        session.flash = T('You cannot assign reviewers to this venue.')
        redirect(URL('default', 'index'))
    if not access.can_manage(c, props):
        session.flash = T('You cannot assign reviewers to this venue.')
        redirect(URL('default', 'index'))
    # These are the users that can be called upon reviewing the submissions.
    managed_user_lists = util.get_list(props.managed_user_lists)
    # Constrains the user lists to those managed by the user.
    list_q = (db.user_list.id.belongs(managed_user_lists))
    # The default is the list of users that can review the venue.
    if c.rate_constraint is None:
	form = SQLFORM.factory(
	    Field('users', requires = IS_IN_DB(db(list_q), 'user_list.id', '%(name)s')),
	    Field('number_of_reviews_per_user', 'integer'),
	    Field('incremental', 'boolean'),
	    )
    else:
	form = SQLFORM.factory(
	    Field('users', default = c.rate_constraint,
		  requires = IS_IN_DB(db(list_q), 'user_list.id', '%(name)s')),
	    Field('number_of_reviews_per_user', 'integer'),
	    Field('incremental', 'boolean'),
	    )	
    if form.process().accepted:
        if (util.is_none(form.vars.users) or form.vars.number_of_reviews_per_user == 0 
                or (form.vars.number_of_reviews_per_user < 0 and not form.vars.incremental)):
            session.flash = T('No reviewing duties added.')
            redirect(URL('venues', 'managed_index'))
	n = c.number_of_submissions_per_reviewer
	c.update_record(number_of_submissions_per_reviewer = n + form.vars.number_of_reviews_per_user)
        # TODO(luca): this should be implemented in terms of a job queue
        user_list = db.user_list(form.vars.users)
        for m in user_list.email_list:
            current_asgn = db((db.reviewing_duties.user_email == m) &
                (db.reviewing_duties.venue_id == c.id)).select().first()
            if current_asgn == None:
                # Creates a new one.
                db.reviewing_duties.insert(user_email = m, venue_id = c.id, 
                    num_reviews = form.vars.number_of_reviews_per_user)
            else:
                # Update an existing one
                if form.vars.incremental:
                    new_number = max(0, current_asgn.num_reviews + form.vars.number_of_reviews_per_user)
                else:
                    new_number = form.vars.number_of_reviews_per_user
                current_asgn.update_record(num_reviews = new_number)
        db.commit()
        session.flash = T('The reviewing duties have been assigned.')
        redirect(URL('venues', 'managed_index'))
    venue_form = SQLFORM(db.venue, record=c, readonly=True)
    return dict(venue=c, form=form, vform=venue_form)
Example #12
0
def update_venue(id, form, old_managers, old_observers, old_submit_constraint, old_rate_constraint):
    """A venue is being updated.  We need to return a callback for the form,
    that will produce the proper update, taking into account the change in permissions."""
    # Managers.
    add_venue_to_user_managers(id, util.list_diff(form.vars.managers, old_managers))
    delete_venue_from_managers(id, util.list_diff(old_managers, form.vars.managers))
    # Observers.
    add_venue_to_user_observers(id, util.list_diff(form.vars.observers, old_observers))
    delete_venue_from_observers(id, util.list_diff(old_observers, form.vars.observers))
    # Submitters.
    if str(old_submit_constraint) != str(form.vars.submit_constraint):
        # We need to update.
        if old_submit_constraint != None:
            delete_venue_from_submitters(id, get_list_members(old_submit_constraint))
        if not util.is_none(form.vars.submit_constraint):
            user_list = get_list_members(form.vars.submit_constraint)
            add_venue_to_user_submit(id, user_list)
    # Raters.
    if str(old_rate_constraint) != str(form.vars.rate_constraint):
        # We need to update.
        if old_rate_constraint != None:
            delete_venue_from_raters(id, get_list_members(old_rate_constraint))
        if not util.is_none(form.vars.rate_constraint):
            add_venue_to_user_rate(id, get_list_members(form.vars.rate_constraint))