Example #1
0

@api_view()
@enforce_condition(not_anonymous, login_redirect=False)
def auth_ping(request):
    """ Test endpoint for authorized user. """
    return Response("pong " + str(request.user))


def api_token(request, regenerated=False):
    if request.method != 'POST':
        return TemplateResponse(request, 'api-key.html', {})
    token, created = Token.objects.get_or_create(user=request.user)
    return TemplateResponse(request, 'api-key.html',
                            {"token": token, "regenerated": regenerated})


def regenerate_token(request):
    if request.method != 'POST':
        return api_token(request)
    Token.objects.filter(user=request.user).delete()
    return api_token(request, regenerated=True)


def api_token_url(request):
    return reverse('api_token')


if settings.USE_API:
    account_menu_registry.register('api_token', _('Your API token'), api_token_url, order=160)
Example #2
0
from django.urls import reverse
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext as _
from django.views.generic import TemplateView

from oioioi.base.menu import account_menu_registry
from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.base.utils.user_selection import get_user_hints_view
from oioioi.problemsharing.forms import AddFriendshipForm
from oioioi.problemsharing.models import Friendship
from oioioi.teachers.views import is_teacher

account_menu_registry.register(
    name='friends',
    text=_("Friends"),
    url_generator=lambda request: reverse('problemsharing_friends'),
    condition=is_teacher,
    order=170,
)


@method_decorator(enforce_condition(not_anonymous & is_teacher),
                  name='dispatch')
class FriendshipsView(TemplateView):
    template_name = 'problemsharing/friendship.html'

    def get_context_data(self, **kwargs):
        ctx = super(FriendshipsView, self).get_context_data(**kwargs)
        ctx['form'] = AddFriendshipForm()
        ctx['friends'] = User.objects.filter(
            friendships_received__creator=self.request.user)
Example #3
0
from django.views.decorators.cache import cache_control
from django.views.decorators.http import require_GET, require_POST
from django.views.decorators.vary import vary_on_cookie, vary_on_headers
from two_factor.views import LoginView as Login2FAView

from oioioi.base.menu import account_menu_registry
from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.base.preferences import PreferencesFactory
from oioioi.base.processors import site_name
from oioioi.base.utils import generate_key, jsonify
from oioioi.base.utils.redirect import safe_redirect
from oioioi.base.utils.user import has_valid_username
import oioioi.base.forms

account_menu_registry.register('change_password',
                               _("Change password"),
                               lambda request: reverse('auth_password_change'),
                               order=100)
account_menu_registry.register('two_factor_auth',
                               _("Two factor authentication"),
                               lambda request: reverse('two_factor:profile'),
                               order=150)


class ForcedError(Exception):
    pass


def force_error_view(request):
    raise ForcedError("Visited /force_error")

Example #4
0
def is_not_teacher(request):
    return not request.user.has_perm('teachers.teacher')


admin.contest_admin_menu_registry.register(
    'teachers_participants',
    _("Participants"),
    lambda request: reverse(participants_view,
                            kwargs={'contest_id': request.contest.id}),
    condition=is_teachers_contest,
    order=30)

account_menu_registry.register('new_teacher',
                               _("Request teacher account"),
                               lambda request: reverse(add_teacher_view),
                               condition=is_not_teacher,
                               order=100)


