Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into fibre
authorLoic & Edelberto <loic.baron@lip6.fr>
Wed, 23 Apr 2014 14:03:49 +0000 (11:03 -0300)
committerLoic & Edelberto <loic.baron@lip6.fr>
Wed, 23 Apr 2014 14:03:49 +0000 (11:03 -0300)
Conflicts:
auth/manifoldbackend.py
myslice/settings.py
portal/templates/contact.html
portal/templates/documentationview.html
portal/templates/registration_view.html
setup.py

1  2 
auth/manifoldbackend.py
myslice/settings.py
myslice/urls.py
portal/actions.py
portal/homeview.py
portal/registrationview.py
portal/templates/fibre/fibre_contact.html
portal/templates/fibre/fibre_documentationview.html
portal/templates/fibre/fibre_registration_view.html
setup.py

@@@ -201,31 -54,22 +201,31 @@@ class ManifoldBackend
              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:
index cf9cbb6,620ab5b..d4240f4
mode 100644,100755..100755
@@@ -181,17 -199,17 +199,18 @@@ ROOT_URLCONF = 'myslice.urls
  
  # 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',
diff --cc myslice/urls.py
@@@ -15,9 -15,8 +15,10 @@@ from settings import auxiliaries, INSTA
  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()
Simple merge
@@@ -26,18 -26,13 +26,20 @@@ class HomeView (FreeAccessView, ThemeVi
      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
@@@ -15,11 -16,9 +16,11 @@@ from manifoldapi.manifoldapi    import 
  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
index 0000000,0000000..a610c87
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,42 @@@
++{% 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">&nbsp;</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 %}
++
index 0000000,0000000..3a22020
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,15 @@@
++{% 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 %}
++
index 0000000,0000000..eb59dfe
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,120 @@@
++{% 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 %}
++
diff --cc setup.py
+++ b/setup.py
@@@ -17,6 -17,14 +17,13 @@@ print package
  # 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' ],