From 32d60f51ac99af0ac9c2b14d58e2f78ac067fbfa Mon Sep 17 00:00:00 2001 From: Clemens-Dautermann Date: Sun, 23 Dec 2018 14:27:16 +0100 Subject: [PATCH] List feature + implemented list feature + implemented category feature --- invsystem/invsystem/settings.py | 2 +- invsystem/invsystem/urls.py | 3 +- invsystem/object_adder/admin.py | 7 ++- invsystem/object_adder/forms.py | 13 ++++- .../object_adder/migrations/0001_initial.py | 13 +++-- .../migrations/0002_object_img.py | 18 ------- .../migrations/0003_object_title.py | 18 ------- invsystem/object_adder/models.py | 16 ++++++ invsystem/object_adder/urls.py | 1 + invsystem/object_adder/views.py | 26 ++++++++-- invsystem/object_lister/__init__.py | 0 invsystem/object_lister/admin.py | 3 ++ invsystem/object_lister/apps.py | 5 ++ .../object_lister/migrations/__init__.py | 0 invsystem/object_lister/models.py | 3 ++ invsystem/object_lister/tests.py | 3 ++ invsystem/object_lister/urls.py | 6 +++ invsystem/object_lister/views.py | 13 +++++ .../static/user_manager/style.css | 50 ++++++++++++++++--- .../user_manager/templates/bases/navbar.html | 1 + .../templates/object_adder/category.html | 27 ++++++++++ .../templates/object_adder/index.html | 13 +++-- .../templates/object_lister/index.html | 29 +++++++++++ 23 files changed, 210 insertions(+), 60 deletions(-) delete mode 100644 invsystem/object_adder/migrations/0002_object_img.py delete mode 100644 invsystem/object_adder/migrations/0003_object_title.py create mode 100644 invsystem/object_lister/__init__.py create mode 100644 invsystem/object_lister/admin.py create mode 100644 invsystem/object_lister/apps.py create mode 100644 invsystem/object_lister/migrations/__init__.py create mode 100644 invsystem/object_lister/models.py create mode 100644 invsystem/object_lister/tests.py create mode 100644 invsystem/object_lister/urls.py create mode 100644 invsystem/object_lister/views.py create mode 100644 invsystem/user_manager/templates/object_adder/category.html create mode 100644 invsystem/user_manager/templates/object_lister/index.html diff --git a/invsystem/invsystem/settings.py b/invsystem/invsystem/settings.py index 68713f8..0d7094c 100644 --- a/invsystem/invsystem/settings.py +++ b/invsystem/invsystem/settings.py @@ -105,7 +105,7 @@ AUTH_PASSWORD_VALIDATORS = [ # Internationalization # https://docs.djangoproject.com/en/2.1/topics/i18n/ -LANGUAGE_CODE = 'en-us' +LANGUAGE_CODE = 'de' TIME_ZONE = 'Europe/Berlin' diff --git a/invsystem/invsystem/urls.py b/invsystem/invsystem/urls.py index feac818..7eca499 100644 --- a/invsystem/invsystem/urls.py +++ b/invsystem/invsystem/urls.py @@ -20,6 +20,7 @@ urlpatterns = [ path('admin/', admin.site.urls), path('accounts/', include('django.contrib.auth.urls')), path('', include('user_manager.urls')), - path('add/', include('object_adder.urls')) + path('add/', include('object_adder.urls')), + path('list/', include('object_lister.urls')) ] diff --git a/invsystem/object_adder/admin.py b/invsystem/object_adder/admin.py index f9bb2db..a150f17 100644 --- a/invsystem/object_adder/admin.py +++ b/invsystem/object_adder/admin.py @@ -1,10 +1,15 @@ from django.contrib import admin -from .models import Object +from .models import Object, Category class ObjectAdmin(admin.ModelAdmin): list_display = ('title', 'ammout', 'uuid', 'img') +class CategoryAdmin(admin.ModelAdmin): + list_display = ('name', 'id') + + # Register your models here. admin.site.register(Object, ObjectAdmin) +admin.site.register(Category, CategoryAdmin) diff --git a/invsystem/object_adder/forms.py b/invsystem/object_adder/forms.py index fcae523..5f8929f 100644 --- a/invsystem/object_adder/forms.py +++ b/invsystem/object_adder/forms.py @@ -1,12 +1,21 @@ from django.forms import ModelForm, TextInput -from .models import Object +from .models import Object, Category class ObjectForm(ModelForm): class Meta: model = Object - fields = ('ammout', 'title', 'img', 'description') + fields = ('ammout', 'title', 'img', 'description', 'category') widgets = { 'title': TextInput(), } + + +class CategoryForm(ModelForm): + class Meta: + model = Category + fields = ['name'] + widgets = { + 'name': TextInput() + } diff --git a/invsystem/object_adder/migrations/0001_initial.py b/invsystem/object_adder/migrations/0001_initial.py index 99a7353..b778725 100644 --- a/invsystem/object_adder/migrations/0001_initial.py +++ b/invsystem/object_adder/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 2.1.4 on 2018-12-18 17:57 +# Generated by Django 2.1.4 on 2018-12-22 19:20 from django.conf import settings from django.db import migrations, models @@ -18,11 +18,14 @@ class Migration(migrations.Migration): migrations.CreateModel( name='Object', fields=[ + ('ammout', models.PositiveIntegerField(default=1)), + ('title', models.TextField(default=None, max_length=100)), + ('img', models.ImageField(blank=True, default=None, upload_to='')), ('uuid', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), - ('inventarized_date', models.DateTimeField()), - ('description', models.TextField(max_length=500)), - ('removed_date', models.DateTimeField()), - ('user_added', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('inventarized_date', models.DateTimeField(null=True)), + ('description', models.TextField(blank=True, max_length=500)), + ('removed_date', models.DateTimeField(blank=True, default=None, null=True)), + ('user_added', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ] diff --git a/invsystem/object_adder/migrations/0002_object_img.py b/invsystem/object_adder/migrations/0002_object_img.py deleted file mode 100644 index c0f067f..0000000 --- a/invsystem/object_adder/migrations/0002_object_img.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.4 on 2018-12-18 18:04 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('object_adder', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='object', - name='img', - field=models.ImageField(default=None, upload_to=''), - ), - ] diff --git a/invsystem/object_adder/migrations/0003_object_title.py b/invsystem/object_adder/migrations/0003_object_title.py deleted file mode 100644 index dd00e43..0000000 --- a/invsystem/object_adder/migrations/0003_object_title.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 2.1.4 on 2018-12-18 18:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('object_adder', '0002_object_img'), - ] - - operations = [ - migrations.AddField( - model_name='object', - name='title', - field=models.TextField(default=None, max_length=100), - ), - ] diff --git a/invsystem/object_adder/models.py b/invsystem/object_adder/models.py index 286f681..02d7083 100644 --- a/invsystem/object_adder/models.py +++ b/invsystem/object_adder/models.py @@ -14,3 +14,19 @@ class Object(models.Model): description = models.TextField(max_length=500, blank=True) removed_date = models.DateTimeField(blank=True, default=None, null=True) user_added = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, null=True) + category = models.ForeignKey('Category', on_delete=models.CASCADE, blank=True, default=None, null=True) + + objects = models.Manager() + + def __str__(self): + return str(self.uuid) + + +class Category(models.Model): + name = models.TextField(blank=False, max_length=150) + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + + categories = models.Manager() + + def __str__(self): + return self.name diff --git a/invsystem/object_adder/urls.py b/invsystem/object_adder/urls.py index 98b17e1..7302b21 100644 --- a/invsystem/object_adder/urls.py +++ b/invsystem/object_adder/urls.py @@ -3,4 +3,5 @@ from . import views urlpatterns = [ path('', views.add, name='add'), + path('kategorie', views.category, name='category') ] diff --git a/invsystem/object_adder/views.py b/invsystem/object_adder/views.py index a284689..def3198 100644 --- a/invsystem/object_adder/views.py +++ b/invsystem/object_adder/views.py @@ -1,6 +1,6 @@ from django.shortcuts import render from django.contrib.auth.decorators import login_required -from .forms import ObjectForm +from .forms import ObjectForm, CategoryForm from django.utils import timezone @@ -24,10 +24,28 @@ def add(request): obj.user_added = request.user obj.save() - context = {'title': 'Objekt inventarisieren', 'form': ObjectForm, - 'obj_name': form.cleaned_data.get('title')} - return render(request, 'object_adder/index.html', context) + context = {'title': 'Objekt inventarisieren', 'form': ObjectForm, + 'obj_name': form.cleaned_data.get('title')} + return render(request, 'object_adder/index.html', context) else: context = {'title': 'Objekt inventarisieren', 'form': ObjectForm} return render(request, 'object_adder/index.html', context) + + +@login_required +def category(request): + if request.method == 'POST': + form = CategoryForm(request.POST) + + if form.is_valid(): + cat = form.save() + cat.save() + + context = {'title': 'Neue Kategorie hinzufügen', + 'cat_name': form.cleaned_data.get('name'), + 'form': CategoryForm} + return render(request, 'object_adder/category.html', context) + else: + context = {'form': CategoryForm, 'title': 'Neue Kategorie hinzufügen'} + return render(request, 'object_adder/category.html', context) diff --git a/invsystem/object_lister/__init__.py b/invsystem/object_lister/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/invsystem/object_lister/admin.py b/invsystem/object_lister/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/invsystem/object_lister/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/invsystem/object_lister/apps.py b/invsystem/object_lister/apps.py new file mode 100644 index 0000000..8b69177 --- /dev/null +++ b/invsystem/object_lister/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ObjectListerConfig(AppConfig): + name = 'object_lister' diff --git a/invsystem/object_lister/migrations/__init__.py b/invsystem/object_lister/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/invsystem/object_lister/models.py b/invsystem/object_lister/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/invsystem/object_lister/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/invsystem/object_lister/tests.py b/invsystem/object_lister/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/invsystem/object_lister/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/invsystem/object_lister/urls.py b/invsystem/object_lister/urls.py new file mode 100644 index 0000000..c63fc43 --- /dev/null +++ b/invsystem/object_lister/urls.py @@ -0,0 +1,6 @@ +from django.urls import path +from . import views + +urlpatterns = [ + path('', views.objlist, name='objlist'), +] diff --git a/invsystem/object_lister/views.py b/invsystem/object_lister/views.py new file mode 100644 index 0000000..fd3469b --- /dev/null +++ b/invsystem/object_lister/views.py @@ -0,0 +1,13 @@ +from django.shortcuts import render +from object_adder.models import Object +from django.contrib.auth.decorators import login_required + + +# Create your views here. +@login_required +def objlist(request): + + objects = Object.objects.all() + + context = {'title': 'Inventar', 'objects': objects} + return render(request, 'object_lister/index.html', context) diff --git a/invsystem/user_manager/static/user_manager/style.css b/invsystem/user_manager/static/user_manager/style.css index a84d5ce..65066c3 100644 --- a/invsystem/user_manager/static/user_manager/style.css +++ b/invsystem/user_manager/static/user_manager/style.css @@ -57,26 +57,62 @@ } - -.title-wrapper *{ +.title-wrapper * { vertical-align: middle; } -#id_img{ +#id_img { display: inline-block; - margin-left: 1.2em; } -.description-wrapper *{ +.description-wrapper * { vertical-align: middle; } -.invform *{ +.invform * { margin-top: 1.5em; } -#id_description{ +#id_description { width: 18em; height: 5em; +} + +.catform * { + margin-top: 0.7em; +} + +.btnwrapper { + display: flex; + align-items: center; +} + +.newcatlink { + margin-left: 2em; +} + +.objecttable { + border-collapse: collapse; + width: 100%; + margin-top: 2em; + margin-bottom: 2em; +} + +.objecttable-data, .objecttable-head { + border: 1px solid #dddddd; + text-align: center; + padding: 0.4em; +} + +.objecttable-row:nth-child(even) { + background-color: #dddddd; +} + +.objecttable-row:hover { + -webkit-box-shadow: 3px 3px 28px -3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 3px 3px 28px -3px rgba(0, 0, 0, 0.1); + box-shadow: 3px 3px 28px -3px rgba(0, 0, 0, 0.1); + border-radius: 10px; + transition: 0.1s; } \ No newline at end of file diff --git a/invsystem/user_manager/templates/bases/navbar.html b/invsystem/user_manager/templates/bases/navbar.html index e7ae547..d51818c 100644 --- a/invsystem/user_manager/templates/bases/navbar.html +++ b/invsystem/user_manager/templates/bases/navbar.html @@ -37,6 +37,7 @@
  • Home
  • {% if user.is_authenticated %}
  • Objekt inventarisieren
  • +
  • Inventar
  • {% endif %} {% if user.is_authenticated %} diff --git a/invsystem/user_manager/templates/object_adder/category.html b/invsystem/user_manager/templates/object_adder/category.html new file mode 100644 index 0000000..6f8fbfa --- /dev/null +++ b/invsystem/user_manager/templates/object_adder/category.html @@ -0,0 +1,27 @@ +{% extends 'bases/navbar.html' %} + +{% block content %} + + +
    + {% if not cat_name is None %} +
    + × + Die Kategorie {{ cat_name }} wurde erstellt! +
    + {% endif %} +
    + {% csrf_token %} +
    + {{ form.name.errors }} + + {{ form.name }} +
    + + +
    +
    + +{% endblock %} + + \ No newline at end of file diff --git a/invsystem/user_manager/templates/object_adder/index.html b/invsystem/user_manager/templates/object_adder/index.html index b54c0a2..01087b9 100644 --- a/invsystem/user_manager/templates/object_adder/index.html +++ b/invsystem/user_manager/templates/object_adder/index.html @@ -3,7 +3,7 @@ {% block content %} -
    +
    {% if not obj_name is None %}
    × @@ -22,6 +22,11 @@ {{ form.title }}
    +
    + {{ form.category.errors }} + + {{ form.category }} +
    {{ form.img.errors }} @@ -32,8 +37,10 @@ {{ form.description }}
    - - +
    + + Neue Kategorie hinzufügen +
    diff --git a/invsystem/user_manager/templates/object_lister/index.html b/invsystem/user_manager/templates/object_lister/index.html new file mode 100644 index 0000000..c536e2f --- /dev/null +++ b/invsystem/user_manager/templates/object_lister/index.html @@ -0,0 +1,29 @@ +{% extends 'bases/navbar.html' %} + +{% block content %} + + +
    + + + + + + + + + {% for object in objects %} + + + + + + + + {% endfor %} +
    NameAnzahlKategorieInventarisierungsdatumHinzugefügt von
    {{ object.title }}{{ object.ammout }}{{ object.category }}{{ object.inventarized_date }}{{ object.user_added }}
    +
    + +{% endblock %} + + \ No newline at end of file