From e4159bb45a895840954ab672ed9773a11696d038 Mon Sep 17 00:00:00 2001 From: Chif Gergo <chifgeri97@gmail.com> Date: Thu, 25 Jan 2018 18:27:33 +0100 Subject: [PATCH] News Viewset created --- .../migrations/0004_auto_20180125_1817.py | 22 +++++++++++++++++++ src/homework/models.py | 2 +- src/homework/permissions.py | 2 +- src/homework/views.py | 2 +- src/kszkepzes/urls.py | 1 + src/news/permissions.py | 11 ++++++++++ src/news/views.py | 4 ++-- 7 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 src/homework/migrations/0004_auto_20180125_1817.py create mode 100644 src/news/permissions.py diff --git a/src/homework/migrations/0004_auto_20180125_1817.py b/src/homework/migrations/0004_auto_20180125_1817.py new file mode 100644 index 0000000..9693462 --- /dev/null +++ b/src/homework/migrations/0004_auto_20180125_1817.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2018-01-25 17:17 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('homework', '0003_auto_20180124_1818'), + ] + + operations = [ + migrations.AlterField( + model_name='solution', + name='created_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/src/homework/models.py b/src/homework/models.py index 0e94c27..87772df 100644 --- a/src/homework/models.py +++ b/src/homework/models.py @@ -51,7 +51,7 @@ class Solution(models.Model): task = models.ForeignKey(Task, related_name='task_solution', on_delete=models.CASCADE, ) # student = models.ForeignKey(account.models.Profile, related_name='student_solution', on_delete=models.CASCADE) date = models.DateTimeField(auto_now_add=True, editable=False, ) - ready = models.BooleanField(default=False, ) #if(Soulution.date <= Task.deadline) + ready = models.BooleanField(default=False, ) # if(Soulution.date <= Task.deadline) accepted = models.BooleanField(default=False, ) files = models.FileField( validators=[validators.FileExtensionValidator( diff --git a/src/homework/permissions.py b/src/homework/permissions.py index 762faed..936e903 100644 --- a/src/homework/permissions.py +++ b/src/homework/permissions.py @@ -34,4 +34,4 @@ class IsStaffOrReadOnlyForAuthenticated(BasePermission): return (request.user.is_staff or request.method in SAFE_METHODS and request.user.is_authenticated - ) + ) diff --git a/src/homework/views.py b/src/homework/views.py index 2d0344b..4c295b6 100644 --- a/src/homework/views.py +++ b/src/homework/views.py @@ -17,7 +17,7 @@ class TasksViewSet(viewsets.ModelViewSet): class SolutionViewSet(viewsets.ModelViewSet): serializer_class = serializers.SolutionSerializer queryset = models.Solution.objects.all() - permission_classes = (permissions.SolutionPermission, ) + permission_classes = (permissions.IsStaffOrReadOnlyForAuthenticated, ) def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py index cb9bbcd..ca34d4b 100644 --- a/src/kszkepzes/urls.py +++ b/src/kszkepzes/urls.py @@ -22,4 +22,5 @@ urlpatterns = [ url(r'^api/v1/homework/', include('homework.urls')), url(r'^api/v1/', include('stats.urls')), url(r'^api/v1/', include('account.urls')), + url(r'^api/v1/', include('news.urls')), ] diff --git a/src/news/permissions.py b/src/news/permissions.py new file mode 100644 index 0000000..af200e5 --- /dev/null +++ b/src/news/permissions.py @@ -0,0 +1,11 @@ +from rest_framework.permissions import BasePermission +from rest_framework.permissions import SAFE_METHODS + + +class IsStaffOrReadOnlyForAuthenticated(BasePermission): + + def has_permission(self, request, view): + return (request.user.is_staff or + request.method in SAFE_METHODS and + request.user.is_authenticated + ) diff --git a/src/news/views.py b/src/news/views.py index ab6f5f7..7ddf488 100644 --- a/src/news/views.py +++ b/src/news/views.py @@ -1,4 +1,4 @@ -from rest_framework.permissions import IsAdminUser, IsAuthenticated +from news.permissions import IsStaffOrReadOnlyForAuthenticated from rest_framework import viewsets from news.models import Article from news.serializers import ArticleListSerializer @@ -6,5 +6,5 @@ from news.serializers import ArticleListSerializer class NewsViewSet(viewsets.ModelViewSet): serializer_class = ArticleListSerializer - permission_classes = [IsAuthenticated] + permission_classes = [IsStaffOrReadOnlyForAuthenticated] queryset = Article.objects.all() -- GitLab