@csrf_protect
def password_reset(request, is_admin_site=False,
- template_name='registration/password_reset_form.html',
- email_template_name='registration/password_reset_email.html',
+ template_name='password_reset_form.html',
+ email_template_name='password_reset_email.html',
subject_template_name='registration/password_reset_subject.txt',
password_reset_form=PasswordResetForm,
token_generator=default_token_generator,
if flag == 0:
messages.error(request, 'Sorry, this email is not registered.')
- return render(request, 'registration/password_reset_form.html', {
+ return render(request, 'password_reset_form.html', {
'form': form,
})
### end of email check in manifold ###
def password_reset_done(request,
- template_name='registration/password_reset_done.html',
+ template_name='password_reset_done.html',
current_app=None, extra_context=None):
context = {}
if extra_context is not None:
@sensitive_post_parameters()
@never_cache
def password_reset_confirm(request, uidb36=None, token=None,
- template_name='registration/password_reset_confirm.html',
+ template_name='password_reset_confirm.html',
token_generator=default_token_generator,
set_password_form=SetPasswordForm,
post_reset_redirect=None,
def password_reset_complete(request,
- template_name='registration/password_reset_complete.html',
+ template_name='password_reset_complete.html',
current_app=None, extra_context=None):
context = {
'login_url': resolve_url(settings.LOGIN_URL)
from django.views.generic import View
from django.template.loader import render_to_string
from django.shortcuts import render
+from django.contrib.auth import get_user_model
from unfold.page import Page
from unfold.loginrequired import FreeAccessView
split_email = reg_email.split("@")[0]
split_email = split_email.replace(".", "_")
user_hrn = reg_auth + '.' + split_email
+
+ UserModel = get_user_model()
#POST value validation
if (re.search(r'^[\w+\s.@+-]+$', reg_fname)==None):
errors.append('First Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
if (re.search(r'^[\w+\s.@+-]+$', reg_lname) == None):
errors.append('Last Name may contain only letters, numbers, spaces and @/./+/-/_ characters.')
- # XXX validate authority hrn !!
+ # checking in django_db !!
if PendingUser.objects.filter(email__iexact=reg_email):
errors.append('Email is pending for validation. Please provide a new email address.')
+ if UserModel._default_manager.filter(email__iexact=reg_email):
+ errors.append('This email is not usable. Please contact the administrator or try with another email.')
for user_detail in user_details:
if user_detail['email']==reg_email:
- errors.append('Email already exists in Manifold. Please provide a new email address.')
+ errors.append('Email already registered in Manifold. Please provide a new email address.')
# XXX TODO: Factorize with portal/accountview.py
if 'generate' in request.POST['question']:
'authority_hrn' : reg_auth,
'email' : reg_email,
'user_hrn' : user_hrn,
- 'keypair' : 'Public Key: ' + public_key,
+ 'public_key' : public_key,
'cc_myself' : True # form.cleaned_data['cc_myself']
}
recipients = authority_get_pi_emails(request,reg_auth)
recipients.append(ctx['email'])
msg = render_to_string('user_request_email.txt', ctx)
- send_mail("Onelab New User request for %s submitted"%reg_email, msg, reg_email, recipients)
+ send_mail("Onelab New User request for %s submitted"%reg_email, msg, 'support@myslice.info', recipients)
return render(request, 'user_register_complete.html')
template_env = {
--- /dev/null
+{% extends "layout-unfold1.html" %}
+{% load i18n %}
+
+{% block head %}
+{{ wizard.form.media }}
+{% endblock %}
+
+{% block unfold_main %}
+
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/onelab.css" />
+<!-- xxx ideally only onelab.css but ... xxx -->
+<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}/css/registration.css" />
+
+<div class="onelab-title well-lg">
+ <h2>Request a Slice</h2>
+</div>
+
+{% if errors %}
+<ul>
+ {% for error in errors %}
+ <li>{{ error }}</li>
+ {% endfor %}
+</ul>
+{% endif %}
+
+<div class='well'>
+ <form id="commentForm" class="form-horizontal" action="" method="post" role="form">{% csrf_token %}
+ <fieldset>
+
+ <div class="form-group">
+ <label for="email" class="col-xs-2 control-label">Experimenter</label>
+ <div class="col-xs-4">
+ <label class="col-xs-2 control-label" style="height:34px;">{{ email }}</label>
+ </div>
+ <div class="col-xs-6"> <p class="form-hint">Experimenter requesting a Slice</p> </div>
+ </div>
+
+ <div class="form-group">
+ <label for="slice_name" class="col-xs-2 control-label">Slice Name</label>
+ <div class="col-xs-4">
+ <input type="text" name="slice_name" class="form-control" minlength="2" value="{{ slice_name }}" placeholder="Slice Name" required />
+ </div>
+ <div class="col-xs-6"> <p class="form-hint">The name of the slice you wish to create</p> </div>
+ </div>
+
+ <div class="form-group">
+ <label for="authority_hrn" class="col-xs-2 control-label">Authority</label>
+ <div class="col-xs-4">
+ <div class="ui-widget">
+ <input id="authority_hrn" name="authority_hrn" class="form-control" value="{{ authority_hrn }}" placeholder="Authority" required />
+ </div>
+ </div>
+ <div class="col-xs-6"><p class="form-hint">An authority responsible for vetting your slice</p></div>
+ </div>
+
+ <div class="form-group">
+ <label for="number_of_nodes" class="col-xs-2 control-label">Number of nodes</label>
+ <div class="col-xs-4">
+ <div class="ui-widget">
+ <input id="number_of_nodes" name="number_of_nodes" class="form-control" value="{{ number_of_nodes }}" />
+ </div>
+ </div>
+ <div class="col-xs-6"><p class="form-hint">Number of nodes you expect to request (informative)</p></div>
+ </div>
+
+ <div class="form-group">
+ <label for="purpose" class="col-xs-2 control-label">Experiment purpose</label>
+ <div class="col-xs-4">
+ <div class="ui-widget">
+ <textarea id="purpose" name="purpose" class="form-control" style="height:110px;" placeholder="Purpose" required>{{ purpose }}</textarea>
+ </div>
+ </div>
+ <div class="col-xs-6"><p class="form-hint">Purpose of your experiment (informative)</p></div>
+ </div>
+
+ <button class="submit btn btn-default col-xs-12" type="submit">Request Slice</button>
+ </fieldset>
+ </form>
+</div>
+
+<script>
+jQuery(document).ready(function(){
+ var availableTags = [
+ {% if authorities %}
+ {% for authority in authorities %}
+ {value:"{{ authority.authority_hrn }}",label:"{{authority.name}}"},
+ {% endfor %}
+ {% else %}
+ {value:"",label:"No authority found !!!"}
+ {% endif %}
+ ];
+ $( "#authority_hrn" ).autocomplete({
+ source: availableTags,
+ select: function( event, ui ) {console.log(jQuery(this))}
+ });
+});
+</script>
+{% endblock %}
+
NEW USER REQUEST
-first_name : {{first_name}}
-last_name : {{last_name}}
-authority_hrn: {{authority_hrn}}
-keypair : {{keypair}}
+First Name : {{first_name}}
+Last Name : {{last_name}}
+Authority hrn: {{authority_hrn}}
+Public key : {{public_key}}
email : {{email}}
-cc myself : {{cc_myself}}
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