Split the user into a user and a login model

This commit is contained in:
Andreas Zweili 2023-03-07 22:36:47 +01:00
parent deec5f87bd
commit ea5d8e84f0
6 changed files with 44 additions and 18 deletions

View File

@ -1,5 +1,6 @@
from .calendar import DayOfMonth, Month, Weekday from .calendar import DayOfMonth, Month, Weekday
from .category import Category from .category import Category
from .company import Company from .company import Company
from .service import Service
from .time import HoursInDay, MinutesInHour from .time import HoursInDay, MinutesInHour
from .user import InventoryUser from .user import InventoryUser

View File

@ -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

View File

@ -4,9 +4,10 @@ from licenses.models import LicenseWithUser
from .models import ( from .models import (
Group, Group,
Login,
LoginInGroup,
MailAlias, MailAlias,
User, User,
UserInGroup,
) )
@ -17,7 +18,7 @@ class LicenseWithUserInLine(admin.StackedInline):
class GroupInLine(admin.StackedInline): class GroupInLine(admin.StackedInline):
model = UserInGroup model = LoginInGroup
extra = 0 extra = 0
verbose_name_plural = "Groups" verbose_name_plural = "Groups"
@ -28,10 +29,14 @@ class MailAliasInLine(admin.StackedInline):
verbose_name_plural = "Mail Aliases" verbose_name_plural = "Mail Aliases"
class LoginAdmin(admin.ModelAdmin):
list_display = ("login", "enabled")
inlines = (GroupInLine,)
class UserAdmin(admin.ModelAdmin): class UserAdmin(admin.ModelAdmin):
list_display = ("name", "customer", "enabled") list_display = ("name", "customer")
inlines = ( inlines = (
GroupInLine,
MailAliasInLine, MailAliasInLine,
LicenseWithUserInLine, LicenseWithUserInLine,
) )
@ -40,4 +45,5 @@ class UserAdmin(admin.ModelAdmin):
admin.site.register(Group) admin.site.register(Group)
admin.site.register(MailAlias) admin.site.register(MailAlias)
admin.site.register(User, UserAdmin) admin.site.register(User, UserAdmin)
admin.site.register(UserInGroup) admin.site.register(Login, LoginAdmin)
admin.site.register(LoginInGroup)

View File

@ -1,3 +1,4 @@
from .user import User, UserInGroup from .user import User
from .groups import Group from .groups import Group
from .login import Login, LoginInGroup
from .mailalias import MailAlias from .mailalias import MailAlias

22
src/users/models/login.py Normal file
View File

@ -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)

View File

@ -1,19 +1,12 @@
from django.db import models from django.db import models
from customers.models import Customer from customers.models import Customer
from .groups import Group
class User(models.Model): class User(models.Model):
name = models.CharField(max_length=50) name = models.CharField(max_length=50)
first_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) description = models.TextField(blank=True)
customer = models.ForeignKey(Customer, on_delete=models.CASCADE) customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
groups = models.ManyToManyField(Group, through="UserInGroup")
class Meta: class Meta:
ordering = ["name"] ordering = ["name"]
@ -25,8 +18,3 @@ class User(models.Model):
from django.urls import reverse from django.urls import reverse
return reverse("user", args=[str(self.id)]) 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)