Exemplo n.º 1
0
    def send_courses(self, courses, send_to_editors=False, send_to_contributors=False, send_to_due_participants=False, send_to_all_participants=False):
        from evap.evaluation.models import UserProfile
        # pivot course-user relationship
        user_course_map = {}
        for course in courses:
            for user in [user for user in self.recipient_list_for_course(course, send_to_editors, send_to_contributors, send_to_due_participants, send_to_all_participants) if user.email != ""]:
                if user in user_course_map:
                    user_course_map[user].append(course)
                else:
                    user_course_map[user] = [course]

        # send emails on a per user basis
        for user, courses in user_course_map.iteritems():

            cc = []
            for course in courses:
                # if email will be sent to editors, also send to all their delegates in CC
                if send_to_editors:
                    if course.contributions.filter(can_edit=True, contributor=user).exists():
                        cc.extend([p.email for p in UserProfile.get_for_user(user).delegates.all() if p.email])
                        break
                # send email to all cc users of the current user
                cc.extend([p.email for p in UserProfile.get_for_user(user).cc_users.all() if p.email])

            mail = EmailMessage(
                subject = self.render_string(self.subject, {'user': user, 'courses': courses}),
                body = self.render_string(self.body, {'user': user, 'courses': courses}),
                to = [user.email],
                cc = cc,
                bcc = [a[1] for a in settings.MANAGERS],
                headers = {'Reply-To': settings.REPLY_TO_EMAIL})
            mail.send(False)
Exemplo n.º 2
0
    def send_courses(self, courses, send_to_editors=False, send_to_contributors=False, send_to_due_participants=False, send_to_all_participants=False):
        from evap.evaluation.models import UserProfile
        # pivot course-user relationship
        user_course_map = {}
        for course in courses:
            for user in [user for user in self.recipient_list_for_course(course, send_to_editors, send_to_contributors, send_to_due_participants, send_to_all_participants) if user.email != ""]:
                if user in user_course_map:
                    user_course_map[user].append(course)
                else:
                    user_course_map[user] = [course]

        # send emails on a per user basis
        for user, courses in user_course_map.iteritems():

            cc = []
            for course in courses:
                # if email will be sent to editors, also send to all their delegates in CC
                if send_to_editors:
                    if course.contributions.filter(can_edit=True, contributor=user).exists():
                        cc.extend([p.email for p in UserProfile.get_for_user(user).delegates.all() if p.email])
                        break
                # send email to all cc users of the current user
                cc.extend([p.email for p in UserProfile.get_for_user(user).cc_users.all() if p.email])

            mail = EmailMessage(
                subject = self.render_string(self.subject, {'user': user, 'courses': courses}),
                body = self.render_string(self.body, {'user': user, 'courses': courses}),
                to = [user.email],
                cc = cc,
                bcc = [a[1] for a in settings.MANAGERS],
                headers = {'Reply-To': settings.REPLY_TO_EMAIL})
            mail.send(False)
Exemplo n.º 3
0
def user_index(request):
    users = User.objects.order_by("last_name", "first_name", "username")

    filter = request.GET.get('filter')
    if filter == "fsr":
        users = users.filter(is_staff=True)
    elif filter == "responsibles":
        users = [user for user in users if UserProfile.get_for_user(user).is_responsible]
    elif filter == "delegates":
        users = [user for user in users if UserProfile.get_for_user(user).is_delegate]

    return render_to_response("fsr_user_index.html", dict(users=users, filter=filter), context_instance=RequestContext(request))
Exemplo n.º 4
0
def user_index(request):
    users = User.objects.order_by("last_name", "first_name", "username")
    
    filter = request.GET.get('filter')
    if filter == "fsr":
        users = users.filter(is_staff=True)
    elif filter == "responsibles":
        users = [user for user in users if UserProfile.get_for_user(user).is_responsible]
    elif filter == "delegates":
        users = [user for user in users if UserProfile.get_for_user(user).is_delegate]
    
    return render_to_response("fsr_user_index.html", dict(users=users, filter=filter), context_instance=RequestContext(request))
