in privaterelay/models.py [0:0]
def add_subdomain(self, subdomain):
# Handles if the subdomain is "" or None
if not subdomain:
raise CannotMakeSubdomainException(
"error-subdomain-cannot-be-empty-or-null"
)
# subdomain must be all lowercase
subdomain = subdomain.lower()
if not self.has_premium:
raise CannotMakeSubdomainException("error-premium-set-subdomain")
if self.subdomain is not None:
raise CannotMakeSubdomainException("error-premium-cannot-change-subdomain")
self.subdomain = subdomain
# The validator defined in the subdomain field does not get run in full_clean()
# when self.subdomain is "" or None, so we need to run the validator again to
# catch these cases.
valid_available_subdomain(subdomain)
self.full_clean()
self.save()
RegisteredSubdomain.objects.create(subdomain_hash=hash_subdomain(subdomain))
return subdomain