Exemplo n.º 1
0
def setPreferences(request):
    lecture = request.context.lecture
    times = lecture.prepareTimePreferences(user=request.user)
    row = 1
    tps = []
    while 'time-%i' % row in request.POST:
        time = types.TutorialTime(request.POST['time-%i' % row])
        tp = models.getOrCreate(models.TimePreference, request.db, (lecture.id, request.user.id, time))
        tp.penalty = int(request.POST['pref-%i' % row])
        tps.append(tp)
        row +=  1
    if lecture.minimum_preferences:
        valid = len([tp for tp in tps if tp.penalty < 100]) >= lecture.minimum_preferences
    else:
        #TODO: Works not for just one tutorial!
        min_number_of_times = len(tps)/100.0+1
        penalty_count = sum([1.0/tp.penalty for tp in tps])
        valid = penalty_count > min_number_of_times
    if not valid:
        request.db.rollback()
        request.session.flash('Fehler: Sie haben zu wenige Zeiten ausgewählt', queue='errors')
    else:
        request.db.commit()
        request.session.flash('Präferenzen gespeichert.', queue='messages')
    return HTTPFound(location=request.route_url('lecture_view', lecture_id = lecture.id))
Exemplo n.º 2
0
def setPreferences(request):
    lecture = request.context.lecture
    times = lecture.prepareTimePreferences(user=request.user)
    row = 1
    tps = []
    while 'time-%i' % row in request.POST:
        time = types.TutorialTime(request.POST['time-%i' % row])
        tp = models.getOrCreate(models.TimePreference, request.db,
                                (lecture.id, request.user.id, time))
        tp.penalty = int(request.POST['pref-%i' % row])
        tps.append(tp)
        row += 1
    if lecture.minimum_preferences:
        valid = len(filter(lambda tp: tp.penalty < 100,
                           tps)) >= lecture.minimum_preferences
    else:
        #TODO: Works not for just one tutorial!
        min_number_of_times = len(tps) / 100.0 + 1
        penalty_count = sum([1.0 / tp.penalty for tp in tps])
        valid = penalty_count > min_number_of_times
    if not valid:
        request.db.rollback()
        request.session.flash(u'Fehler: Sie haben zu wenige Zeiten ausgewählt',
                              queue='errors')
    else:
        request.db.commit()
        request.session.flash(u'Präferenzen gespeichert.', queue='messages')
    return HTTPFound(
        location=request.route_url('lecture_view', lecture_id=lecture.id))