From 187c268566a4ca178c393130f2c5248552ccc15c Mon Sep 17 00:00:00 2001
From: rlacko <rlacko@sch.bme.hu>
Date: Sun, 26 Jan 2020 13:52:17 +0100
Subject: [PATCH] groups api endpoint

---
 src/groups/__init__.py            |  0
 src/groups/admin.py               |  5 +++++
 src/groups/apps.py                |  5 +++++
 src/groups/migrations/__init__.py |  0
 src/groups/models.py              |  9 +++++++++
 src/groups/serializers.py         | 16 ++++++++++++++++
 src/groups/tests.py               |  3 +++
 src/groups/urls.py                |  7 +++++++
 src/groups/views.py               |  9 +++++++++
 src/kszkepzes/settings/base.py    |  3 ++-
 src/kszkepzes/urls.py             |  1 +
 11 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 src/groups/__init__.py
 create mode 100644 src/groups/admin.py
 create mode 100644 src/groups/apps.py
 create mode 100644 src/groups/migrations/__init__.py
 create mode 100644 src/groups/models.py
 create mode 100644 src/groups/serializers.py
 create mode 100644 src/groups/tests.py
 create mode 100644 src/groups/urls.py
 create mode 100644 src/groups/views.py

diff --git a/src/groups/__init__.py b/src/groups/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/groups/admin.py b/src/groups/admin.py
new file mode 100644
index 0000000..8eefe1f
--- /dev/null
+++ b/src/groups/admin.py
@@ -0,0 +1,5 @@
+from django.contrib import admin
+
+from . import models
+
+admin.site.register(models.Group)
diff --git a/src/groups/apps.py b/src/groups/apps.py
new file mode 100644
index 0000000..e6984a8
--- /dev/null
+++ b/src/groups/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class GroupsConfig(AppConfig):
+    name = 'groups'
diff --git a/src/groups/migrations/__init__.py b/src/groups/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/groups/models.py b/src/groups/models.py
new file mode 100644
index 0000000..88a35cf
--- /dev/null
+++ b/src/groups/models.py
@@ -0,0 +1,9 @@
+from django.db import models
+
+# KSZK groups, like Devteam, Sysadmin, ...
+class Group(models.Model):
+    name = models.CharField(max_length=50, blank=True, default='')
+    description = models.TextField(blank=True, default='')
+    
+    def __str__(self):
+        return self.name
\ No newline at end of file
diff --git a/src/groups/serializers.py b/src/groups/serializers.py
new file mode 100644
index 0000000..5c11909
--- /dev/null
+++ b/src/groups/serializers.py
@@ -0,0 +1,16 @@
+from rest_framework import serializers
+from . import models
+
+
+class GroupSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = models.Group
+        read_only_fields = (
+            'name',
+            'description',)
+        fields = (
+            'name',
+            'description',
+        )
+
+
diff --git a/src/groups/tests.py b/src/groups/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/src/groups/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/src/groups/urls.py b/src/groups/urls.py
new file mode 100644
index 0000000..646653b
--- /dev/null
+++ b/src/groups/urls.py
@@ -0,0 +1,7 @@
+from rest_framework import routers
+from . import views
+
+router = routers.DefaultRouter()
+
+router.register(r'group', views.GroupViewSet, base_name='group')
+urlpatterns = router.urls
diff --git a/src/groups/views.py b/src/groups/views.py
new file mode 100644
index 0000000..5504214
--- /dev/null
+++ b/src/groups/views.py
@@ -0,0 +1,9 @@
+from rest_framework import viewsets
+
+from . import serializers
+from . import models
+
+class GroupViewSet(viewsets.ReadOnlyModelViewSet):
+    serializer_class = serializers.GroupSerializer
+    queryset = models.Group.objects.all()
+    
\ No newline at end of file
diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py
index 6e651b7..d564e3d 100644
--- a/src/kszkepzes/settings/base.py
+++ b/src/kszkepzes/settings/base.py
@@ -48,6 +48,7 @@ INSTALLED_APPS = [
     'stats',
     'news',
     'document',
+    'groups',
     'drf_yasg',
 ]
 
@@ -59,7 +60,7 @@ MIDDLEWARE = [
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'django.middleware.clickjacking.XFrameOptionsMiddleware',
-    'common.middleware.CurrentUserMiddleware',
+    'common.middleware.CurrentUserMiddleware'
 ]
 
 ROOT_URLCONF = 'kszkepzes.urls'
diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py
index 6708831..154ab83 100644
--- a/src/kszkepzes/urls.py
+++ b/src/kszkepzes/urls.py
@@ -32,6 +32,7 @@ urlpatterns = [
     url(r'^api/v1/', include('account.urls')),
     url(r'^api/v1/', include('news.urls')),
     url(r'^api/v1/', include('document.urls')),
+    url(r'^api/v1/', include('groups.urls')),
     url(r'^api/v1/logout/$', auth_views.LogoutView.as_view(), name='logout'),
 ]
 
-- 
GitLab