Exemplo n.º 5
0
 def handle(self, *args, **options):
     try:
         # Get a username
         username = read_value('Username: '******'Email address: ', is_valid_email)
         
         # Get password if it should be set
         password = read_value_hidden('Password: '******'Yes', 'yes'] else False
         
         # create user
         user = User.objects.create(username=username, email=email, is_staff=is_fsr, is_superuser=is_fsr)
         if not password is None:
             user.set_password(password)
             user.save()
         profile = UserProfile.get_for_user(user)
         profile.save()
         
     except KeyboardInterrupt:
         sys.stderr.write("\nOperation cancelled.\n")
         sys.exit(1)
Exemplo n.º 6
0
    def handle(self, *args, **options):
        try:
            # Get a username
            username = read_value('Username: '******'Email address: ', is_valid_email)

            # Get password if it should be set
            password = read_value_hidden('Password: '******'Yes', 'yes'] else False

            # create user
            user = User.objects.create(username=username, email=email, is_staff=is_fsr, is_superuser=is_fsr)
            if not password is None:
                user.set_password(password)
                user.save()
            profile = UserProfile.get_for_user(user)
            profile.save()

        except KeyboardInterrupt:
            sys.stderr.write("\nOperation cancelled.\n")
            sys.exit(1)
Exemplo n.º 7
0
def user_delete(request, user_id):
    user = get_object_or_404(User, id=user_id)

    if UserProfile.get_for_user(user).can_fsr_delete:
        if request.method == 'POST':
            user.delete()
            return redirect('evap.fsr.views.user_index')
        else:
            return render_to_response("fsr_user_delete.html",
                                      dict(user=user),
                                      context_instance=RequestContext(request))
    else:
        messages.add_message(
            request, messages.ERROR,
            _("The user '%s' cannot be deleted, because he lectures courses.")
            % UserProfile.get_for_user(user).full_name)
        return redirect('evap.fsr.views.user_index')
Exemplo n.º 8
0
Arquivo: forms.py Projeto: Nef10/EvaP
    def save(self, *args, **kw):
        # first save the user, so that the profile gets created for sure
        self.instance.user.first_name = self.cleaned_data.get('first_name')
        self.instance.user.last_name = self.cleaned_data.get('last_name')
        self.instance.user.email = self.cleaned_data.get('email')
        self.instance.user.save()
        self.instance = UserProfile.get_for_user(self.instance.user)

        super(UserForm, self).save(*args, **kw)
Exemplo n.º 9
0
    def save(self, *args, **kw):
        # first save the user, so that the profile gets created for sure
        self.instance.user.first_name = self.cleaned_data.get('first_name')
        self.instance.user.last_name = self.cleaned_data.get('last_name')
        self.instance.user.email = self.cleaned_data.get('email')
        self.instance.user.save()
        self.instance = UserProfile.get_for_user(self.instance.user)

        super(UserForm, self).save(*args, **kw)
Exemplo n.º 10
0
 def store_in_database(self):
     user = User(username=self.username,
                 first_name=self.first_name,
                 last_name=self.last_name,
                 email=self.email)
     user.save()
     profile = UserProfile.get_for_user(user=user)
     profile.title = self.title
     profile.save()
     return user
Exemplo n.º 11
0
Arquivo: views.py Projeto: Nef10/EvaP
def user_edit(request, user_id):
    user = get_object_or_404(User, id=user_id)
    form = UserForm(request.POST or None, request.FILES or None, instance=UserProfile.get_for_user(user))

    if form.is_valid():
        form.save()
        messages.success(request, _("Successfully updated user."))
        return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form, object=user), context_instance=RequestContext(request))
