request=request)) def response_add(self, request, obj, post_url_continue=None): if request.user.is_superuser or \ not request.user.has_perm('teachers.teacher'): return super(ContestAdminMixin, self).response_add(request, obj, post_url_continue) self.message_user(request, _("Contest added successfully.")) return redirect('show_members', contest_id=obj.id, member_type='pupil') def __init__(self, *args, **kwargs): super(ContestAdminMixin, self).__init__(*args, **kwargs) ContestAdmin.mix_in(ContestAdminMixin) if 'oioioi.simpleui' not in settings.INSTALLED_APPS: personal_menu_registry.register( 'create_contest', _("New contest"), lambda request: reverse('oioioiadmin:contests_contest_add'), lambda request: request.user.has_perm('teachers.teacher'), order=10) else: personal_menu_registry.register( 'teacher_dashboard', _("Contests"), lambda request: reverse('teacher_dashboard'), lambda request: request.user.has_perm('teachers.teacher'), order=5)
users who otherwise couldn't create their own contests. In essence, if the user can already create contests in some other way (or usercontests are disabled) this function should return False. """ if settings.ARCHIVE_USERCONTESTS: return False user = request.user return not (user.is_superuser or user.has_perm('teachers.teacher')) if 'oioioi.simpleui' not in settings.INSTALLED_APPS: personal_menu_registry.register( 'create_contest', _("New contest"), lambda request: reverse('oioioiadmin:contests_contest_add'), use_usercontest_admin_form, order=10, ) else: personal_menu_registry.register( 'user_dashboard', _("Contests"), lambda request: reverse('simpleui_user_dashboard'), use_usercontest_admin_form, order=5, ) class UserRoundInlineFormset(RoundInline.formset): def clean(self):
**kwargs) if db_field.name == 'owners': formfield.queryset = User.objects.exclude( teacher=None) | User.objects.filter(is_superuser=True) if isinstance(db_field, models.ManyToManyField): formfield.label_from_instance = types.MethodType( get_user_name_and_login_bounded, formfield) return formfield admin.site.register(UserGroup, UserGroupAdmin) admin.system_admin_menu_registry.register( 'user_groups', _("User Groups"), lambda request: reverse('oioioiadmin:usergroups_usergroup_changelist'), condition=is_superuser, order=10, ) personal_menu_registry.register( 'user_groups', _("User Groups"), lambda request: reverse('teacher_usergroups_list'), lambda request: request.user.has_perm('teachers.teacher'), order=20, )
from django.conf import settings from django.shortcuts import reverse from django.utils.translation import ugettext_lazy as _ from oioioi.base.menu import personal_menu_registry from oioioi.base.utils.permissions import is_regular_user if 'oioioi.simpleui' not in settings.INSTALLED_APPS: personal_menu_registry.register( 'create_contest', _("New contest"), lambda request: reverse('oioioiadmin:contests_contest_add'), lambda request: is_regular_user(request.user), order=10) else: personal_menu_registry.register( 'user_dashboard', _("Contests"), lambda request: reverse('simpleui_user_dashboard'), lambda request: is_regular_user(request.user), order=5)