summaryrefslogtreecommitdiffstats
path: root/yacos/lending
diff options
context:
space:
mode:
Diffstat (limited to 'yacos/lending')
-rw-r--r--yacos/lending/__init__.py0
-rw-r--r--yacos/lending/admin.py7
-rw-r--r--yacos/lending/apps.py5
-rw-r--r--yacos/lending/migrations/0001_initial.py49
-rw-r--r--yacos/lending/migrations/0002_auto_20190820_0501.py39
-rw-r--r--yacos/lending/migrations/__init__.py0
-rw-r--r--yacos/lending/models.py35
-rw-r--r--yacos/lending/serializers.py30
-rw-r--r--yacos/lending/tests.py3
-rw-r--r--yacos/lending/urls.py7
-rw-r--r--yacos/lending/views.py30
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