I am trying to make a custom build decorator in Django.
my models.py:
class myCustomeUser(AbstractUser):
id = models.AutoField(primary_key=True)
username = models.CharField(max_length=20, unique="True", blank=False)
password = models.CharField(max_length=20, blank=False)
is_Inspector = models.BooleanField(default=False)
is_Industry = models.BooleanField(default=False)
is_Admin = models.BooleanField(default=False)
def __str__(self):
return self.username
class Inspector(models.Model):
user = models.ForeignKey(myCustomeUser, on_delete=models.CASCADE, related_name='inspector_releted_user')
name = models.CharField(max_length=200, blank=False, null=True)
gmail = models.EmailField(null=True, blank=False, unique=True)
nid = models.IntegerField(blank=False, unique=True)
inspector_varified = models.BooleanField(default=False, blank=True, null=True)
def __str__(self):
return self.name
Now I want to build a decorator that will allow the user to pass by satisfying the following 3 conditions:
useris active and logged inis_Inspectorvalue is Trueinspector_varified's value is alsoTrue(inspector_varifiedis in underInspectorclass)
my decorators.py:
def inspector_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url='app2:request_login'):
actual_decorator = user_passes_test(
lambda u: u.is_active and u.is_Inspector,
login_url=login_url,
redirect_field_name=redirect_field_name
)
if function:
return actual_decorator(function)
return actual_decorator
It is maintaining conditions 1 & 2, but condition-3 is not satisfied by it. How can I code for it also?