import traceback
traceback.print_exc()
return None
-
- try:
- # Check if the user exists in Django's local database
- user = User.objects.get(username=username)
- except User.DoesNotExist:
- # Create a user in Django's local database
- user = User.objects.create_user(username, username, 'passworddoesntmatter')
- user.email = person['email']
+
+ if not usernameldap:
+ try:
+ # Check if the user exists in Django's local database
+ user = User.objects.get(username=username)
+ except User.DoesNotExist:
+ # Create a user in Django's local database
+ user = User.objects.create_user(username, usernamep, 'passworddoesntmatter')
- user.first_name = "DUMMY_FIRST_NAME" #person['first_name']
- user.last_name = "DUMMY LAST NAME" # person['last_name']
+ user.email = person['email']
- return user
+ else:
+ if checkldap:
+ try:
+ # Check if the user exists in Django's local database
+ user = User.objects.get(username=usernameldap)
+ except User.DoesNotExist:
+ # Create a user in Django's local database
+ user = User.objects.create_user(username, usernameldap, 'passworddoesntmatter')
- user.first_name = "DUMMY_FIRST_NAME" #person['first_name']
- user.last_name = "DUMMY LAST NAME" # person['last_name']
+ user.email = person['email']
- return user
-
+ if 'firstname' in person:
+ user.first_name = person['firstname']
+ if 'lastname' in person:
+ user.last_name = person['lastname']
+
+ return user
# Required for your backend to work properly - unchanged in most scenarios
def get_user(self, user_id):
try:
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'unfold.wsgi.application'
+#WSGI_APPLICATION = 'myslice.wsgi.application'
- TEMPLATE_DIRS = (
- # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
- # Always use forward slashes, even on Windows.
- # Don't forget to use absolute paths, not relative paths.
- #os.path.join(HTTPROOT,"templates"),
- os.path.join(HTTPROOT,"templates"),
- )
+ TEMPLATE_DIRS = [ ]
+ # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+ # Always use forward slashes, even on Windows.
+ # Don't forget to use absolute paths, not relative paths.
+ if theme is not None:
+ TEMPLATE_DIRS.append ( os.path.join(HTTPROOT,"portal/templates", theme))
+ TEMPLATE_DIRS.append ( os.path.join(HTTPROOT,"portal/templates"))
+ TEMPLATE_DIRS.append ( os.path.join(HTTPROOT,"templates"))
- INSTALLED_APPS = [
+ INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
import portal.platformsview
import portal.dashboardview
import portal.homeview
+ import portal.newsview
+import plugins.cafe.edelberto
+
home_view=portal.homeview.HomeView.as_view()
dashboard_view=portal.dashboardview.DashboardView.as_view()
platforms_view=portal.platformsview.PlatformsView.as_view()
def post (self,request):
env = self.default_env()
env['theme'] = self.theme
+ env['section'] = "Dashboard"
+
username = request.POST.get('username')
password = request.POST.get('password')
+
+ # LDAP form - If FIBRE, then get the possibilite to authenticate using usernameldap
+ #if self.theme == 'fibre':
+ usernameldap = request.POST.get('usernameldap')
+ token = {'usernameldap': usernameldap, 'username': username ,'password': password, 'request': request}
+ #else:
- # pass request within the token, so manifold session key can be attached to the request session.
- token = {'username': username, 'password': password, 'request': request}
+ # Follow original code
+ ## pass request within the token, so manifold session key can be attached to the request session.
+ #token = {'username': username, 'password': password, 'request': request}
# our authenticate function returns either
# . a ManifoldResult - when something has gone wrong, like e.g. backend is unreachable
from manifold.core.query import Query
from portal.models import PendingUser
-from portal.actions import create_pending_user
+#from portal.actions import create_pending_user
+# Edelberto - LDAP
+from portal.actions import create_pending_user, ldap_create_user
- from theme import ThemeView
+ from myslice.theme import ThemeView
# since we inherit from FreeAccessView we cannot redefine 'dispatch'
# so let's override 'get' and 'post' instead
--- /dev/null
--- /dev/null
++{% extends "layout.html" %}
++
++{% block head %}
++{{ wizard.form.media }}
++{% endblock %}
++
++{% block content %}
++<div class="row">
++ <div class="col-md-12">
++ <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> FIBRE Support</h1>
++ </div>
++</div>
++<div class="row">
++ <div class="col-md-12"> </div>
++</div>
++<div class="row">
++ <div class="col-md-12">
++ <p>Please check our <a href="/portal/support/">FAQ</a> section. Most of the basic problems are explained there.</p>
++ <p>
++ If you haven't find your answes in the FAQ, please contact us by filling the form below.<br />
++ You can also <a href="mailto:support@myslice.info">e-mail</a> us directly.
++ </p>
++ </div>
++</div>
++
++<div class="row">
++ <div class="col-md-2"></div>
++ <div class="col-md-8">
++ <form role="form" method="post">
++ {% csrf_token %}
++ {% for field in form %}
++ <div class="form-group">
++ <label for="{{ field.html_name }}" class="control-label">{{ field.label }}</label>
++ {{ field.errors }} {{ field }}
++ </div>
++ {% endfor %}
++ <button type="submit" class="btn btn-default">Create Ticket</button>
++ </form>
++ </div>
++</div>
++{% endblock %}
++
--- /dev/null
--- /dev/null
++{% extends "layout.html" %}
++
++{% block content %}
++<div class="row">
++ <div class="col-md-12">
++ <h1><img src="{{ STATIC_URL }}img/icon_support_small.png" alt="Open a Ticket" /> FIBRE Portal Documentation</h1>
++ </div>
++</div>
++<div class="row">
++ <div class="col-md-12">
++
++</div>
++</div>
++{% endblock %}
++
--- /dev/null
--- /dev/null
++{% extends "layout.html" %}
++
++{% block content %}
++
++<div class="row">
++ <div class="col-md-12">
++ <h1><img src="{{ STATIC_URL }}img/icon_user_small.png" alt="User Registration" /> FIBRE Experimenter Registration</h1>
++ </div>
++</div>
++<div class="row">
++ <div class="col-md-12">
++ <h3>For First Line Support please <a href="/portal/contact" >Contact Support</a></h3>
++ </div>
++</div>
++{% if errors %}
++<ul>
++ {% for error in errors %}
++ <li>{{ error }}</li>
++ {% endfor %}
++</ul>
++{% endif %}
++
++<div class="row">
++ <div class="col-md-2"></div>
++ <div class="col-md-8">
++ <form class="cmxform form-horizontal" id="registrationForm" method="post" enctype="multipart/form-data" role="form">
++ {% csrf_token %}
++ <div class="form-group">
++ <label for="firstname" class="control-label">First Name</label>
++ <input type="text" name="firstname" class="form-control" minlength="2" value="{{ firstname }}" placeholder="First Name" required />
++ </div>
++ <div class="form-group">
++ <label for="lastname" class="control-label">Last Name</label>
++ <input type="text" name="lastname" size="25" class="form-control" minlength="2" value="{{ lastname }}" placeholder="Last Name" required />
++ </div>
++ <div class="form-group">
++ <label for="authority_hrn" class="control-label">Authority</label>
++ <input id="authority_hrn" name="authority_hrn" class="form-control" value="{{ authority_hrn }}" required>
++ <p class="help-block">An authority responsible for vetting your account</p>
++ </div>
++
++ <!-- LOGIN
++ TODO: Login should be suggested from user email or first/last name, and
++ checked for existence. In addition, the full HRN should be shown to the
++ user.
++ <div class="form-group">
++ <label for="login" class="col-xs-2 control-label">Login</label>
++ <div class="col-xs-4">
++ <input type="text" name="login" size="25" class="form-control" minlength="2" value="{{ login }}" placeholder="Login" required />
++ </div>
++ <div class="col-xs-6"><p class="form-hint">Enter your login</p></div>
++ </div>
++ -->
++
++ <div class="form-group">
++ <label for="email" class="control-label">Email</label>
++ <input type="email" name="email" size="25" class="form-control" value="{{ email }}" required/>
++ </div>
++ <div class="form-group">
++ <label for="password" class="control-label">Password</label>
++ <input type="password" id="password" name="password" class="form-control" minlength="4" value="{{ password }}" required/>
++ </div>
++ <div class="form-group">
++ <label for="password" class="control-label">Confirm Password</label>
++ <input type="password" id="confirmpassword" name="confirmpassword" minlength="4" class="form-control" value="" placeholder="Confirm Password" required/>
++ </div>
++ <div class="form-group">
++ <label for="question" class="control-label">My Keys</label>
++ <select name="question" class="form-control" id="key-policy" required>
++ <option value="generate">Generate key pairs for me </option>
++ <option value="upload">Upload my public key </option>
++ </select>
++ <p class="help-block">Genkey: Account Delegation Automatic (Recommended)</p>
++ </div>
++ <div class="form-group" style="display:none;" id="upload_key">
++ <label for="file" class="control-label">Upload public key</label>
++ <input type="file" name="user_public_key" class="form-control" id="user_public_key" required>
++ <br />
++ <div class="alert alert-danger" id="pkey_del_msg">
++ Once your account is validated, you will have to delegate your credentials manually using SFA [Advanced users only]
++ </div>
++ <p class="help-block">Account Delegation: Manual (Advanced Users)</p>
++ </div>
++ <div class="form-group" id="register">
++ <button class="submit btn btn-default" type="submit">Register</button>
++ </div>
++ </form>
++</div>
++<script>
++jQuery(document).ready(function(){
++ var availableTags = [
++ {% if authorities %}
++ {% for authority in authorities %}
++ {% if authority.name %}
++ {value:"{{ authority.authority_hrn }}",label:"{{authority.name}}"},
++ {% else %}
++ {value:"{{ authority.authority_hrn }}",label:"{{authority.authority_hrn}}"},
++ {% endif %}
++ {% endfor %}
++ {% else %}
++ {value:"",label:"No authority found !!!"}
++ {% endif %}
++ ];
++ jQuery( "#authority_hrn" ).autocomplete({
++ source: availableTags,
++ minLength: 0,
++ change: function (event, ui) {
++ if(!ui.item){
++ //http://api.jqueryui.com/autocomplete/#event-change -
++ // The item selected from the menu, if any. Otherwise the property is null
++ //so clear the item for force selection
++ jQuery("#authority_hrn").val("");
++ }
++ }
++ //select: function( event, ui ) {console.log(jQuery(this))}
++ });
++});
++</script>
++{% endblock %}
++
# Avoid troubles : clean /usr/share/unfold/
#shutil.rmtree('/usr/share/unfold/')
-
+ def images (dir):
+ return glob( dir+"/*.png") + glob ( dir+"/*.gif")
+ def javascript (dir):
+ return glob( dir+"/*.js")
+ def stylesheets (dir):
+ return glob( dir+"/*.css")
+
setup(packages = packages,
# xxx somehow this does not seem to show up in debian packaging
scripts = [ 'apache/unfold-init-ssl.sh' ],