<p class='login'>Password</p>
<input class='login' type="password" name="password" value="" /><br />
<input class='login' type="submit" value="Log In" />
+ <p></p>
+ <a href="/portal/pass_reset/">Can't access your account?</a>
</form>
</div>
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')])
--- /dev/null
+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,
+ })
+
--- /dev/null
+{% extends "layout-unfold1.html" %}
+
+{% block head %}
+{{ wizard.form.media }}
+{% endblock %}
+
+{% block unfold_main %}
+
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/onelab.css" />
+<div class="onelab-title well-lg">
+ <h2>Onelab Password Reset</h2>
+</div>
+
+<!-- no hint for this form, moreover we need more space to write stuff down
+ so we use a 3-6-3 layout -->
+<div class='well'>
+ <form class="cmxform form-horizontal" id="commentForm" action="#" method="post" role="form">{% csrf_token %}
+ <fieldset>
+ {% for field in form %}
+ <div class="form-group">
+ <label for="{{ field.html_name }}" class="col-xs-3 control-label">{{ field.label }}</label>
+ <div class="col-xs-6"> {{ field.errors }} {{ field }} <p class="form-hint">{{ field.help_text }}</p> </div>
+ </div>
+ {% endfor %}
+ <button class="submit btn btn-default col-xs-12" type="submit">Reset Password</button>
+ </fieldset>
+ </form>
+</div>
+{% endblock %}
+
--- /dev/null
+{% extends "layout-unfold1.html" %}
+
+{% block unfold_main %}
+
+<h1>Under Construction.</h1>
+<h3>Please <a href="/portal/contact/">Contact Support</a> for password recovery.</h2>
+
+{% endblock %}
+
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
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