From ea5d8e84f00496136f6ee46ddcf32bdd1e280734 Mon Sep 17 00:00:00 2001 From: Andreas Zweili Date: Tue, 7 Mar 2023 22:36:47 +0100 Subject: [PATCH] Split the user into a user and a login model --- src/core/models/__init__.py | 1 + src/core/models/service.py | 8 ++++++++ src/users/admin.py | 16 +++++++++++----- src/users/models/__init__.py | 3 ++- src/users/models/login.py | 22 ++++++++++++++++++++++ src/users/models/user.py | 12 ------------ 6 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 src/core/models/service.py create mode 100644 src/users/models/login.py diff --git a/src/core/models/__init__.py b/src/core/models/__init__.py index 8f2d864..fb67016 100644 --- a/src/core/models/__init__.py +++ b/src/core/models/__init__.py @@ -1,5 +1,6 @@ from .calendar import DayOfMonth, Month, Weekday from .category import Category from .company import Company +from .service import Service from .time import HoursInDay, MinutesInHour from .user import InventoryUser diff --git a/src/core/models/service.py b/src/core/models/service.py new file mode 100644 index 0000000..dceca35 --- /dev/null +++ b/src/core/models/service.py @@ -0,0 +1,8 @@ +from django.db import models + + +class Service(models.Model): + name = models.CharField(max_length=50) + + def __str__(self): + return self.name diff --git a/src/users/admin.py b/src/users/admin.py index 9610462..25c9915 100644 --- a/src/users/admin.py +++ b/src/users/admin.py @@ -4,9 +4,10 @@ from licenses.models import LicenseWithUser from .models import ( Group, + Login, + LoginInGroup, MailAlias, User, - UserInGroup, ) @@ -17,7 +18,7 @@ class LicenseWithUserInLine(admin.StackedInline): class GroupInLine(admin.StackedInline): - model = UserInGroup + model = LoginInGroup extra = 0 verbose_name_plural = "Groups" @@ -28,10 +29,14 @@ class MailAliasInLine(admin.StackedInline): verbose_name_plural = "Mail Aliases" +class LoginAdmin(admin.ModelAdmin): + list_display = ("login", "enabled") + inlines = (GroupInLine,) + + class UserAdmin(admin.ModelAdmin): - list_display = ("name", "customer", "enabled") + list_display = ("name", "customer") inlines = ( - GroupInLine, MailAliasInLine, LicenseWithUserInLine, ) @@ -40,4 +45,5 @@ class UserAdmin(admin.ModelAdmin): admin.site.register(Group) admin.site.register(MailAlias) admin.site.register(User, UserAdmin) -admin.site.register(UserInGroup) +admin.site.register(Login, LoginAdmin) +admin.site.register(LoginInGroup) diff --git a/src/users/models/__init__.py b/src/users/models/__init__.py index 6291d67..f83d6cd 100644 --- a/src/users/models/__init__.py +++ b/src/users/models/__init__.py @@ -1,3 +1,4 @@ -from .user import User, UserInGroup +from .user import User from .groups import Group +from .login import Login, LoginInGroup from .mailalias import MailAlias diff --git a/src/users/models/login.py b/src/users/models/login.py new file mode 100644 index 0000000..489f4ba --- /dev/null +++ b/src/users/models/login.py @@ -0,0 +1,22 @@ +from django.db import models + +from core.models import Service + +from .user import User +from .groups import Group + + +class Login(models.Model): + login = models.CharField(max_length=50) + password = models.CharField(max_length=50) + email = models.CharField(max_length=50, blank=True) + enabled = models.BooleanField() + description = models.TextField(blank=True) + user = models.ForeignKey(User, on_delete=models.CASCADE) + service = models.ForeignKey(Service, on_delete=models.DO_NOTHING) + groups = models.ManyToManyField(Group, through="LoginInGroup") + + +class LoginInGroup(models.Model): + user = models.ForeignKey(Login, on_delete=models.CASCADE) + group = models.ForeignKey(Group, on_delete=models.CASCADE) diff --git a/src/users/models/user.py b/src/users/models/user.py index 3142201..debe2d5 100644 --- a/src/users/models/user.py +++ b/src/users/models/user.py @@ -1,19 +1,12 @@ from django.db import models from customers.models import Customer -from .groups import Group class User(models.Model): name = models.CharField(max_length=50) first_name = models.CharField(max_length=50) - ad_login = models.CharField(max_length=50, blank=True) - ad_pw = models.CharField(max_length=50, blank=True) - primary_mail = models.CharField(max_length=50, blank=True) - mail_pw = models.CharField(max_length=50, blank=True) - enabled = models.BooleanField() description = models.TextField(blank=True) customer = models.ForeignKey(Customer, on_delete=models.CASCADE) - groups = models.ManyToManyField(Group, through="UserInGroup") class Meta: ordering = ["name"] @@ -25,8 +18,3 @@ class User(models.Model): from django.urls import reverse return reverse("user", args=[str(self.id)]) - - -class UserInGroup(models.Model): - user = models.ForeignKey(User, on_delete=models.CASCADE) - group = models.ForeignKey(Group, on_delete=models.CASCADE)