Hi, I'm trying to set a custom user model for my app where there will be 4 possible roles : admin, company owner, company employee, clients.
I wrote couple of things but I would like to know, how I should approach this so when an owner is created a company is created as well. Lastly when the company is created that the only the owner and admin can add an employee to a company. See below snippets of my admin and models.py
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=125)
address = models.CharField(max_length=125)
description = models.TextField(blank=True)
telephone = models.IntegerField(blank=False)
def __str__(self):
return self.name
def create_company(name):
if not name:
raise ValueError('Company must have a name')
company = Company.objects.create(name = name)
return company
class UserManager(BaseUserManager):
def create_owner(self, email, first_name, last_name, name, password):
company = create_company(name = name)
user = self.create_user(
email = self.normalized_email(email),
first_name = first_name,
last_name = last_name,
company = company,
password = password,
)
user.save(using=self._db)
return user
name = forms.CharField(label="name")
owner = forms.CharField(label="Company owner")
class Meta:
model = Company
fields = ["name","address","description","telephone"]
def save(self, commit=True):
user = super().save(commit=False)
if commit:
user.save()
return user
class UserAdmin(BaseUserAdmin):
role = ROLE_CHOICES = ((1, 'Create Company'),
(2, 'Create User'))
if role == 2:
add_form1 = UserCreationForm
else:
add_form2 = CompanyCreationForm