diff --git a/src/document/__init__.py b/src/document/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/document/admin.py b/src/document/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..799d0189e8e3047bcf10d021a805aa0bae30e07b --- /dev/null +++ b/src/document/admin.py @@ -0,0 +1,5 @@ +from django.contrib import admin + +from . import models + +admin.site.register(models.Document) diff --git a/src/document/apps.py b/src/document/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..fd7bdcbc212e8f61f09df30815616ecc6074ea8a --- /dev/null +++ b/src/document/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class DocumentConfig(AppConfig): + name = 'document' diff --git a/src/document/migrations/0001_initial.py b/src/document/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..1982261b5587cc0c2c527977925709598452aeac --- /dev/null +++ b/src/document/migrations/0001_initial.py @@ -0,0 +1,27 @@ +# Generated by Django 2.0.1 on 2018-05-28 15:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('account', '0017_auto_20180205_2004'), + ] + + operations = [ + migrations.CreateModel( + name='Document', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('name', models.CharField(max_length=150)), + ('description', models.TextField()), + ('file', models.FileField(upload_to='')), + ('uploaded_by', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='account.Profile')), + ], + ), + ] diff --git a/src/document/migrations/__init__.py b/src/document/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/document/models.py b/src/document/models.py new file mode 100644 index 0000000000000000000000000000000000000000..e2c30e36742be70a2cb4b4f9b429dcde73eab4c5 --- /dev/null +++ b/src/document/models.py @@ -0,0 +1,14 @@ +from django.db import models + +from account.models import Profile + + +class Document(models.Model): + uploaded_by = models.ForeignKey(Profile, on_delete=models.DO_NOTHING) + uploaded_at = models.DateTimeField(auto_now_add=True, editable=False) + name = models.CharField(max_length=150) + description = models.TextField() + file = models.FileField() + + def __str__(self): + return self.name diff --git a/src/document/serializers.py b/src/document/serializers.py new file mode 100644 index 0000000000000000000000000000000000000000..47e0e1cd73d13b5e0bc22bd79aba3535a9e8002e --- /dev/null +++ b/src/document/serializers.py @@ -0,0 +1,13 @@ +from rest_framework import serializers + +from common.serializers import CurrentUserProfileDefault +from . import models + + +class DocumentSerializer(serializers.ModelSerializer): + uploaded_at = serializers.DateTimeField(read_only=True) + uploaded_by = serializers.HiddenField(default=CurrentUserProfileDefault()) + + class Meta: + model = models.Document + fields = ('uploaded_by', 'uploaded_at', 'name', 'description', 'file') diff --git a/src/document/tests.py b/src/document/tests.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/document/urls.py b/src/document/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..1a4dc2be88754f0005a61974d201f0025f3bcbf4 --- /dev/null +++ b/src/document/urls.py @@ -0,0 +1,7 @@ +from rest_framework import routers +from . import views + +router = routers.DefaultRouter() +router.register(r'documents', views.DocumentViewSet, base_name='documents') + +urlpatterns = router.urls diff --git a/src/document/views.py b/src/document/views.py new file mode 100644 index 0000000000000000000000000000000000000000..70e78a074604bb240aca2930d9325ac31f60d8bc --- /dev/null +++ b/src/document/views.py @@ -0,0 +1,11 @@ +from rest_framework import viewsets + +from common import permissions +from . import models +from . import serializers + + +class DocumentViewSet(viewsets.ModelViewSet): + queryset = models.Document.objects.all() + serializer_class = serializers.DocumentSerializer + permission_classes = (permissions.IsStaffOrReadOnly, ) diff --git a/src/kszkepzes/settings/base.py b/src/kszkepzes/settings/base.py index 277106b310ad176aa7268075d2b0a6e099ff2a22..dd73603a60b94e23ef0f7892f885ff713c32de67 100644 --- a/src/kszkepzes/settings/base.py +++ b/src/kszkepzes/settings/base.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ 'account', 'stats', 'news', + 'document', ] MIDDLEWARE = [ diff --git a/src/kszkepzes/urls.py b/src/kszkepzes/urls.py index 3b249d5dcce89907087234475c1d014328c81e3b..f5e414edc9604b99a6d4118130f32b1e4b25b724 100644 --- a/src/kszkepzes/urls.py +++ b/src/kszkepzes/urls.py @@ -11,6 +11,7 @@ urlpatterns = [ url(r'^api/v1/', include('stats.urls')), 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/logout/$', auth_views.LogoutView.as_view(), name='logout'), ]