| 
									
										
										
										
											2017-07-06 11:47:12 +03:00
										 |  |  | import datetime | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 01:03:32 -05:00
										 |  |  | from django import forms | 
					
						
							|  |  |  | from membership.models import CustomUser | 
					
						
							|  |  |  | from django.contrib.auth import authenticate | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-01 20:47:11 +02:00
										 |  |  | from django.utils.translation import ugettext_lazy as _ | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-29 17:34:40 +03:00
										 |  |  | from .models import UserHostingKey | 
					
						
							| 
									
										
										
										
											2016-06-03 00:07:47 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 01:03:32 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-07-06 11:47:12 +03:00
										 |  |  | def generate_ssh_key_name(): | 
					
						
							|  |  |  |     return 'dcl-generated-key-' + datetime.datetime.now().strftime('%m%d%y%H%M') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-20 01:03:32 -05:00
										 |  |  | class HostingUserLoginForm(forms.Form): | 
					
						
							|  |  |  |     email = forms.CharField(widget=forms.EmailInput()) | 
					
						
							|  |  |  |     password = forms.CharField(widget=forms.PasswordInput()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Meta: | 
					
						
							|  |  |  |         fields = ['email', 'password'] | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def clean(self): | 
					
						
							|  |  |  |         email = self.cleaned_data.get('email') | 
					
						
							|  |  |  |         password = self.cleaned_data.get('password') | 
					
						
							|  |  |  |         is_auth = authenticate(email=email, password=password) | 
					
						
							|  |  |  |         if not is_auth: | 
					
						
							| 
									
										
										
										
											2017-07-29 18:19:10 +05:30
										 |  |  |             raise forms.ValidationError( | 
					
						
							| 
									
										
										
										
											2017-08-03 22:00:41 +05:30
										 |  |  |                 _("Your username and/or password were incorrect.")) | 
					
						
							| 
									
										
										
										
											2017-06-11 05:14:20 +05:30
										 |  |  |         elif is_auth.validated == 0: | 
					
						
							| 
									
										
										
										
											2017-07-29 18:19:10 +05:30
										 |  |  |             raise forms.ValidationError( | 
					
						
							|  |  |  |                 _("Your account is not activated yet.")) | 
					
						
							| 
									
										
										
										
											2016-04-20 01:03:32 -05:00
										 |  |  |         return self.cleaned_data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def clean_email(self): | 
					
						
							|  |  |  |         email = self.cleaned_data.get('email') | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             CustomUser.objects.get(email=email) | 
					
						
							|  |  |  |             return email | 
					
						
							|  |  |  |         except CustomUser.DoesNotExist: | 
					
						
							| 
									
										
										
										
											2016-06-21 00:10:38 -05:00
										 |  |  |             raise forms.ValidationError("User does not exist") | 
					
						
							| 
									
										
										
										
											2016-04-20 01:03:32 -05:00
										 |  |  |         else: | 
					
						
							|  |  |  |             return email | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class HostingUserSignupForm(forms.ModelForm): | 
					
						
							|  |  |  |     confirm_password = forms.CharField(widget=forms.PasswordInput()) | 
					
						
							|  |  |  |     password = forms.CharField(widget=forms.PasswordInput()) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Meta: | 
					
						
							|  |  |  |         model = CustomUser | 
					
						
							|  |  |  |         fields = ['name', 'email', 'password'] | 
					
						
							|  |  |  |         widgets = { | 
					
						
							|  |  |  |             'name': forms.TextInput(attrs={'placeholder': 'Enter your name or company name'}), | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def clean_confirm_password(self): | 
					
						
							|  |  |  |         password = self.cleaned_data.get('password') | 
					
						
							|  |  |  |         confirm_password = self.cleaned_data.get('confirm_password') | 
					
						
							|  |  |  |         if not confirm_password == password: | 
					
						
							|  |  |  |             raise forms.ValidationError("Passwords don't match") | 
					
						
							|  |  |  |         return confirm_password | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class UserHostingKeyForm(forms.ModelForm): | 
					
						
							| 
									
										
										
										
											2017-06-01 20:47:11 +02:00
										 |  |  |     private_key = forms.CharField(widget=forms.HiddenInput(), required=False) | 
					
						
							| 
									
										
										
										
											2017-07-05 16:57:49 +03:00
										 |  |  |     public_key = forms.CharField(widget=forms.Textarea( | 
					
						
							| 
									
										
										
										
											2017-07-29 18:19:10 +05:30
										 |  |  |         attrs={'class': 'form_public_key', 'placeholder': _('Paste here your public key')}), | 
					
						
							| 
									
										
										
										
											2017-07-05 16:57:49 +03:00
										 |  |  |         required=False, | 
					
						
							|  |  |  |     ) | 
					
						
							| 
									
										
										
										
											2017-06-01 20:47:11 +02:00
										 |  |  |     user = forms.models.ModelChoiceField(queryset=CustomUser.objects.all(), | 
					
						
							| 
									
										
										
										
											2017-06-29 17:34:40 +03:00
										 |  |  |                                          required=False, widget=forms.HiddenInput()) | 
					
						
							| 
									
										
										
										
											2017-07-06 11:47:12 +03:00
										 |  |  |     name = forms.CharField(required=False, widget=forms.TextInput( | 
					
						
							| 
									
										
										
										
											2017-07-29 18:19:10 +05:30
										 |  |  |         attrs={'class': 'form_key_name', 'placeholder': _('Give a name to your key')})) | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, *args, **kwargs): | 
					
						
							|  |  |  |         self.request = kwargs.pop("request") | 
					
						
							|  |  |  |         super(UserHostingKeyForm, self).__init__(*args, **kwargs) | 
					
						
							| 
									
										
										
										
											2017-07-31 19:43:15 +05:30
										 |  |  |         self.fields['name'].label = _('Key name') | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def clean_name(self): | 
					
						
							| 
									
										
										
										
											2017-06-01 20:47:11 +02:00
										 |  |  |         return self.data.get('name') | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def clean_user(self): | 
					
						
							|  |  |  |         return self.request.user | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def clean(self): | 
					
						
							|  |  |  |         cleaned_data = self.cleaned_data | 
					
						
							| 
									
										
										
										
											2017-08-03 15:07:36 +02:00
										 |  |  |         if 'generate' in self.request.POST: | 
					
						
							| 
									
										
										
										
											2017-07-06 11:47:12 +03:00
										 |  |  |             self.cleaned_data['name'] = generate_ssh_key_name() | 
					
						
							| 
									
										
										
										
											2017-05-03 23:19:32 -05:00
										 |  |  |             private_key, public_key = UserHostingKey.generate_keys() | 
					
						
							|  |  |  |             cleaned_data.update({ | 
					
						
							|  |  |  |                 'private_key': private_key, | 
					
						
							|  |  |  |                 'public_key': public_key | 
					
						
							|  |  |  |             }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return cleaned_data | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     class Meta: | 
					
						
							|  |  |  |         model = UserHostingKey | 
					
						
							| 
									
										
										
										
											2017-06-01 20:47:11 +02:00
										 |  |  |         fields = ['user', 'name', 'public_key'] |