From 0917b2644c0b1bf2337f7e04a98d0e4ec4dbebf2 Mon Sep 17 00:00:00 2001 From: Yasin Date: Mon, 23 Dec 2013 16:39:07 +0100 Subject: [PATCH] ForgotPassword: initial layout created --- auth/templates/widget-login.html | 2 ++ portal/forms.py | 3 ++ portal/passresetview.py | 47 +++++++++++++++++++++++++++ portal/templates/pass_reset.html | 30 +++++++++++++++++ portal/templates/pass_reset_sent.html | 9 +++++ portal/urls.py | 2 ++ 6 files changed, 93 insertions(+) create mode 100644 portal/passresetview.py create mode 100644 portal/templates/pass_reset.html create mode 100644 portal/templates/pass_reset_sent.html diff --git a/auth/templates/widget-login.html b/auth/templates/widget-login.html index 37fb938b..39a8bdc9 100644 --- a/auth/templates/widget-login.html +++ b/auth/templates/widget-login.html @@ -11,5 +11,7 @@

Password


+

+ Can't access your account? diff --git a/portal/forms.py b/portal/forms.py index 9bcf8fa6..848f1c3e 100644 --- a/portal/forms.py +++ b/portal/forms.py @@ -53,6 +53,9 @@ class ContactForm(forms.Form): message = forms.CharField(widget=forms.Textarea(attrs={'class':'form-control'})) cc_myself = forms.BooleanField(required=False,widget=forms.CheckboxInput(attrs={'class':'form-control'})) +class PassResetForm(forms.Form): + email = forms.EmailField(widget=forms.TextInput(attrs={'class':'form-control'})) + class SliceRequestForm(forms.Form): # slice_name = forms.CharField() # authority_hrn = forms.ChoiceField(choices=[(1, 'un')]) diff --git a/portal/passresetview.py b/portal/passresetview.py new file mode 100644 index 00000000..c9d50dcb --- /dev/null +++ b/portal/passresetview.py @@ -0,0 +1,47 @@ +import os.path, re +import json + +from random import choice + +from django.core.mail import send_mail + +from django.views.generic import View +from django.shortcuts import render + +from unfold.loginrequired import FreeAccessView +from ui.topmenu import topmenu_items_live + +from manifold.manifoldapi import execute_admin_query +from manifold.core.query import Query + +from portal.forms import PassResetForm +from portal.actions import manifold_update_user + + +class PassResetView (FreeAccessView): + def post (self, request): + form = PassResetForm(request.POST) # A form bound to the POST data + if form.is_valid(): # All validation rules pass + # Process the data in form.cleaned_data + email = form.cleaned_data['email'] # email of the user + + sender = 'support@myslice.info' + #recipients = authority_get_pi_emails(authority_hrn) + recipients = [email ] + pass_list = ['demo', 'test', 'abcdef'] + reset_pass = choice (pass_list) + msg = "Your password has been reset to: %s"% reset_pass + "\n\n Please use this temporary password to login and reset your password from MyAccount page." + print "test ", msg + send_mail("Onelab Portal: Password reset request", msg, sender, recipients) + return render(request,'pass_reset_sent.html') # Redirect after POST + else: + return self._display (request, form) + + def get (self, request): + return self._display (request, PassResetForm()) # A fresh unbound form + + def _display (self, request, form): + return render(request, 'pass_reset.html', { + 'form': form, + }) + diff --git a/portal/templates/pass_reset.html b/portal/templates/pass_reset.html new file mode 100644 index 00000000..8fa828f1 --- /dev/null +++ b/portal/templates/pass_reset.html @@ -0,0 +1,30 @@ +{% extends "layout-unfold1.html" %} + +{% block head %} +{{ wizard.form.media }} +{% endblock %} + +{% block unfold_main %} + + +
+

Onelab Password Reset

+
+ + +
+
{% csrf_token %} +
+ {% for field in form %} +
+ +
{{ field.errors }} {{ field }}

{{ field.help_text }}

+
+ {% endfor %} + +
+
+
+{% endblock %} + diff --git a/portal/templates/pass_reset_sent.html b/portal/templates/pass_reset_sent.html new file mode 100644 index 00000000..fbdf3047 --- /dev/null +++ b/portal/templates/pass_reset_sent.html @@ -0,0 +1,9 @@ +{% extends "layout-unfold1.html" %} + +{% block unfold_main %} + +

Under Construction.

+

Please Contact Support for password recovery.

+ +{% endblock %} + diff --git a/portal/urls.py b/portal/urls.py index 56593861..87ff1e1e 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -32,6 +32,7 @@ from portal.contactview import ContactView from portal.slicerequestview import SliceRequestView from portal.registrationview import RegistrationView from portal.sliceview import SliceView +from portal.passresetview import PassResetView # hopefully these should move in dedicated source files too from portal.views import PresViewView, pres_view_static, pres_view_methods, pres_view_animation @@ -65,6 +66,7 @@ urlpatterns = patterns('', url(r'^account/account_process/?$', account_process), url(r'^register/?$', RegistrationView.as_view(), name='registration'), url(r'^contact/?$', ContactView.as_view(), name='contact'), + url(r'^pass_reset/?$', PassResetView.as_view(), name='pass_rest'), # Slice request url(r'^slice_request/?$', SliceRequestView.as_view(), name='slice_request'), # Validate pending requests -- 2.43.0