· last year · Feb 18, 2025, 01:10 PM
1from django.db import models
2from django.contrib.auth.models import BaseUserManager, AbstractBaseUser
3
4
5class UserMangaer(BaseUserManager):
6 def create_user(self, email, password=None):
7 """
8 Crea e salva gli utenti inserendo email e password
9 """
10 if not email:
11 raise ValueError("Gli utenti devono avere un indirizzo email")
12
13 user = self.model(email=self.normalize_email(email))
14 user.set_password(password)
15 user.save(using=self.db)
16 return user
17
18 def create_superuser(self, email, password=None):
19 """
20 Crea e salva gli superutenti inserendo email e password
21 """
22 user = self.create_user(email, password=password)
23 user.is_admin = True
24 user.save(using=self.db)
25 return user
26
27
28class User(AbstractBaseUser):
29
30 email = models.EmailField(
31 verbose_name="Indirizzo email",
32 max_length=255,
33 unique=True,
34 )
35 name = models.CharField(max_length=50, verbose_name="Nome")
36 surname = models.CharField(max_length=50, verbose_name="Cognome")
37
38 is_active = models.BooleanField(default=True)
39 is_admin = models.BooleanField(default=False)
40 is_agent = models.BooleanField(default=False)
41 is_customer = models.BooleanField(default=False)
42
43 objects = UserMangaer()
44
45 USERNAME_FIELD = "email"
46 REQUIRED_FIELDS = []
47
48 def __str__(self):
49 return self.email
50
51 def has_perm(self, perm, obj=None):
52 "L'utente ha permessi specifici?"
53 return True
54
55 def has_module_perms(self, app_label):
56 return True
57
58 @property
59 def is_staff(self):
60 return self.is_admin
61
62
63class Agency(models.Model):
64 agency_name = models.CharField(max_length=50, verbose_name="Agenzia")
65 agency_address = models.CharField(max_length=99, verbose_name="Indirizzo")
66
67
68class Customer(models.Model):
69 user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
70 phone = models.CharField(max_length=13, verbose_name="Numero di cellulare")
71
72 def __str__(self):
73 return self.user.name + " " + self.user.surname
74
75
76class Agent(models.Model):
77 user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
78 phone = models.CharField(max_length=13, verbose_name="Numero di cellulare")
79 # agency = models.ManyToManyField(Agency, verbose_name="Agenzia Immobiliare")
80 """
81 Pensare a chi registra l'agenzia immobiliare,
82 si potrebbe pensaere a pacchetti ad-hoc per agenzie
83 gratis fino a 5 dipendenti.
84 """
85 rea = models.CharField(max_length=6, verbose_name="Codice R.E.A.")
86
87 def __str__(self):
88 return self.user.name + " " + self.user.surname
89
90
91"""
92
93"""
94