Example #1
0
def create(request):
    type = request.GET.get('type', Problem.MULTIPLE_CHOICE)
    if type == Problem.MULTIPLE_CHOICE:
        Form = MultipleChoiceProblemForm
    else:
        Form = ShortAnswerProblemForm
    if request.method == 'POST':
        form = Form(request.POST)
        if form.is_valid():
            if type == Problem.MULTIPLE_CHOICE:
                problem = Problem.from_multiple_choice_form(form)
            else:
                problem = Problem.from_short_answer_form(form)
            # get user id
            auth_service = user_service_container.load(AuthService.__name__)
            assert isinstance(auth_service,AuthService)
            user_id = auth_service.get_value("_id",request.session)
            problem.creator_id = user_id

            problem_service = lc_service_container.load(ProblemService.__name__)
            assert isinstance(problem_service, ProblemService)
            problem_id = problem_service.insert(problem)
            return HttpResponseRedirect(reverse('problem.read', args=[problem_id]))
    else:
        form = Form()
    available_types = {
        'MC': Problem.MULTIPLE_CHOICE,
        'SA': Problem.SHORT_ANSWER
    }
    return render(request, "problem/create.html", {'form': form, 'type': type, 'available_types': available_types})
Example #2
0
def confirm_register(request, _id):
    user_service = user_service_container.load(UserService.__name__)
    assert (isinstance(user_service, UserService))
    user = user_service.find_by_id(_id=_id)
    if user is None:
        return HttpResponseNotFound("User doesn't exist")
    else:
        return render(request, 'home/confirm_register.html', {'user': user})
Example #3
0
 def do_filter(request, **kwargs):
     auth_service = user_service_container.load(AuthService.__name__)
     assert (isinstance(auth_service, AuthService))
     if not auth_service.is_logged_in(request.session):
         return HttpResponseRedirect(reverse('login') + "?next=" + request.path + "")
     else:
         if not (self.min_role is None) and not auth_service.is_authorized_for(request.session, self.min_role):
             return HttpResponseForbidden()
         else:
             return f(request, **kwargs)
Example #4
0
def read(request, _id):
    problem_service = lc_service_container.load(ProblemService.__name__)
    user_service = user_service_container.load(UserService.__name__)
    assert (isinstance(problem_service, ProblemService))
    assert (isinstance(user_service, UserService))
    problem = problem_service.find_by_id(_id)
    if problem is None:
        return HttpResponseNotFound()
    else:
        user = user_service.find_by_id(problem.creator_id)
        return render(request, get_template("read.html"), {"problem": problem, "user": user})
Example #5
0
 def do_filter(request, **kwargs):
     auth_service = user_service_container.load(AuthService.__name__)
     assert (isinstance(auth_service, AuthService))
     if not auth_service.is_logged_in(request.session):
         return HttpResponseRedirect(
             reverse('login') + "?next=" + request.path + "")
     else:
         if not (self.min_role is
                 None) and not auth_service.is_authorized_for(
                     request.session, self.min_role):
             return HttpResponseForbidden()
         else:
             return f(request, **kwargs)
Example #6
0
def read(request, _id):
    problem_service = lc_service_container.load(ProblemService.__name__)
    user_service = user_service_container.load(UserService.__name__)
    assert (isinstance(problem_service, ProblemService))
    assert (isinstance(user_service, UserService))
    problem = problem_service.find_by_id(_id)
    if problem is None:
        return HttpResponseNotFound()
    else:
        user = user_service.find_by_id(problem.creator_id)
        return render(request, get_template("read.html"), {
            "problem": problem,
            "user": user
        })
Example #7
0
def login(request):
    login_success = False
    if request.method == 'POST':
        form = forms.LoginForm(request.POST)
        if form.is_valid():
            auth_service = user_service_container.load(AuthService.__name__)
            assert (isinstance(auth_service, AuthService))
            user = auth_service.attempt(email=form.cleaned_data['email'],
                                        password=form.cleaned_data['password'])
            if user is None:
                form.add_error(None, "Invalid email/password")
            else:
                auth_service.login(user, request.session)
                next_url = request.GET.get('next', reverse('home'))
                return HttpResponseRedirect(next_url)

    else:
        form = forms.LoginForm()
    if not login_success:
        return render(request, 'home/login.html', {'form': form})
    else:
        return HttpResponse("login_success")
Example #8
0
def register(request):
    register_success = False
    user = None
    if request.method == 'POST':
        form = forms.RegisterForm(request.POST)
        if form.is_valid():
            user_service = user_service_container.load(UserService.__name__)
            assert (isinstance(user_service, UserService))
            if form.cleaned_data['password'] != form.cleaned_data[
                    'confirm_password']:
                form.add_error("confirm_password", "Password doesn't match")
            elif user_service.find_by_email(
                    email=form.cleaned_data['email']) is None:
                _id = user_service.add_user(
                    email=form.cleaned_data['email'],
                    password=form.cleaned_data['password'],
                    name=form.cleaned_data['name'])
                return HttpResponseRedirect(
                    reverse('confirm_register', args=[_id]))
            else:
                form.add_error(None, "Email already exist")
    else:
        form = forms.RegisterForm()
    return render(request, 'home/register.html', {'form': form})
Example #9
0
def get_auth_service():
    auth_service = user_service_container.load(AuthService.__name__)
    assert (isinstance(auth_service, AuthService))
    return auth_service
Example #10
0
 def authenticate(self, email = None, password = None):
     user_service = user_service_container.load(UserService.__name__)
     assert (isinstance(user_service,UserService))
     user = user_service.find(email = email,password = password)
     return user
Example #11
0
def logout(request):
    auth_service = user_service_container.load(AuthService.__name__)
    assert (isinstance(auth_service, AuthService))
    auth_service.logout(request.session)
    return HttpResponseRedirect(reverse("home"))