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