示例#1
0
文件: views.py 项目: zyczyc121/web
def index(request):
    active_users = request.session.get('active_users', active_user_count())

    over_courses = Course.objects.filter(
        end_datetime__lt=timezone.now()).order_by("-start_datetime")
    go_courses = Course.objects.filter(
        start_datetime__gt=timezone.now()).order_by("-start_datetime")
    in_courses = Course.objects.filter(
        start_datetime__lte=timezone.now(),
        end_datetime__gte=timezone.now()).order_by("-start_datetime")

    render_context = {
        "over_courses": over_courses,
        "go_courses": go_courses,
        "in_courses": in_courses,
        "over_num": over_courses.count(),
        "go_num": go_courses.count(),
        "in_num": in_courses.count(),
        "active_users": active_users,
    }

    if (request.user.is_authenticated()):
        render_context["tutor_courses"] = request.user.tutor_courses.all(
        ).order_by("-start_datetime")
        render_context["assistant_courses"] = request.user.ta_courses.all(
        ).order_by("-start_datetime")
        render_context["attend_courses"] = request.user.attend_courses.all(
        ).order_by("-start_datetime")
        render_context["tutor_num"] = render_context["tutor_courses"].count()
        render_context["assistant_num"] = render_context[
            "assistant_courses"].count()
        render_context["attend_num"] = render_context[
            "assistant_courses"].count()

    return render(request, "course/index.html", render_context)
示例#2
0
def view_user(request, id):
    u = get_object_or_404(User, pk=id)
    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/profile.html', {
        'view_otheruser': u,
        'self': False,
        'active_users': active_users
    })
示例#3
0
def profile(request):
    user = request.user
    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/profile.html', {
        'view_otheruser': user,
        'self': True,
        'active_users': active_users
    })
示例#4
0
def login(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('index')

    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)
            if user is None:
                try:
                    user_attempt = User.objects.get(email=username)
                    user = authenticate(username=user_attempt.username,
                                        password=password)
                except User.DoesNotExist:
                    user = None

                if user is None:
                    user = authenticate(username=username,
                                        password="******" +
                                        password)

            if user is not None:
                if user.info.status == UserInfo.PENDING:
                    activation = get_object_or_404(
                        UserModification,
                        user=user,
                        action=UserModification.ACTIVATION)
                    send_activation_mail(activation)
                    return HttpResponseRedirect(reverse('user:pending'))

                if not form.cleaned_data['remember']:
                    request.session.set_expiry(0)
                django_login(request, user)
                next_url = form.cleaned_data['next']
                if next_url == '':
                    return HttpResponseRedirect(reverse("index"))
                else:
                    return HttpResponseRedirect(next_url)
            else:
                # fall through; render login page
                form.add_error(None, _("Invalid username/email or password"))

    else:
        next = request.GET.get('next', '')

        form = LoginForm(initial={
            'next': next,
        })

    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/login.html', {
        'form': form,
        'active_users': active_users,
    })
示例#5
0
def edit_profile(request):
    if request.method == 'GET':
        user_tools = ','.join((tool.name for tool in request.user.tools.all()))
        user_interests = ','.join(
            (interest.name for interest in request.user.interests.all()))

        form = ProfileEditForm(instance=request.user.info,
                               initial={
                                   'interests': user_interests,
                                   'tools': user_tools
                               })
    else:
        form = ProfileEditForm(request.POST, instance=request.user.info)

        origin_organization = request.user.info.organization
        if form.is_valid():
            form.save()

            now_organization = request.user.info.organization
            if now_organization != origin_organization:
                user_modify = UserModifyProfile(
                    user=request.user,
                    action='organization',
                    modify_datetime=timezone.now(),
                    modify_before=origin_organization,
                    modify_after=now_organization,
                    remote_addr=get_ip(request),
                )
                user_modify.save()

            submit_interests = {
                x.strip()
                for x in form.cleaned_data['interests'].split(',')
                if len(x.strip()) > 0
            }
            if len(submit_interests) > 0:
                user_interests = request.user.interests
                update_skills(request.user, submit_interests, user_interests,
                              Interest)
            submit_tools = {
                x.strip()
                for x in form.cleaned_data['tools'].split(',')
                if len(x.strip()) > 0
            }
            if len(submit_tools) > 0:
                user_tools = request.user.tools
                update_skills(request.user, submit_tools, user_tools, Tool)
            return HttpResponseRedirect(reverse('user:profile'))

    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/edit_profile.html', {
        'form': form,
        'active_users': active_users
    })
示例#6
0
def index(request):
    active_competitions = Competition.objects.all().order_by("-start_datetime")
    active_users = request.session.get('active_users', active_user_count())
    active_courses = Course.objects.all().order_by("-start_datetime")

    return render(
        request, "index.html", {
            "active_competitions": active_competitions,
            "active_courses": active_courses,
            "active_users": active_users,
        })
