Pārlūkot izejas kodu

HUE-5964 [core] Port add/sync ldap user to Hue 4

Enrico Berti 8 gadi atpakaļ
vecāks
revīzija
abe92ae2cd

+ 43 - 30
apps/useradmin/src/useradmin/templates/add_ldap_users.mako

@@ -21,50 +21,63 @@ from django.utils.translation import ugettext as _
 %>
 
 <%namespace name="layout" file="layout.mako" />
-
+%if not is_embeddable:
 ${ commonheader(_('Hue Users'), "useradmin", user, request) | n,unicode }
-${ layout.menubar(section='users') }
+%endif
 
+${ layout.menubar(section='users') }
 
 <div class="container-fluid">
   <div class="card card-small">
     <h1 class="card-heading simple">${_('Hue Users - Add/Sync LDAP user')}</h1>
     <br/>
 
-  <form id="editForm" method="POST" class="form form-horizontal" autocomplete="off">
-    ${ csrf_token(request) | n,unicode }
-    <fieldset>
-          % for field in form.fields:
-                  % if form[field].is_hidden:
-                      ${ form[field] }
-                  % else:
-                      ${ layout.render_field(form[field]) }
-                  % endif
-          % endfor
-    </fieldset>
-    <br/>
-    <div class="form-actions">
-      % if username:
-        <input type="submit" class="btn btn-primary" value="${_('Update user')}"/>
-      % else:
+    <form id="syncForm" method="POST" class="form form-horizontal" autocomplete="off">
+      ${ csrf_token(request) | n,unicode }
+      <fieldset>
+        % for field in form.fields:
+          % if form[field].is_hidden:
+            ${ form[field] }
+          % else:
+            ${ layout.render_field(form[field]) }
+          % endif
+        % endfor
+      </fieldset>
+      <br/>
+      <div class="form-actions">
+        % if username:
+          <input type="submit" class="btn btn-primary" value="${_('Update user')}"/>
+        % else:
           <input type="submit" class="btn btn-primary" value="${_('Add/Sync user')}"/>
-      % endif
-      <a href="${url('useradmin.views.list_users')}" class="btn">${_('Cancel')}</a>
-    </div>
-  </form>
-</div>
+        % endif
+        <a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('useradmin.views.list_users') + "')" or url('useradmin.views.list_users') }" class="btn">${_('Cancel')}</a>
+      </div>
+    </form>
   </div>
+</div>
 
 <script type="text/javascript">
-  $(document).ready(function(){
+  $(document).ready(function () {
     $("#id_groups").jHueSelector({
-            selectAllLabel: "${_('Select all')}",
-            searchPlaceholder: "${_('Search')}",
-            noChoicesFound: "${_('No groups found.')} <a href='${url('useradmin.views.edit_group')}'>${_('Create a new group now')} &raquo;</a>",
-            width:618,
-            height:240
-        });
+      selectAllLabel: "${_('Select all')}",
+      searchPlaceholder: "${_('Search')}",
+      noChoicesFound: "${_('No groups found.')} <a href='${url('useradmin.views.edit_group')}'>${_('Create a new group now')} &raquo;</a>",
+      width: 618,
+      height: 240
+    });
+    %if is_embeddable:
+    $('#syncForm').ajaxForm({
+      dataType:  'json',
+      success: function(data) {
+        if (data && data.status === 0){
+          huePubSub.publish('open.link', '${ url('useradmin.views.list_users') }');
+        }
+      }
+    });
+    %endif
   });
 </script>
 
+%if not is_embeddable:
 ${ commonfooter(request, messages) | n,unicode }
+%endif

+ 1 - 2
apps/useradmin/src/useradmin/templates/list_users.mako

@@ -46,8 +46,7 @@ ${layout.menubar(section='users')}
             %endif
 
             % if is_ldap_setup:
-            <a href="${ url('useradmin.views.add_ldap_users') }" class="btn"><i
-                class="fa fa-briefcase"></i> ${_('Add/Sync LDAP user')}</a>
+            <a href="${ is_embeddable and "javascript: huePubSub.publish('open.link', '" + url('useradmin.views.add_ldap_users') + "')" or url('useradmin.views.add_ldap_users') }" class="btn"><i class="fa fa-briefcase"></i> ${_('Add/Sync LDAP user')}</a>
             <a href="javascript:void(0)" class="btn confirmationModal"
                data-confirmation-url="${ url('useradmin.views.sync_ldap_users_groups') }"><i
                 class="fa fa-refresh"></i> ${_('Sync LDAP users/groups')}</a>

+ 5 - 2
apps/useradmin/src/useradmin/views.py

@@ -530,11 +530,14 @@ def add_ldap_users(request):
           unique_users = set(failed_ldap_users)
           request.warn(_('Failed to import following users: %s') % ', '.join(unique_users))
 
-        return redirect(reverse(list_users))
+        if request.GET.get('is_embeddable', False):
+          return JsonResponse({'status': 0})
+        else:
+          return redirect(reverse(list_users))
   else:
     form = AddLdapUsersForm()
 
-  return render('add_ldap_users.mako', request, dict(form=form))
+  return render('add_ldap_users.mako', request, dict(form=form, is_embeddable=request.GET.get('is_embeddable', False)))
 
 
 def add_ldap_groups(request):

+ 5 - 1
desktop/core/src/desktop/templates/hue.mako

@@ -342,6 +342,7 @@ ${ hueIcons.symbols() }
       <div id="embeddable_useradmin_permissions" class="embeddable"></div>
       <div id="embeddable_useradmin_configurations" class="embeddable"></div>
       <div id="embeddable_useradmin_newuser" class="embeddable"></div>
+      <div id="embeddable_useradmin_addldap" class="embeddable"></div>
       <div id="embeddable_hbase" class="embeddable"></div>
       <div id="embeddable_security_hive" class="embeddable"></div>
       <div id="embeddable_security_hdfs" class="embeddable"></div>
@@ -532,6 +533,7 @@ ${ assist.assistPanel() }
         useradmin_permissions: '/useradmin/permissions?is_embeddable=true',
         useradmin_configurations: '/useradmin/configurations?is_embeddable=true',
         useradmin_newuser: '/useradmin/users/new?is_embeddable=true',
+        useradmin_addldap: 'useradmin/users/add_ldap_users?is_embeddable=true',
         hbase: '/hbase/?is_embeddable=true',
         security_hive: '/security/hive?is_embeddable=true',
         security_hdfs: '/security/hdfs?is_embeddable=true',
@@ -543,7 +545,7 @@ ${ assist.assistPanel() }
         dump_config: '/desktop/dump_config?is_embeddable=true',
       };
 
-      var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser'];
+      var SKIP_CACHE = ['fileviewer', 'useradmin_users', 'useradmin_groups', 'useradmin_permissions', 'useradmin_configurations', 'useradmin_newuser', 'useradmin_addldap'];
 
       var OnePageViewModel = function () {
         var self = this;
@@ -677,6 +679,8 @@ ${ assist.assistPanel() }
             self.currentApp('oozie_bundle');
           } else if (href.startsWith('/filebrowser')){
             self.currentApp('filebrowser');
+          } else if (href.startsWith('/useradmin/users/add_ldap_users')){
+            self.currentApp('useradmin_addldap');
           } else if (href.startsWith('/useradmin/users/new')){
             self.currentApp('useradmin_newuser');
           } else if (href.startsWith('/useradmin/users')){