Pārlūkot izejas kodu

HUE-6241 [useradmin] Add/sync an LDAP users/groups in Hue 4 behaves correctly

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

+ 18 - 3
apps/useradmin/src/useradmin/templates/list_users.mako

@@ -48,7 +48,7 @@ ${layout.menubar(section='users')}
             % 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="javascript:void(0)" class="btn confirmationModal"
-               data-confirmation-url="${ url('useradmin.views.sync_ldap_users_groups') }"><i
+               data-confirmation-url="${ url('useradmin.views.sync_ldap_users_groups') }${ is_embeddable and '?is_embeddable=true' or ''}"><i
                 class="fa fa-refresh"></i> ${_('Sync LDAP users/groups')}</a>
             % endif
 
@@ -136,6 +136,9 @@ ${layout.menubar(section='users')}
     </form>
   </div>
 
+  <div class="modal hide fade sync-ldap">
+  </div>
+
 </div>
 
 <script src="${ static('desktop/ext/js/datatables-paging-0.1.js') }" type="text/javascript" charset="utf-8"></script>
@@ -212,8 +215,20 @@ ${layout.menubar(section='users')}
         },
         dataType: "html",
         success: function (data) {
-          $usersComponents.find(".delete-user").html(data);
-          $usersComponents.find(".delete-user").modal("show");
+          $usersComponents.find(".sync-ldap").html(data);
+          % if is_embeddable:
+          $usersComponents.find('.sync-ldap form').ajaxForm({
+            dataType:  'json',
+            success: function(data) {
+              if (data && data.url){
+                huePubSub.publish('open.link', data.url);
+              }
+              $.jHueNotify.info("${ _('The users and groups were update correctly.') }")
+              $usersComponents.find(".sync-ldap").modal("hide");
+            }
+          });
+          % endif
+          $usersComponents.find(".sync-ldap").modal("show");
         }
       });
     });

+ 3 - 0
apps/useradmin/src/useradmin/templates/sync_ldap_users_groups.mako

@@ -35,6 +35,9 @@ from django.utils.translation import ugettext as _
 
 <form action="${path}" method="POST" class="form form-horizontal">
   ${ csrf_token(request) | n,unicode }
+  % if is_embeddable:
+    <input type="hidden" value="true" name="is_embeddable" />
+  % endif
   <div class="modal-header left">
     <button type="button" class="close" data-dismiss="modal" aria-label="${ _('Close') }"><span aria-hidden="true">&times;</span></button>
     <h2 class="modal-title">${_('Sync LDAP users and groups')}</h2>

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

@@ -668,6 +668,8 @@ def sync_ldap_users_groups(request):
     }
     raise PopupException(_("You must be a superuser to sync the LDAP users/groups."), error_code=401)
 
+  is_embeddable = request.GET.get('is_embeddable', request.POST.get('is_embeddable', False))
+
   if request.method == 'POST':
     form = SyncLdapUsersGroupsForm(request.POST)
     if form.is_valid():
@@ -689,11 +691,14 @@ def sync_ldap_users_groups(request):
         unique_users = set(failed_ldap_users)
         request.warn(_('Failed to import following users: %s') % ', '.join(unique_users))
 
-      return redirect(reverse(list_users))
+      if is_embeddable:
+        return JsonResponse({'url': '/hue' + reverse(list_users)})
+      else:
+        return redirect(reverse(list_users))
   else:
     form = SyncLdapUsersGroupsForm()
 
-  return render("sync_ldap_users_groups.mako", request, dict(path=request.path, form=form))
+  return render("sync_ldap_users_groups.mako", request, dict(path=request.path, form=form, is_embeddable=is_embeddable))
 
 
 def sync_ldap_users_and_groups(connection, is_ensuring_home_directory=False, fs=None, failed_users=None):