Exemplo n.º 12
0
 def store_in_database(self):
     user = User(username=self.username,
                 first_name=self.first_name,
                 last_name=self.last_name,
                 email=self.email)
     user.save()
     profile = UserProfile.get_for_user(user=user)
     profile.title = self.title
     profile.save()
     return user
Exemplo n.º 13
0
def user_delete(request, user_id):
    user = get_object_or_404(User, id=user_id)
    
    if UserProfile.get_for_user(user).can_fsr_delete:
        if request.method == 'POST':
            user.delete()
            return redirect('evap.fsr.views.user_index')
        else:
            return render_to_response("fsr_user_delete.html", dict(user=user), context_instance=RequestContext(request))
    else:
        messages.add_message(request, messages.ERROR, _("The user '%s' cannot be deleted, because he lectures courses.") % UserProfile.get_for_user(user).full_name)
        return redirect('evap.fsr.views.user_index')
Exemplo n.º 14
0
Arquivo: forms.py Projeto: Bartzi/EvaP
    def _post_clean(self, *args, **kw):
        # first save the user, so that the profile gets created for sure
        self.instance.user.username = self.cleaned_data.get('username')
        self.instance.user.first_name = self.cleaned_data.get('first_name')
        self.instance.user.last_name = self.cleaned_data.get('last_name')
        self.instance.user.email = self.cleaned_data.get('email')
        self.instance.user.is_staff = self.cleaned_data.get('is_staff')
        self.instance.user.is_superuser = self.cleaned_data.get('is_superuser')
        self.instance.user.save()
        self.instance.user.represented_users = self.cleaned_data.get('represented_users')
        self.instance = UserProfile.get_for_user(self.instance.user)

        super(UserForm, self)._post_clean(*args, **kw)
Exemplo n.º 15
0
Arquivo: tests.py Projeto: Bartzi/EvaP
    def test_login_key(self):
        environ = self.app.extra_environ
        self.app.extra_environ = {}
        self.assertRedirects(self.app.get(reverse("evap.results.views.index"), extra_environ={}), "/?next=/results/")
        self.app.extra_environ = environ

        user = User.objects.all()[0]
        userprofile = UserProfile.get_for_user(user)
        userprofile.generate_login_key()
        userprofile.save()

        url_with_key = reverse("evap.results.views.index") + "?userkey=%s" % userprofile.login_key
        self.app.get(url_with_key)
Exemplo n.º 16
0
Arquivo: tools.py Projeto: Nef10/EvaP
def create_contributor_questionnaires(form_groups_items):
    contributor_questionnaires = []
    errors = []
    for contribution, form_group in form_groups_items:
        if contribution.is_general:
            continue
        contributor = contribution.contributor
        user_profile = UserProfile.get_for_user(contributor)
        contributor_questionnaires.append((user_profile, form_group.values()));

        if any(form.errors for form in form_group.values()):
                errors.append(contributor.id)

    return contributor_questionnaires, errors
Exemplo n.º 17
0
    def clean_email(self):
        email = self.cleaned_data.get('email')

        if not UserProfile.email_needs_login_key(email):
            raise forms.ValidationError(_(u"HPI users cannot request login keys. Please login using your domain credentials."))

        try:
            user = User.objects.get(email__iexact=email)
            self.user_cache = user
            self.profile_cache = UserProfile.get_for_user(user)
        except User.DoesNotExist:
            raise forms.ValidationError(_(u"No user with this email address was found. Please make sure to enter the email address already known to the university office."))

        return email
Exemplo n.º 18
0
def user_edit(request, user_id):
    user = get_object_or_404(User, id=user_id)
    form = UserForm(request.POST or None, request.FILES or None, instance=UserProfile.get_for_user(user))

    if form.is_valid():
        form.save()

        messages.add_message(request, messages.INFO, _("Successfully updated user."))

        if "filter" in request.GET:
            return custom_redirect('evap.fsr.views.user_index', filter=request.GET['filter'])
        else:
            return redirect('evap.fsr.views.user_index')
    else:
        return render_to_response("fsr_user_form.html", dict(form=form, object=user), context_instance=RequestContext(request))
