class UserProfile(AbstractUser): id = models.UUIDField( primary_key=True, help_text="ID of user", default=make_uuid, editable=True, ) role = models.CharField( choices=UserRole.to_choices(), default=UserRole.User.value, max_length=64, ) organization = models.OneToOneField( Organization, null=True, on_delete=models.CASCADE ) class Meta: verbose_name = "User Info" verbose_name_plural = verbose_name ordering = ["-date_joined"] def __str__(self): return self.username @property def is_administrator(self): return self.role == UserRole.Administrator.name.lower() @property def is_operator(self): return self.role == UserRole.Operator.name.lower() @property def is_common_user(self): return self.role == UserRole.User.name.lower()
class UserCreateBody(serializers.ModelSerializer): role = serializers.ChoiceField( help_text=UserRole.get_info("User roles:", list_str=True), choices=UserRole.to_choices(string_as_value=True), ) password = serializers.CharField( help_text="Password for new user", min_length=6, max_length=32 ) class Meta: model = UserModel fields = ("name", "role", "govern", "password") extra_kwargs = { "name": {"required": True}, "role": {"required": True}, "password": {"required": True}, }
class UserProfile(AbstractUser): id = models.UUIDField( primary_key=True, help_text="ID of user", default=make_uuid, editable=True, ) email = models.EmailField(db_index=True, unique=True) username = models.CharField(default="", max_length=64, help_text="Name of user") role = models.CharField( choices=UserRole.to_choices(True), default=UserRole.User.value, max_length=64, ) organization = models.ForeignKey( Organization, null=True, on_delete=models.CASCADE, related_name="users", ) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] class Meta: verbose_name = "User Info" verbose_name_plural = verbose_name ordering = ["-date_joined"] def __str__(self): return self.username @property def is_administrator(self): return self.role == UserRole.Administrator.name.lower() @property def is_operator(self): return self.role == UserRole.Operator.name.lower() @property def is_common_user(self): return self.role == UserRole.User.name.lower()
class UserCreateBody(serializers.ModelSerializer): role = serializers.ChoiceField( help_text=UserRole.get_info("User roles:", list_str=True), choices=UserRole.to_choices(string_as_value=True), ) class Meta: model = UserProfile fields = ("username", "role", "organization", "password", "email") extra_kwargs = { "username": { "required": True }, "role": { "required": True }, "password": { "required": True }, "email": { "required": True }, }