def get(self, request): try: User.test_authenticated(Context.from_request(request)) except LoginRequired: return redirect('hub') return TemplateResponse(request, 'profile.html', { 'profile_required': User.profile_required, })
def post(self, request): context = Context.from_request(request) try: User.test_authenticated(context) except LoginRequired: return redirect('hub') for pk in request.POST.getlist('terms'): Terms.get(context, pk=pk).agree(request.user.pk) return redirect('hub')
def get_enabled(cls, context): User.test_authenticated(context) Terms.test_agreed_enabled(context) User.test_profile(context) try: User.test_permission(context, 'challenge.full', 'challenge.view') except PermissionRequired: Trigger.test_can_view_challenges(context) queryset = models.Challenge.objects.filter(enabled=True) return [cls(context, obj) for obj in queryset]
def get(cls, context, pk): queryset = models.Challenge.objects.all() try: User.test_permission(context, 'challenge.full', 'challenge.view') except PermissionRequired: User.test_authenticated(context) Terms.test_agreed_enabled(context) User.test_profile(context) Trigger.test_can_view_challenges(context) queryset = queryset.filter(enabled=True) try: return cls(context, queryset.get(pk=pk)) except models.Challenge.DoesNotExist: raise NotFound('题目不存在')