Exemplo n.º 19
0
    def update(self, user):
        profile = UserProfile.get_for_user(user=user)

        if not user.first_name:
            user.first_name = self.first_name
        if not user.last_name:
            user.last_name = self.last_name
        if not user.email:
            user.email = self.email
        if not profile.title:
            profile.title = self.title
        if profile.needs_login_key:
            profile.refresh_login_key()

        user.save()
        profile.save()
Exemplo n.º 20
0
    def test_login_key(self):
        environ = self.app.extra_environ
        self.app.extra_environ = {}
        self.assertRedirects(
            self.app.get(reverse("evap.results.views.index"),
                         extra_environ={}), "/?next=/results/")
        self.app.extra_environ = environ

        user = User.objects.all()[0]
        userprofile = UserProfile.get_for_user(user)
        userprofile.generate_login_key()
        userprofile.save()

        url_with_key = reverse(
            "evap.results.views.index") + "?userkey=%s" % userprofile.login_key
        self.app.get(url_with_key)
Exemplo n.º 21
0
    def update(self, user):
        profile = UserProfile.get_for_user(user=user)

        if not user.first_name:
            user.first_name = self.first_name
        if not user.last_name:
            user.last_name = self.last_name
        if not user.email:
            user.email = self.email
        if not profile.title:
            profile.title = self.title
        if profile.needs_login_key:
            profile.refresh_login_key()

        user.save()
        profile.save()
Exemplo n.º 22
0
    def clean_email(self):
        email = self.cleaned_data.get('email')

        if not UserProfile.email_needs_login_key(email):
            raise forms.ValidationError(
                _(u"HPI users cannot request login keys. Please login using your domain credentials."
                  ))

        try:
            user = User.objects.get(email__iexact=email)
            self.user_cache = user
            self.profile_cache = UserProfile.get_for_user(user)
        except User.DoesNotExist:
            raise forms.ValidationError(
                _(u"No user with this email address was found. Please make sure to enter the email address already known to the university office."
                  ))

        return email
Exemplo n.º 23
0
    def get_contributors_with_questionnaires(self, course):
        for ccm in self.get('course_category_mapping', course_id=course.id):
            for ccm_to_staff in self.get('ccm_to_staff', ccm_id=ccm.id):
                # staff --> User
                staff = self.get_one('staff', id=ccm_to_staff.staff_id)
                user = self.user_from_db(staff.loginName)

                # import name
                profile = UserProfile.get_for_user(user)
                name_parts = unicode(staff.name).split()
                if name_parts[0].startswith("Dr"):
                    user.last_name = " ".join(name_parts[1:])
                    profile.title = name_parts[0]
                elif name_parts[0] == "Prof.":
                    user.last_name = " ".join(name_parts[2:])
                    profile.title = " ".join(name_parts[:2])
                elif name_parts[0].startswith("Prof"):
                    user.last_name = " ".join(name_parts[1:])
                    profile.title = name_parts[0]
                elif len(name_parts) == 2:
                    user.first_name = name_parts[0]
                    user.last_name = name_parts[1]
                user.save()
                profile.save()

                # TODO: import name?
                self.staff_cache[int(staff.id)] = user
                try:
                    topic_template = self.get_one(
                        'topic_template',
                        course_category_id=ccm.course_category_id,
                        questionnaire_template_id=course.evaluation_id,
                        per_person="1")

                    questionnaire = self.questionnaire_cache[int(
                        topic_template.id)]

                    yield user, questionnaire
                except NotOneException:
                    logger.warn(
                        "Skipping questionnaire for contributor %r in course %r.",
                        user, course.name)
