From af28efa2d4186a3ee7ab7cbb6620363b9e2e09da Mon Sep 17 00:00:00 2001 From: Jens Timmerman Date: Sun, 4 Jul 2021 21:05:00 +0200 Subject: [PATCH] added user system --- im/settings.py | 13 ++- im/urls.py | 4 + inventory/admin.py | 4 +- .../migrations/0002_auto_20210704_1810.py | 23 +++++ inventory/models.py | 10 ++- inventory/templates/base.html | 89 +++++++++++++++++++ inventory/templates/inventory/base.html | 18 +++- .../templates/inventory/category_form.html | 12 +++ inventory/templates/inventory/index.html | 11 +++ .../templates/inventory/location_form.html | 12 +++ .../templates/inventory/pantryitem_form.html | 13 +++ .../inventory/pantryitemline_form.html | 17 ++++ inventory/templates/inventory/unit_list.html | 10 +++ inventory/urls.py | 5 ++ inventory/views.py | 38 +++++++- users/__init__.py | 0 users/apps.py | 5 ++ users/forms.py | 5 ++ users/templates/registration/login.html | 15 ++++ .../registration/password_change_done.html | 7 ++ .../registration/password_change_form.html | 13 +++ .../registration/password_reset_complete.html | 8 ++ .../registration/password_reset_confirm.html | 11 +++ .../registration/password_reset_done.html | 7 ++ .../registration/password_reset_form.html | 13 +++ users/templates/users/register.html | 13 +++ users/views.py | 37 ++++++++ 27 files changed, 402 insertions(+), 11 deletions(-) create mode 100644 inventory/migrations/0002_auto_20210704_1810.py create mode 100644 inventory/templates/base.html create mode 100644 inventory/templates/inventory/category_form.html create mode 100644 inventory/templates/inventory/location_form.html create mode 100644 inventory/templates/inventory/pantryitem_form.html create mode 100644 inventory/templates/inventory/pantryitemline_form.html create mode 100644 inventory/templates/inventory/unit_list.html create mode 100644 users/__init__.py create mode 100644 users/apps.py create mode 100644 users/forms.py create mode 100644 users/templates/registration/login.html create mode 100644 users/templates/registration/password_change_done.html create mode 100644 users/templates/registration/password_change_form.html create mode 100644 users/templates/registration/password_reset_complete.html create mode 100644 users/templates/registration/password_reset_confirm.html create mode 100644 users/templates/registration/password_reset_done.html create mode 100644 users/templates/registration/password_reset_form.html create mode 100644 users/templates/users/register.html create mode 100644 users/views.py diff --git a/im/settings.py b/im/settings.py index 90623df..38c05be 100644 --- a/im/settings.py +++ b/im/settings.py @@ -25,14 +25,19 @@ SECRET_KEY = '-h%7n38#ij*7$pzkv=8-+9axa6o6fk9e4z3x676774f&06-di9' # SECURITY WARNING: don't run with debug turned on in production! DEBUG = True -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = [ + '0.0.0.0', +] +LOGIN_REDIRECT_URL = "im:index" +LOGOUT_REDIRECT_URL = "im:index" # Application definition INSTALLED_APPS = [ - 'django.contrib.admin', + 'users.apps.UsersConfig', 'django.contrib.auth', + 'django.contrib.admin', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', @@ -124,3 +129,7 @@ USE_TZ = True # https://docs.djangoproject.com/en/2.1/howto/static-files/ STATIC_URL = '/static/' + + +EMAIL_HOST = 'mail.caret.be' +EMAIL_PORT = '25' diff --git a/im/urls.py b/im/urls.py index 3f15257..2529b47 100644 --- a/im/urls.py +++ b/im/urls.py @@ -16,7 +16,11 @@ Including another URLconf from django.contrib import admin from django.urls import include, path +from users.views import register + urlpatterns = [ path('admin/', admin.site.urls), + path('accounts/', include('django.contrib.auth.urls')), + path("register/", register, name="register"), path('', include('inventory.urls')), ] diff --git a/inventory/admin.py b/inventory/admin.py index f0c7f05..f7161be 100644 --- a/inventory/admin.py +++ b/inventory/admin.py @@ -29,7 +29,7 @@ upper_case_name.short_description = 'Name' class PantryItemLineAdmin(admin.ModelAdmin): - list_filter = ['expiry_date', 'pantry_item__unit', 'pantry_item', 'pantry_item__min_quantity'] + list_filter = ['expiry_date', 'pantry_item__unit', 'pantry_item', 'pantry_item__min_quantity', 'location'] search_fields = ['info', 'pantry_item__name', 'pantry_item__info'] autocomplete_fields = ['pantry_item'] @@ -62,7 +62,7 @@ class LocationAdmin(AutocompleteAdmin): class PantryItemAdmin(admin.ModelAdmin): - list_filter = ['category', 'unit', 'min_quantity', 'location'] + list_filter = ['category', 'unit', 'min_quantity'] search_fields = ['info', 'name', 'category__name', 'unit__name'] autocomplete_fields = ['category', 'unit'] inlines = [PantryItemInLine] diff --git a/inventory/migrations/0002_auto_20210704_1810.py b/inventory/migrations/0002_auto_20210704_1810.py new file mode 100644 index 0000000..a0005dd --- /dev/null +++ b/inventory/migrations/0002_auto_20210704_1810.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.4 on 2021-07-04 18:10 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0001_initial'), + ] + + operations = [ + migrations.RemoveField( + model_name='pantryitem', + name='location', + ), + migrations.AddField( + model_name='pantryitemline', + name='location', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='inventory.location'), + ), + ] diff --git a/inventory/models.py b/inventory/models.py index e515215..c8a626f 100644 --- a/inventory/models.py +++ b/inventory/models.py @@ -39,7 +39,7 @@ class Unit(models.Model): class Location(models.Model): """Location for a pantry item line""" - name = models.CharField(max_length=200, null=True, blank=True) + name = models.CharField(max_length=200) in_location = models.ForeignKey("self", on_delete=models.PROTECT, null=True, blank=True) def __str__(self): @@ -47,6 +47,9 @@ class Location(models.Model): return self.name + ' ' + str(self.in_location) return self.name + class Meta: + unique_together = ('name', 'in_location') + class PantryItem(models.Model): """A think you keep in your pantry """ @@ -60,9 +63,6 @@ class PantryItem(models.Model): name = models.CharField(max_length=200) unit = models.ForeignKey(Unit, on_delete=models.PROTECT, null=True) info = models.CharField(max_length=200, null=True, blank=True) - # location is saved on a per item base, not itemline - # you can have multiple pantries with subpantries - location = models.ForeignKey(Location, on_delete=models.PROTECT, null=True, blank=True) def __str__(self): return self.name @@ -81,6 +81,8 @@ class PantryItemLine(models.Model): size = models.IntegerField(default=1) info = models.CharField(max_length=200, null=True, blank=True) + location = models.ForeignKey(Location, on_delete=models.PROTECT, null=True, blank=True) + def unit(self): return self.pantry_item.unit diff --git a/inventory/templates/base.html b/inventory/templates/base.html new file mode 100644 index 0000000..115da42 --- /dev/null +++ b/inventory/templates/base.html @@ -0,0 +1,89 @@ + + + + + + + Inventory Management + + + + + + +
+
+
+ {% block content %} + BASE TEMPLATE + {% endblock %} +
+
+
+ + + + + + diff --git a/inventory/templates/inventory/base.html b/inventory/templates/inventory/base.html index 94ca2e6..115da42 100644 --- a/inventory/templates/inventory/base.html +++ b/inventory/templates/inventory/base.html @@ -21,7 +21,7 @@ Consume + + + + {% else %} + Login + {% endif %} + +