mirror of
				https://github.com/peeringdb/peeringdb.git
				synced 2024-05-11 05:55:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			116 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import re
 | |
| from peeringdb_server.models import User, Organization
 | |
| from django.contrib.auth import forms as auth_forms
 | |
| from django import forms
 | |
| from django_namespace_perms.constants import *
 | |
| from django.utils.translation import ugettext_lazy as _
 | |
| 
 | |
| 
 | |
| class OrgAdminUserPermissionForm(forms.Form):
 | |
| 
 | |
|     entity = forms.CharField()
 | |
|     perms = forms.IntegerField()
 | |
| 
 | |
|     def clean_perms(self):
 | |
|         perms = self.cleaned_data.get("perms")
 | |
|         if not perms & PERM_READ:
 | |
|             perms = perms | PERM_READ
 | |
|         if perms & PERM_DENY:
 | |
|             perms = perms ^ PERM_DENY
 | |
|         if perms > PERM_CRUD or perms < PERM_READ:
 | |
|             raise forms.ValidationError(_("Invalid permission level"))
 | |
|         return perms
 | |
| 
 | |
| 
 | |
| class AffiliateToOrgForm(forms.Form):
 | |
| 
 | |
|     asn = forms.CharField(required=False)
 | |
|     org = forms.CharField(required=False)
 | |
| 
 | |
|     def clean_org(self):
 | |
|         org_id = self.cleaned_data.get("org")
 | |
|         if not org_id:
 | |
|             return 0
 | |
| 
 | |
|         # if org id can be inted, an existing org id has been submitted
 | |
|         # otherwise an org name has been submitted that may or may not exist
 | |
|         try:
 | |
|             org_id = int(org_id)
 | |
|             if not Organization.objects.filter(id=org_id).exists():
 | |
|                 if self.cleaned_data.get("asn"):
 | |
|                     return 0
 | |
|         except ValueError:
 | |
|             try:
 | |
|                 org = Organization.objects.get(name=org_id)
 | |
|                 return org.id
 | |
|             except Organization.DoesNotExist:
 | |
|                 self.cleaned_data["org_name"] = org_id
 | |
|                 return 0
 | |
| 
 | |
|         return org_id
 | |
| 
 | |
|     def clean_asn(self):
 | |
|         asn = self.cleaned_data.get("asn")
 | |
|         if not asn:
 | |
|             return 0
 | |
|         try:
 | |
|             asn = int(re.sub("\D", "", asn))
 | |
|         except ValueError:
 | |
|             raise forms.ValidationError(_("ASN needs to be a number"))
 | |
|         return asn
 | |
| 
 | |
| 
 | |
| class PasswordChangeForm(forms.Form):
 | |
|     password = forms.CharField()
 | |
|     password_v = forms.CharField()
 | |
| 
 | |
|     def clean_password(self):
 | |
|         password = self.cleaned_data.get("password")
 | |
|         if len(password) < 10:
 | |
|             raise forms.ValidationError(
 | |
|                 _("Needs to be at least 10 characters long"))
 | |
|         return password
 | |
| 
 | |
|     def clean_password_v(self):
 | |
|         password = self.cleaned_data.get("password")
 | |
|         password_v = self.cleaned_data.get("password_v")
 | |
| 
 | |
|         if password != password_v:
 | |
|             raise forms.ValidationError(
 | |
|                 _("Passwords need to match"), code="password_mismatch")
 | |
|         return password_v
 | |
| 
 | |
| 
 | |
| class PasswordResetForm(forms.Form):
 | |
|     email = forms.EmailField()
 | |
| 
 | |
| 
 | |
| class UsernameRetrieveForm(forms.Form):
 | |
|     email = forms.EmailField()
 | |
| 
 | |
| 
 | |
| class UserCreationForm(auth_forms.UserCreationForm):
 | |
|     class Meta:
 | |
|         model = User
 | |
|         fields = (
 | |
|             "username",
 | |
|             "email",
 | |
|             "first_name",
 | |
|             "last_name",
 | |
|         )
 | |
| 
 | |
| 
 | |
| class UserLocaleForm(forms.Form):
 | |
|     locale = forms.CharField()
 | |
| 
 | |
|     def clean_locale(self):
 | |
|         loc = self.cleaned_data.get("locale")
 | |
|         # django.utils.translation.check_for_language() #lang_code
 | |
|         if loc:
 | |
|             return loc
 | |
|         return None
 | |
| 
 | |
|     class Meta:
 | |
|         model = User
 | |
|         fields = ('locale')
 |