class AddTeacherForm(forms.ModelForm):
    class Meta:
        model = Teacher
        fields = ['school']

    school = forms.CharField(
        label=_("School"),
        help_text=mark_safe(
            _("Please provide the full name. If the "
              "school is a part of a larger organization of schools, "
              "<br>enter the name of this organization.")),
Example #5
0
                    Portal.objects.filter(
                        Q(owner=None) &
                        (Q(root__language_versions__full_name__icontains=query)
                        | Q(link_name__icontains=query))).distinct()
            else:
                raise Http404

        else:
            form = PortalsSearchForm()
            portals_to_display = Portal.objects.filter(is_public=True)

    else:
        page_title = _('Public portals')
        portals_to_display = Portal.objects.filter(is_public=True)
        form = None
        views = None
    return render(
        request, 'portals/portals_main_page.html', {
            'portals': portals_to_display,
            'page_title': page_title,
            'form': form,
            'views': views,
            'curr_view_type': view_type
        })


account_menu_registry.register('my_portal',
                               _("My portal"),
                               my_portal_url,
                               order=150)
Example #6
0
    try:
        node.move_to(target, position)
    except (InvalidMove, IntegrityError):
        raise SuspiciousOperation

    return HttpResponse()


@register_portal_action('delete_portal', condition=is_portal_admin)
def delete_portal_view(request):
    if request.method != 'POST':
        return render(request, 'portals/delete-portal.html')
    else:
        if 'confirmation' in request.POST:
            request.portal.root.delete()
            request.portal.delete()
            return redirect('/')
        else:
            return redirect(portal_url(portal=request.portal,
                                       action='manage_portal'))


def my_portal_url(request):
    try:
        return portal_url(portal=request.user.portal)
    except Portal.DoesNotExist:
        return reverse('create_user_portal')

account_menu_registry.register('my_portal', _("My portal"), my_portal_url,
        order=150)
Example #7
0
from django.utils.translation import ugettext
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.cache import cache_control
from django.views.decorators.http import require_GET, require_POST
from django.views.decorators.vary import vary_on_cookie, vary_on_headers
from two_factor.views import LoginView as Login2FAView

from oioioi.base.menu import account_menu_registry
from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.base.preferences import PreferencesFactory
from oioioi.base.processors import site_name
from oioioi.base.utils import generate_key, jsonify
from oioioi.base.utils.redirect import safe_redirect
from oioioi.base.utils.user import has_valid_username

account_menu_registry.register('change_password', _("Change password"),
        lambda request: reverse('auth_password_change'), order=100)
account_menu_registry.register('two_factor_auth', _("Two factor authentication"),
        lambda request: reverse('two_factor:profile'), order=150)


class ForcedError(Exception):
    pass


def force_error_view(request):
    raise ForcedError("Visited /force_error")


def force_permission_denied_view(request):
    raise PermissionDenied("Visited /force_permission_denied")
Example #8
0
from django.shortcuts import get_object_or_404, redirect
from django.core.exceptions import SuspiciousOperation
from django.core.urlresolvers import reverse
from django.http import HttpResponseForbidden
from django.utils.translation import ugettext_lazy as _
from django.template.response import TemplateResponse
from oioioi.base.menu import account_menu_registry
from oioioi.participants.models import Participant
from oioioi.participants.controllers import ParticipantsController
from oioioi.participants.utils import can_register, can_edit_registration

account_menu_registry.register('participants_registration',
        _("Register to the contest"),
        lambda request: reverse(registration_view,
            kwargs={'contest_id': request.contest.id}),
        condition=can_register,
        order=80)

account_menu_registry.register('participants_edit_registration',
        _("Edit contest registration"),
        lambda request: reverse(registration_view,
            kwargs={'contest_id': request.contest.id}),
        condition=can_edit_registration,
        order=80)

def registration_view(request, contest_id):
    rcontroller = request.contest.controller.registration_controller()
    if not isinstance(rcontroller, ParticipantsController):
        raise SuspiciousOperation
    return rcontroller.registration_view(request)
Example #9
0
from django.http import HttpResponse, HttpResponseForbidden
from django.template import TemplateDoesNotExist, RequestContext
from django.template.response import TemplateResponse
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from django.views.decorators.http import require_POST
from django.core.urlresolvers import reverse, reverse_lazy
from django.contrib.auth.views import logout as auth_logout, login as auth_login
from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.base.utils.redirect import safe_redirect
from oioioi.contests.views import default_contest_view
from oioioi.base.forms import UserForm
from oioioi.base.menu import account_menu_registry
import traceback

account_menu_registry.register('change_password', _("Change password"),
        lambda request: reverse('auth_password_change'), order=100)


def index_view(request):
    try:
        return render_to_response("index.html",
                context_instance=RequestContext(request))
    except TemplateDoesNotExist:
        if not request.contest:
            return TemplateResponse(request, "index-no-contests.html")
        return default_contest_view(request, request.contest.id)


def force_error_view(request):
    raise StandardError("Visited /force_error")
Example #10
0
def is_not_teacher(request):
    return not request.user.has_perm("teachers.teacher")


admin.contest_admin_menu_registry.register(
    "teachers_pupils",
    _("Pupils"),
    lambda request: reverse(pupils_view, kwargs={"contest_id": request.contest.id}),
    condition=is_teachers_contest,
    order=30,
)

account_menu_registry.register(
    "new_teacher",
    _("Request teacher account"),
    lambda request: reverse(add_teacher_view),
    condition=is_not_teacher,
    order=100,
)


class AddTeacherForm(forms.ModelForm):
    class Meta:
        model = Teacher
        fields = ["school"]

    school = forms.CharField(
        label=_("School"),
        help_text=mark_safe(
            _(
                "Please provide the full name. If the "
Example #11
0
from django.shortcuts import render_to_response, redirect
from django import forms
from django.http import HttpResponse
from django.template import TemplateDoesNotExist, RequestContext
from django.template.response import TemplateResponse
from django.utils.translation import ugettext_lazy as _
from django.core.urlresolvers import reverse
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from oioioi.contests.views import default_contest_view
from oioioi.base.menu import account_menu_registry
import traceback

account_menu_registry.register('edit_profile', _("Edit profile"),
        lambda request: reverse('edit_profile'), order=99)

account_menu_registry.register('change_password', _("Change password"),
        lambda request: reverse('auth_password_change'), order=100)

account_menu_registry.register('logout', _("Log out"),
        lambda request: reverse('auth_logout'), order=200)

def index_view(request):
    try:
        return render_to_response("index.html",
                context_instance=RequestContext(request))
    except TemplateDoesNotExist, e:
        if not request.contest:
            return TemplateResponse(request, "index-no-contests.html")
        return default_contest_view(request, request.contest.id)
Example #12
0
from django.contrib.auth.views import logout as auth_logout, \
                                      login as auth_login
from django.views.decorators.vary import vary_on_headers, vary_on_cookie
from django.views.decorators.cache import cache_control
from django.views.defaults import page_not_found

from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.base.utils.redirect import safe_redirect
from oioioi.base.utils.user import has_valid_username
from oioioi.base.utils import jsonify, generate_key
from oioioi.base.menu import account_menu_registry
from oioioi.base.preferences import PreferencesFactory
from oioioi.base.processors import site_name
import traceback

account_menu_registry.register('change_password', _("Change password"),
        lambda request: reverse('auth_password_change'), order=100)


class ForcedError(StandardError):
    pass


def force_error_view(request):
    raise ForcedError("Visited /force_error")


def force_permission_denied_view(request):
    raise PermissionDenied("Visited /force_permission_denied")


def handler500(request):
Example #13
0
from oioioi.base.permissions import enforce_condition, not_anonymous
from oioioi.contests.menu import (contest_admin_menu_registry,
                                  personal_data_menu_registry)
from oioioi.contests.utils import (can_see_personal_data, contest_exists,
                                   is_contest_admin)
from oioioi.participants.models import Participant
from oioioi.participants.utils import (can_edit_registration, can_register,
                                       can_unregister,
                                       contest_has_participants,
                                       render_participants_data_csv,
                                       serialize_participants_data)

account_menu_registry.register(
    'participants_registration',
    _("Register to the contest"),
    lambda request: reverse(registration_view,
                            kwargs={'contest_id': request.contest.id}),
    condition=contest_exists & contest_has_participants & can_register,
    order=80)

account_menu_registry.register(
    'participants_edit_registration',
    _("Edit contest registration"),
    lambda request: reverse(registration_view,
                            kwargs={'contest_id': request.contest.id}),
    condition=contest_exists & contest_has_participants
    & can_edit_registration,
    order=80)


@enforce_condition(not_anonymous & contest_exists & contest_has_participants)
Example #14
0
from django.shortcuts import get_object_or_404, redirect
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _
from django.template.response import TemplateResponse
from oioioi.base.menu import account_menu_registry
from oioioi.base.permissions import enforce_condition
from oioioi.contests.utils import contest_exists
from oioioi.participants.models import Participant
from oioioi.participants.utils import can_register, can_edit_registration, contest_has_participants

account_menu_registry.register(
    "participants_registration",
    _("Register to the contest"),
    lambda request: reverse(registration_view, kwargs={"contest_id": request.contest.id}),
    condition=contest_exists & contest_has_participants & can_register,
    order=80,
)

account_menu_registry.register(
    "participants_edit_registration",
    _("Edit contest registration"),
    lambda request: reverse(registration_view, kwargs={"contest_id": request.contest.id}),
    condition=contest_exists & contest_has_participants & can_edit_registration,
    order=80,
)


@enforce_condition(contest_exists & contest_has_participants)
def registration_view(request, contest_id):
    rcontroller = request.contest.controller.registration_controller()
    return rcontroller.registration_view(request)
Example #15
0
File: api.py Project: tmkkk/oioioi
    return Response("pong " + str(request.user))


@enforce_condition(not_anonymous, login_redirect=False)
def api_token(request, regenerated=False):
    if request.method != 'POST':
        return TemplateResponse(request, 'api-key.html', {})
    token, created = Token.objects.get_or_create(user=request.user)
    return TemplateResponse(request, 'api-key.html', {
        "token": token,
        "regenerated": regenerated
    })


def regenerate_token(request):
    if request.method != 'POST':
        return api_token(request)
    Token.objects.filter(user=request.user).delete()
    return api_token(request, regenerated=True)


def api_token_url(request):
    return reverse('api_token')


if settings.USE_API:
    account_menu_registry.register('api_token',
                                   _('Your API token'),
                                   api_token_url,
                                   order=160)