Exemplo n.º 24
0
Arquivo: forms.py Projeto: Bartzi/EvaP
    def __init__(self, *args, **kwargs):
        super(CourseForm, self).__init__(*args, **kwargs)

        self.fields['vote_start_date'].localize = True
        self.fields['vote_end_date'].localize = True
        self.fields['kind'].widget = forms.Select(choices=[(a, a) for a in Course.objects.values_list('kind', flat=True).order_by().distinct()])
        self.fields['degree'].widget = forms.Select(choices=[(a, a) for a in Course.objects.values_list('degree', flat=True).order_by().distinct()])
        self.fields['participants'].queryset = User.objects.order_by("last_name", "first_name", "username")
        self.fields['participants'].help_text = ""

        if self.instance.general_contribution:
            self.fields['general_questions'].initial = [q.pk for q in self.instance.general_contribution.questionnaires.all()]

        self.fields['last_modified_time_2'].initial = self.instance.last_modified_time
        self.fields['last_modified_time_2'].widget.attrs['readonly'] = True
        if self.instance.last_modified_user:
            self.fields['last_modified_user_2'].initial = UserProfile.get_for_user(self.instance.last_modified_user).full_name
        self.fields['last_modified_user_2'].widget.attrs['readonly'] = True

        if self.instance.state == "inEvaluation":
            self.fields['vote_start_date'].widget.attrs['readonly'] = True
            self.fields['vote_end_date'].widget.attrs['readonly'] = True
Exemplo n.º 25
0
 def get_contributors_with_questionnaires(self, course):
     for ccm in self.get('course_category_mapping', course_id=course.id):
         for ccm_to_staff in self.get('ccm_to_staff', ccm_id=ccm.id):
             # staff --> User
             staff = self.get_one('staff', id=ccm_to_staff.staff_id)
             user = self.user_from_db(staff.loginName)
             
             # import name
             profile = UserProfile.get_for_user(user)
             name_parts = unicode(staff.name).split()
             if name_parts[0].startswith("Dr"):
                 user.last_name = " ".join(name_parts[1:])
                 profile.title = name_parts[0]
             elif name_parts[0] == "Prof.":
                 user.last_name = " ".join(name_parts[2:])
                 profile.title = " ".join(name_parts[:2])
             elif name_parts[0].startswith("Prof"):
                 user.last_name = " ".join(name_parts[1:])
                 profile.title = name_parts[0]
             elif len(name_parts) == 2:
                 user.first_name = name_parts[0]
                 user.last_name = name_parts[1]
             user.save()
             profile.save()
                 
             # TODO: import name?
             self.staff_cache[int(staff.id)] = user
             try:
                 topic_template = self.get_one('topic_template',
                                               course_category_id=ccm.course_category_id,
                                               questionnaire_template_id=course.evaluation_id,
                                               per_person="1")
                 
                 questionnaire = self.questionnaire_cache[int(topic_template.id)]
                 
                 yield user, questionnaire
             except NotOneException:
                 logger.warn("Skipping questionnaire for contributor %r in course %r.", user, course.name)
