@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)
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)
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")
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.")),
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)
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)
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")
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)
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")
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 "
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)
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):
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)
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)
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)