示例#7
0
文件: views.py 项目: zyczyc121/web
    def get_context_data(self, **kwargs):
        context = super(ViewLeaderboard, self).get_context_data(**kwargs)
        context['active_users'] = self.request.session.get(
            'active_users', active_user_count())
        #context['course_rank'] = course_leaderboard_data(self.course)
        #context['course_rank'] = final_leaderboard_data(competition, competition.final_showwinners_count),(self.course)

        #messages.info(self.request, self.course.competition.name)
        context['course_rank'] = course_leaderboard_data(
            self.course.competition, self.course)
        #messages.info(self.request, self.course.name)
        return context
示例#8
0
def register(request):
    active_users = request.session.get('active_users', active_user_count())

    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            email = form.cleaned_data['email']
            display_name = form.cleaned_data['display_name']
            real_name = form.cleaned_data['real_name']
            organization = form.cleaned_data['organization']

            receive_update = form.cleaned_data['receive_update']

            user = User.objects.create_user(username=username,
                                            password=password,
                                            email=email,
                                            is_active=False)
            user_info = UserInfo(
                user=user,
                display_name=display_name,
                real_name=real_name,
                organization=organization,
                status=UserInfo.PENDING,
                receive_update=receive_update,
                remote_addr=get_ip(request),
            )
            activation = UserModification(user=user,
                                          key=random_str(64),
                                          expire_datetime=timezone.now() +
                                          datetime.timedelta(days=3),
                                          action=UserModification.ACTIVATION)

            user.save()
            user_info.save()
            activation.save()

            send_activation_mail(activation)
            return HttpResponseRedirect(reverse('user:confirm'))

    else:
        form = RegisterForm()
    return render(request, 'user/register.html', {
        'form': form,
        'active_users': active_users,
    })
示例#9
0
文件: views.py 项目: zyczyc121/web
    def get_context_data(self, **kwargs):
        context = super(ViewCourse, self).get_context_data(**kwargs)
        if is_tutor(self.user):
            context['all_courses'] = self.user.tutor_courses.all()
        else:
            context['all_courses'] = [self.course]

        context['course'] = self.course
        context['manage'] = (self.user == self.course.tutor)
        context['assistant'] = (self.course.teaching_assistants.filter(
            pk=self.user.pk).exists())
        context['active_users'] = self.request.session.get(
            'active_users', active_user_count())

        if context['signed_up']:
            context['stu_rank'] = stu_leaderboard_data(self.course.competition,
                                                       self.course, self.user)
        #context['team']
        return context
示例#10
0
def reset_password(request):
    if request.method == 'GET':
        key = request.GET.get('key', '')
        form = ResetPasswordForm(initial={'key': key})
    else:
        form = ResetPasswordForm(request.POST)
        if form.is_valid():
            mod = get_object_or_404(UserModification,
                                    action=UserModification.RESET_PASSWORD,
                                    key=form.cleaned_data['key'])
            password = form.cleaned_data['password']
            mod.user.password = make_password(password)
            mod.user.save()
            mod.delete()
            messages.info(request, _('Password has been reset'))
            return HttpResponseRedirect(reverse('user:login'))

    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/reset_password.html', {
        'form': form,
        'active_users': active_users,
    })
示例#11
0
def forget_password(request):
    if request.method == 'POST':
        form = ForgetPasswordForm(request.POST)
        if form.is_valid():
            email = form.cleaned_data['email']
            try:
                user = User.objects.get(email=email)
                usermod = UserModification(
                    user=user,
                    action=UserModification.RESET_PASSWORD,
                    key=random_str(64),
                    expire_datetime=timezone.now() +
                    timezone.timedelta(days=3),
                )
                send_reset_password_mail(email, usermod.key)
                usermod.save()
                messages.info(
                    request,
                    _("A password reset message has been sent to ") + email +
                    ".")
                return HttpResponseRedirect(reverse("index"))

            except User.DoesNotExist:
                messages.warning(
                    request,
                    _("Sorry. This email address hasn't been registered."))
            except Exception as e:
                print(e)
                messages.error(request,
                               _("An error occur when sending reset mail"))
    else:
        form = ForgetPasswordForm()

    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/forget_password.html', {
        'form': form,
        'active_users': active_users,
    })
示例#12
0
def privacy(request):
    active_users = request.session.get('active_users', active_user_count())

    return render(request, "privacy.html", {
        "active_users": active_users,
    })
示例#13
0
文件: views.py 项目: zyczyc121/web
 def get_context_data(self, **kwargs):
     context = super(ViewStudents, self).get_context_data(**kwargs)
     context['active_users'] = self.request.session.get(
         'active_users', active_user_count())
     return context
示例#14
0
def about(request):
    active_users = request.session.get('active_users', active_user_count())

    return render(request, "about.html", {
        "active_users": active_users,
    })
示例#15
0
def confirm(request):
    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/confirm.html', {'active_users': active_users})
示例#16
0
def pending(request):
    active_users = request.session.get('active_users', active_user_count())
    return render(request, 'user/pending.html', {'active_users': active_users})
示例#17
0
def terms(request):
    active_users = request.session.get('active_users', active_user_count())

    return render(request, "terms.html", {
        "active_users": active_users,
    })