Exemplo n.º 26
0
Arquivo: views.py Projeto: cyroxx/EvaP
def vote(request, course_id):
    # retrieve course and make sure that the user is allowed to vote
    course = get_object_or_404(Course, id=course_id)
    if not course.can_user_vote(request.user):
        raise PermissionDenied

    # build forms
    form_group = {}
    contributors_with_questionnaires = questionnaires_and_contributions_by_contributor(course)
    for contributor in contributors_with_questionnaires:
        for questionnaire, contribution in contributors_with_questionnaires[contributor]:
            form = QuestionsForm(request.POST or None, contribution=contribution, questionnaire=questionnaire)
            if form.contribution.contributor == request.user:
                continue # users shall not vote about themselves
            if not contributor in form_group:
                form_group[contributor] = SortedDict()
            form_group[contributor][(contribution, questionnaire)] = form

    for contributor in form_group:
        for (contribution, questionnaire), form in form_group[contributor].items():
            for question in questionnaire.question_set.all():
                identifier = make_form_identifier(contribution, questionnaire, question)

    for contributor in form_group:
        for form in form_group[contributor].values():
            if form.is_valid():
                continue
            course_forms = []
            contributor_questionnaires = {}
            errors = []

            for form in form_group[None].values():
                course_forms.append(form)

            for contributor in form_group:
                if contributor == None:
                    continue
                user_profile = UserProfile.get_for_user(contributor)
                contributor_questionnaires[user_profile] = form_group[contributor].values()
                for form in form_group[contributor].values():
                    if form.errors:
                        errors.append(contributor.id)

            return render_to_response(
                "student_vote.html",
                dict(course_forms=course_forms,
                     contributor_questionnaires=contributor_questionnaires,
                     errors=errors,
                     course=course),
                context_instance=RequestContext(request))

    # all forms are valid
    # begin vote operation
    with transaction.commit_on_success():
        for contributor in form_group:
            for (contribution, questionnaire), form in form_group[contributor].items():
                for question in questionnaire.question_set.all():
                    identifier = make_form_identifier(contribution, questionnaire, question)
                    value = form.cleaned_data.get(identifier)

                    if type(value) in [str, unicode]:
                        value = value.strip()

                    if value == 6: #no answer
                        value = None

                    # store the answer if one was given
                    if value:
                        question.answer_class.objects.create(
                            contribution=contribution,
                            question=question,
                            answer=value)

        # remember that the user voted already
        course.voters.add(request.user)

    messages.add_message(request, messages.INFO, _("Your vote was recorded."))
    return redirect('evap.student.views.index')
Exemplo n.º 27
0
def index(request):
    """Main entry page into EvaP providing all the login options available. THe username/password
       login is thought to be used for internal users, e.g. by connecting to a LDAP directory.
       The login key mechanism is meant to be used to include external participants, e.g. visiting
       students or visiting contributors.
    """

    # parse the form data into the respective form
    submit_type = request.POST.get("submit_type", "no_submit")
    new_key_form = NewKeyForm(request.POST if submit_type ==
                              "new_key" else None)
    login_key_form = LoginKeyForm(request.POST if submit_type ==
                                  "login_key" else None)
    login_username_form = LoginUsernameForm(
        request, request.POST if submit_type == "login_username" else None)

    # process form data
    if request.method == 'POST':
        if new_key_form.is_valid():
            # user wants a new login key
            profile = new_key_form.get_profile()
            profile.generate_login_key()
            profile.save()

            EmailTemplate.get_login_key_template().send_user(
                new_key_form.get_user())

            messages.success(request,
                             _(u"Successfully sent email with new login key."))
        elif login_key_form.is_valid():
            # user would like to login with a login key and passed key test
            auth_login(request, login_key_form.get_user())
        elif login_username_form.is_valid():
            # user would like to login with username and password and passed password test
            auth_login(request, login_username_form.get_user())

            # clean up our test cookie
            if request.session.test_cookie_worked():
                request.session.delete_test_cookie()

    # if not logged in by now, render form
    if not request.user.is_active:
        # set test cookie to verify whether they work in the next step
        request.session.set_test_cookie()

        return render_to_response("index.html",
                                  dict(
                                      new_key_form=new_key_form,
                                      login_key_form=login_key_form,
                                      login_username_form=login_username_form),
                                  context_instance=RequestContext(request))
    else:
        # check for redirect variable
        next = request.GET.get("next", None)
        if not next is None:
            if next.startswith("/fsr/"):
                if request.user.is_staff:
                    return redirect(next)
            elif next.startswith("/contributor/"):
                if UserProfile.get_for_user(request.user).is_contributor:
                    return redirect(next)
            else:
                return redirect(next)

        # redirect user to appropriate start page
        if request.user.is_staff:
            return redirect('evap.fsr.views.index')
        elif UserProfile.get_for_user(request.user).is_editor_or_delegate:
            return redirect('evap.contributor.views.index')
        else:
            return redirect('evap.student.views.index')
