fix: username validations

This commit is contained in:
pateljannat
2021-08-06 14:41:11 +05:30
parent 63d70fc037
commit 844fcc9bca
3 changed files with 89 additions and 6 deletions

View File

@@ -8,21 +8,43 @@ from frappe import _
class CustomUser(User):
""" def validate(self):
def validate(self):
super(CustomUser, self).validate()
self.validate_username() """
self.validate_username_characters()
""" def validate_username(self):
def validate_username_characters(self):
if self.is_new():
if self.username.find(" "):
self.username.replace(" ", "")
if not re.match("^[A-Za-z0-9_]*$", self.username):
self.username = self.remove_illegal_characters()
if not self.username:
self.username = frappe.scrub(self.first_name) + random.randint()
self.username = self.get_username_from_first_name()
elif not re.match("^[A-Za-z0-9_]*$", self.username):
frappe.throw(_("Username can only contain alphabets, numbers and underscore.")) """
if self.username_exists():
self.username = self.remove_illegal_characters() + str(random.randint(0, 99))
else:
if not re.match("^[A-Za-z0-9_-]*$", self.username):
frappe.throw(_("Username can only contain alphabets, numbers, hyphen and underscore."))
if self.username[0] == "-" or self.username[len(self.username) - 1] == "-":
frappe.throw(_("First and Last character of username cannot be Hyphen(-)."))
def get_username_from_first_name(self):
return frappe.scrub(self.first_name) + str(random.randint(0, 99))
def remove_illegal_characters(self):
username = ''.join([c for c in self.username if c.isalnum() or c in ['-', '_']])
while username[0] == "-" or username[len(username) - 1] == "-":
if username[0] == "-":
username = username[1:]
if username[len(username) - 1]:
username = username[:1]
return username
def get_authored_courses(self) -> int:
"""Returns the number of courses authored by this user.