summaryrefslogtreecommitdiffstats
path: root/tools/pharos-dashboard/account/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/pharos-dashboard/account/views.py')
-rw-r--r--tools/pharos-dashboard/account/views.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/tools/pharos-dashboard/account/views.py b/tools/pharos-dashboard/account/views.py
new file mode 100644
index 00000000..34328674
--- /dev/null
+++ b/tools/pharos-dashboard/account/views.py
@@ -0,0 +1,78 @@
+from django.contrib import messages
+from django.contrib.auth.decorators import login_required
+from django.core.exceptions import ObjectDoesNotExist
+from django.urls import reverse
+from django.utils.decorators import method_decorator
+from django.views.generic import FormView
+from registration.backends.simple.views import RegistrationView as BaseRegistrationView
+
+from account.forms import AccountSettingsForm
+from account.models import UserProfile
+
+
+class RegistrationView(BaseRegistrationView):
+ template_name = 'registration/registration_form.html'
+
+ def get_context_data(self, **kwargs):
+ context = super(RegistrationView, self).get_context_data(**kwargs)
+ context.update({'title': "Registration"})
+ return context
+
+ def register(self, form):
+ new_user = super(RegistrationView, self).register(form)
+ UserProfile.objects.create(user=new_user)
+ messages.add_message(self.request, messages.INFO, 'Please complete your user profile.')
+ return new_user
+
+ def get_success_url(self, user):
+ return reverse('account:settings')
+
+
+@method_decorator(login_required, name='dispatch')
+class AccountSettingsView(FormView):
+ form_class = AccountSettingsForm
+ template_name = 'registration/registration_form.html'
+ success_url = '/'
+
+ def dispatch(self, request, *args, **kwargs):
+ try:
+ request.user.userprofile
+ except ObjectDoesNotExist:
+ UserProfile.objects.create(user=request.user)
+ messages.add_message(self.request, messages.INFO,
+ 'Please complete your user profile to proceed.')
+ return super(AccountSettingsView, self).dispatch(request, *args, **kwargs)
+
+ def get_context_data(self, **kwargs):
+ context = super(AccountSettingsView, self).get_context_data(**kwargs)
+ context.update({'title': "Settings"})
+ return context
+
+ def get_initial(self):
+ user = self.request.user
+ initial = super(AccountSettingsView, self).get_initial()
+ initial['first_name'] = user.first_name
+ initial['last_name'] = user.last_name
+ initial['email'] = user.email
+ initial['company'] = user.userprofile.company
+ initial['ssh_public_key'] = user.userprofile.sshkey
+ initial['pgp_public_key'] = user.userprofile.pgpkey
+ initial['timezone'] = user.userprofile.timezone
+ return initial
+
+ def form_valid(self, form):
+ user = self.request.user
+ user.first_name = form.cleaned_data['first_name']
+ user.last_name = form.cleaned_data['last_name']
+ user.email = form.cleaned_data['email']
+ user.userprofile.company = form.cleaned_data['company']
+ user.userprofile.sshkey = form.cleaned_data['ssh_public_key']
+ user.userprofile.pgpkey = form.cleaned_data['pgp_public_key']
+ user.userprofile.timezone = form.cleaned_data['timezone']
+ user.userprofile.save()
+ if not user.is_active:
+ user.is_active = True
+ user.save()
+ messages.add_message(self.request, messages.INFO,
+ 'Settings saved')
+ return super(AccountSettingsView, self).form_valid(form)