diff options
Diffstat (limited to 'yacos/lending')
-rw-r--r-- | yacos/lending/__init__.py | 0 | ||||
-rw-r--r-- | yacos/lending/admin.py | 7 | ||||
-rw-r--r-- | yacos/lending/apps.py | 5 | ||||
-rw-r--r-- | yacos/lending/migrations/0001_initial.py | 49 | ||||
-rw-r--r-- | yacos/lending/migrations/0002_auto_20190820_0501.py | 39 | ||||
-rw-r--r-- | yacos/lending/migrations/__init__.py | 0 | ||||
-rw-r--r-- | yacos/lending/models.py | 35 | ||||
-rw-r--r-- | yacos/lending/serializers.py | 30 | ||||
-rw-r--r-- | yacos/lending/tests.py | 3 | ||||
-rw-r--r-- | yacos/lending/urls.py | 7 | ||||
-rw-r--r-- | yacos/lending/views.py | 30 |
11 files changed, 205 insertions, 0 deletions
diff --git a/yacos/lending/__init__.py b/yacos/lending/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/yacos/lending/__init__.py diff --git a/yacos/lending/admin.py b/yacos/lending/admin.py new file mode 100644 index 0000000..5137704 --- /dev/null +++ b/yacos/lending/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin + +from .models import Person,Thing,Lending + +admin.site.register(Person) +admin.site.register(Thing) +admin.site.register(Lending) diff --git a/yacos/lending/apps.py b/yacos/lending/apps.py new file mode 100644 index 0000000..6fa1426 --- /dev/null +++ b/yacos/lending/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class LendingConfig(AppConfig): + name = 'lending' diff --git a/yacos/lending/migrations/0001_initial.py b/yacos/lending/migrations/0001_initial.py new file mode 100644 index 0000000..65fe1fc --- /dev/null +++ b/yacos/lending/migrations/0001_initial.py @@ -0,0 +1,49 @@ +# Generated by Django 2.2.3 on 2019-08-13 13:13 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Person', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('rfid', models.CharField(max_length=256)), + ('name', models.CharField(max_length=140, unique=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Thing', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('rfid', models.CharField(max_length=256, unique=True)), + ('name', models.CharField(max_length=140)), + ('description', models.CharField(blank=True, max_length=9999)), + ('created', models.DateTimeField(auto_now_add=True)), + ('lent', models.BooleanField(default=False)), + ('image', models.ImageField(upload_to='')), + ('owner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='owner', to='lending.Person')), + ], + ), + migrations.CreateModel( + name='Lending', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('purpose', models.CharField(max_length=5000, unique=True)), + ('begin', models.DateTimeField(auto_now_add=True)), + ('deadline', models.DateTimeField()), + ('returned', models.DateTimeField(blank=True, null=True)), + ('lender', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='borrows', to='lending.Person')), + ('thing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='lent_to', to='lending.Thing')), + ], + ), + ] diff --git a/yacos/lending/migrations/0002_auto_20190820_0501.py b/yacos/lending/migrations/0002_auto_20190820_0501.py new file mode 100644 index 0000000..65c35f0 --- /dev/null +++ b/yacos/lending/migrations/0002_auto_20190820_0501.py @@ -0,0 +1,39 @@ +# Generated by Django 2.2.3 on 2019-08-20 05:01 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('lending', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='lending', + name='begin', + field=models.DateTimeField(auto_now=True), + ), + migrations.AlterField( + model_name='lending', + name='lender', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='borrows', to='lending.Person'), + ), + migrations.AlterField( + model_name='lending', + name='purpose', + field=models.CharField(max_length=1000, unique=True), + ), + migrations.AlterField( + model_name='lending', + name='thing', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ilendings', to='lending.Thing'), + ), + migrations.AlterField( + model_name='thing', + name='description', + field=models.TextField(blank=True, max_length=9999), + ), + ] diff --git a/yacos/lending/migrations/__init__.py b/yacos/lending/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/yacos/lending/migrations/__init__.py diff --git a/yacos/lending/models.py b/yacos/lending/models.py new file mode 100644 index 0000000..ee1e402 --- /dev/null +++ b/yacos/lending/models.py @@ -0,0 +1,35 @@ +from django.db import models + +class Person(models.Model): + rfid = models.CharField(max_length=256) + name = models.CharField(max_length=140, unique=True) + created = models.DateTimeField(auto_now_add=True) + def __str__(self): + + return f"Person {self.name}" + +class Thing(models.Model): + rfid = models.CharField(max_length=256, unique=True) + name = models.CharField(max_length=140) + owner = models.ForeignKey(to=Person, + on_delete=models.PROTECT, related_name='owner', + null=True, blank=True) + description = models.TextField(max_length=9999, blank=True) + created = models.DateTimeField(auto_now_add=True) + lent = models.BooleanField(default=False) + image = models.ImageField() + + def __str__(self): + return f"Thing {self.name}" + +class Lending(models.Model): + purpose = models.CharField(max_length=1000, unique=True) + begin = models.DateTimeField(auto_now=True) + deadline = models.DateTimeField() + returned = models.DateTimeField(null=True, blank=True) # if returned is empty -> leding finished + lender = models.ForeignKey(to=Person, + on_delete=models.SET_NULL,related_name='borrows',null=True) + thing = models.ForeignKey(to=Thing, on_delete=models.CASCADE, + related_name='ilendings') + def __str__(self): + return f"Lending from {self.begin}, purpose: {self.purpose}, deadline: {self.deadline}" diff --git a/yacos/lending/serializers.py b/yacos/lending/serializers.py new file mode 100644 index 0000000..ccfb7fe --- /dev/null +++ b/yacos/lending/serializers.py @@ -0,0 +1,30 @@ +from django.contrib.auth.models import User, Group +from .models import Person, Thing, Lending +from rest_framework import serializers + + +class UserSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = User + fields = ['url', 'username', 'email', 'groups'] + + +class GroupSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Group + fields = ['url', 'name'] + +class PersonSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Person + fields = ['rfid', 'name','created'] + +class ThingSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Thing + fields = ['rfid', 'name','owner','description','created','lent','image'] + +class LendingSerializer(serializers.HyperlinkedModelSerializer): + class Meta: + model = Lending + fields = ['purpose', 'begin','deadline','returned','lender','thing'] diff --git a/yacos/lending/tests.py b/yacos/lending/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/yacos/lending/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/yacos/lending/urls.py b/yacos/lending/urls.py new file mode 100644 index 0000000..88a9cac --- /dev/null +++ b/yacos/lending/urls.py @@ -0,0 +1,7 @@ +from django.urls import path + +from . import views + +urlpatterns = [ + path('', views.index, name='index'), +] diff --git a/yacos/lending/views.py b/yacos/lending/views.py new file mode 100644 index 0000000..3249246 --- /dev/null +++ b/yacos/lending/views.py @@ -0,0 +1,30 @@ +from django.shortcuts import render +from django.http import HttpResponse + +from django.contrib.auth.models import User, Group +from .models import Person, Thing, Lending +from rest_framework import viewsets +from .serializers import UserSerializer, GroupSerializer, PersonSerializer, ThingSerializer, LendingSerializer + + + +class UserViewSet(viewsets.ModelViewSet): + queryset = User.objects.all().order_by('-date_joined') + serializer_class = UserSerializer + + +class GroupViewSet(viewsets.ModelViewSet): + queryset = Group.objects.all() + serializer_class = GroupSerializer + +class PersonViewSet(viewsets.ModelViewSet): + queryset = Person.objects.all().order_by('-created') + serializer_class = PersonSerializer + +class LendingViewSet(viewsets.ModelViewSet): + queryset = Lending.objects.all().order_by('-begin') + serializer_class = LendingSerializer + +class ThingViewSet(viewsets.ModelViewSet): + queryset = Thing.objects.all().order_by('-created') + serializer_class = ThingSerializer |