def stats_route(self, request, **kwargs): """ Shows the stats for each question. """ data = """<dl> <dt>Name<dt><dd>{name}<dd> <dt>Best grade<dt><dd>{best}<dd> <dt>Responses<dt><dd>{n_responses}<dd> <dt>Response items<dt><dd>{n_response_items}<dd> <dt>Correct responses<dt><dd>{n_correct}<dd> <dt>Mean grade responses<dt><dd>{mean}<dd> <dt>Context id</dt><dd>{context_id}</dd> </dl> """.format( context_id=self.default_context.id, name=self.title, best=self.best_final_grade(), mean=self.mean_final_grade(), n_correct=self.correct_responses().count(), n_response_items=self.response_items().count(), n_responses=self.responses.count(), ) # Renders content context = {'content_body': data, 'content_text': 'Stats'} return render(request, 'base.jinja2', context)
def login(request): context = { 'signin': AuthenticationForm(), 'signup': SignupForm(), 'signup_opt': SignupOptionalForm() } if request.method == 'POST': if request.POST['action-type'] == 'signup': form = SignupOptionalForm(request.POST) if not form.is_valid(): context['signup'] = SignupOptionalForm(request.POST) context['signup_opt'] = form context['default_tab'] = 1 else: context['signup_opt'] = SignupOptionalForm(request.POST) context['action'] = 'signup' context['default_tab'] = 1 response = views.signup( request, signup_form=SignupForm, template_name='cs_auth/login.jinja2', extra_context=context, ) # It redirects on success: we intercept add the extra # information if isinstance(response, http.HttpResponseRedirect): # Fill extra info in signup form aux = request.POST success_url = '/accounts/%s' % aux['username'] user = User.objects.get(username=aux['username']) user.first_name = aux['first_name'] user.last_name = aux['last_name'] # Fill extra profile info form = SignupOptionalForm(request.POST) form.is_valid() aux = form.cleaned_data user.profile.about_me = aux['about_me'] user.profile.gender = aux['gender'] user.profile.date_of_birth = aux['date_of_birth'] # Save modifications and go user.save() user.profile.save() return redirect(success_url) return response else: context['action'] = 'signin' return views.signin( request, template_name='cs_auth/login.jinja2', extra_context=context, ) return render(request, 'cs_auth/login.jinja2', context)
def course_subscribe(request): context = dict( user=request.user, courses=models.Course.objects .filter(is_active=True) .exclude(pk__in=request.user.enrolled_courses.all()) ) return render(request, 'cs_courses/course-subscribe.jinja2', context)
def login(request): context = {'signin': AuthenticationForm(), 'signup': SignupForm(), 'signup_opt': SignupOptionalForm()} if request.method == 'POST': if request.POST['action-type'] == 'signup': form = SignupOptionalForm(request.POST) if not form.is_valid(): context['signup'] = SignupOptionalForm(request.POST) context['signup_opt'] = form context['default_tab'] = 1 else: context['signup_opt'] = SignupOptionalForm(request.POST) context['action'] = 'signup' context['default_tab'] = 1 response = views.signup( request, signup_form=SignupForm, template_name='cs_auth/login.jinja2', extra_context=context, ) # It redirects on success: we intercept add the extra # information if isinstance(response, http.HttpResponseRedirect): # Fill extra info in signup form aux = request.POST success_url = '/accounts/%s' % aux['username'] user = User.objects.get(username=aux['username']) user.first_name = aux['first_name'] user.last_name = aux['last_name'] # Fill extra profile info form = SignupOptionalForm(request.POST) form.is_valid() aux = form.cleaned_data user.profile.about_me = aux['about_me'] user.profile.gender = aux['gender'] user.profile.date_of_birth = aux['date_of_birth'] # Save modifications and go user.save() user.profile.save() return redirect(success_url) return response else: context['action'] = 'signin' return views.signin( request, template_name='cs_auth/login.jinja2', extra_context=context, ) return render(request, 'cs_auth/login.jinja2', context)
def route_gradebook(self, request): user = request.user gradebook = self.get_gradebook(user) gradebook.title = _('Gradebook') context = { 'object': gradebook, 'short_description': gradebook.title, 'long_description': _('List of grades'), 'detail_object': gradebook, 'verbose_name': _('Gradebook'), } template = 'cs_questions/user_gradebook.jinja2' return render(request, template, context)
def response_list_route(self, request): """ Renders a list of responses """ user = request.user context = self.get_context(request) items = self.response_items(user=user, context='any') items = (x.get_real_instance() for x in items) context.update( question=self, object_list=items, ) return render(request, 'cs_questions/response-list.jinja2', context)
def view_edit_key(self, question, key): key = question.answer_keys.get(pk=key) self.context.update({ 'question': question, 'language': key.language, 'key': key, }) if self.request.method == 'POST': form = AnswerKeyEditForm(self.request.POST, instance=key) if form.is_valid(): key = form.save() key.update() return redirect('../../edit') else: form = AnswerKeyEditForm(instance=key) self.context['form'] = form return render(self.request, 'cs_questions/io/edit-key.jinja2', self.context)
def view_add_key(self, question): used_langs = question.answer_keys.select_related('language') languages = ProgrammingLanguage.objects.exclude(pk__in=used_langs) self.context.update(question=question, languages=languages) if self.request.method == 'POST': form = AnswerKeyAddForm(self.request.POST) if form.is_valid(): key = question.answer_keys.create( source=form.cleaned_data['source'], placeholder=form.cleaned_data['placeholder'], language=form.cleaned_data['language'], ) key.update() return redirect('../edit') else: form = AnswerKeyAddForm() self.context['form'] = form return render(self.request, 'cs_questions/io/add-key.jinja2', self.context)
def course_subscribe(request): context = dict( user=request.user, courses=models.Course.objects.filter(is_active=True).exclude( pk__in=request.user.enrolled_courses.all())) return render(request, 'cs_courses/course-subscribe.jinja2', context)