Exemplo n.º 28
0
Arquivo: auth.py Projeto: Nef10/EvaP
 def check_user(user):
     if not user.is_authenticated():
         return False
     return (UserProfile.get_for_user(user=user).enrolled_in_courses)
Exemplo n.º 29
0
Arquivo: auth.py Projeto: Nef10/EvaP
 def check_user(user):
     from evap.rewards.tools import can_user_use_reward_points
     if not user.is_authenticated():
         return False
     return can_user_use_reward_points(UserProfile.get_for_user(user=user))
Exemplo n.º 30
0
 def label_from_instance(self, obj):
     return UserProfile.get_for_user(obj).full_name
Exemplo n.º 31
0
 def check_user(user):
     if not user.is_authenticated():
         return False
     return UserProfile.get_for_user(user=user).is_editor
Exemplo n.º 32
0
Arquivo: auth.py Projeto: Bartzi/EvaP
 def check_user(user):
     if not user.is_authenticated():
         return False
     return UserProfile.get_for_user(user=user).is_editor
Exemplo n.º 33
0
def index(request):
    """Main entry page into EvaP providing all the login options available. THe username/password 
       login is thought to be used for internal users, e.g. by connecting to a LDAP directory.
       The login key mechanism is meant to be used to include external participants, e.g. visiting 
       students or visiting contributors.
    """

    # parse the form data into the respective form
    submit_type = request.POST.get("submit_type", "no_submit")
    new_key_form = NewKeyForm(request.POST if submit_type == "new_key" else None)
    login_key_form = LoginKeyForm(request.POST if submit_type == "login_key" else None)
    login_username_form = LoginUsernameForm(request, request.POST if submit_type == "login_username" else None)

    # process form data
    if request.method == 'POST':
        if new_key_form.is_valid():
            # user wants a new login key
            profile = new_key_form.get_profile()
            profile.generate_login_key()
            profile.save()
            
            EmailTemplate.get_login_key_template().send_user(new_key_form.get_user())
            
            messages.success(request, _(u"Successfully sent email with new login key."))
        elif login_key_form.is_valid():
            # user would like to login with a login key and passed key test
            auth_login(request, login_key_form.get_user())
        elif login_username_form.is_valid():
            # user would like to login with username and password and passed password test
            auth_login(request, login_username_form.get_user())

            # clean up our test cookie
            if request.session.test_cookie_worked():
                request.session.delete_test_cookie()
    
    # if not logged in by now, render form
    if not request.user.is_active:
        # set test cookie to verify whether they work in the next step
        request.session.set_test_cookie()

        return render_to_response("index.html", dict(new_key_form=new_key_form, login_key_form=login_key_form, login_username_form=login_username_form), context_instance=RequestContext(request))
    else:
        # check for redirect variable
        next = request.GET.get("next", None)
        if not next is None:
            if next.startswith("/fsr/"):
                if request.user.is_staff:
                    return redirect(next)
            elif next.startswith("/contributor/"):
                if UserProfile.get_for_user(request.user).is_contributor:
                    return redirect(next)
            else:
                return redirect(next)

        # redirect user to appropriate start page
        if request.user.is_staff:
            return redirect('evap.fsr.views.index')
        elif UserProfile.get_for_user(request.user).is_editor_or_delegate:
            return redirect('evap.contributor.views.index')
        else:
            return redirect('evap.student.views.index')
Exemplo n.º 34
0
 def image(self):
     return UserProfile.get_for_user(
         self.contribution.contributor
     ).picture if self.contribution.contributor else None
Exemplo n.º 35
0
 def label_from_instance(self, obj):
     return UserProfile.get_for_user(obj).full_name
Exemplo n.º 36
0
 def image(self):
     return UserProfile.get_for_user(self.contribution.contributor).picture if self.contribution.contributor else None