Selaa lähdekoodia

HUE-6241 [useradmin] Support operations in Hue 4

Romain Rigaux 8 vuotta sitten
vanhempi
commit
c5bcc73bd1

+ 12 - 6
apps/useradmin/src/useradmin/templates/edit_group.mako

@@ -14,10 +14,11 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 <%!
-from desktop.views import commonheader, commonfooter
-from desktop.lib.django_util import extract_field_data
 import urllib
+
 from django.utils.translation import ugettext as _
+from desktop.lib.django_util import extract_field_data
+from desktop.views import commonheader, commonfooter
 %>
 
 <%namespace name="layout" file="layout.mako" />
@@ -60,9 +61,9 @@ ${layout.menubar(section='groups')}
     <form id="editForm" action="${urllib.quote(action)}" method="POST" class="form form-horizontal" autocomplete="off">
       ${ csrf_token(request) | n,unicode }
       <fieldset>
-          % for field in form:
-        ${render_field(field)}
-          % endfor
+        % for field in form:
+          ${render_field(field)}
+        % endfor
       </fieldset>
       <br/>
 
@@ -76,7 +77,12 @@ ${layout.menubar(section='groups')}
               <input type="submit" class="btn btn-primary" value="${_('Add group')}"/>
           % endif
         % endif
-        <a href="/useradmin/groups" class="btn">${_('Cancel')}</a>
+        % if is_embeddable:
+          <input type="hidden" value="true" name="is_embeddable" />
+          <a href="/hue/useradmin/permissions" class="btn">${_('Cancel')}</a>
+        % else:
+          <a href="/useradmin/groups" class="btn">${_('Cancel')}</a>
+        % endif
       </div>
     </form>
   </div>

+ 10 - 2
apps/useradmin/src/useradmin/templates/edit_permissions.mako

@@ -14,10 +14,12 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 <%!
-from desktop.views import commonheader, commonfooter
 import urllib
+
+from desktop.views import commonheader, commonfooter
 from django.utils.translation import ugettext as _
 %>
+
 <%namespace name="layout" file="layout.mako" />
 
 %if not is_embeddable:
@@ -57,7 +59,13 @@ ${layout.menubar(section='permissions')}
 
       <div class="form-actions">
         <input type="submit" class="btn btn-primary" value="${_('Update permission')}"/>
-        <a href="/useradmin/permissions" class="btn">${_('Cancel')}</a>
+        % if is_embeddable:
+          <input type="hidden" value="true" name="is_embeddable" />
+          ## Hue4 links?
+          <a href="/hue/useradmin/permissions" class="btn">${_('Cancel')}</a>
+        % else:
+          <a href="/useradmin/permissions" class="btn">${_('Cancel')}</a>
+        % endif
       </div>
     </form>
   </div>

+ 5 - 2
apps/useradmin/src/useradmin/templates/edit_user.mako

@@ -14,8 +14,10 @@
 ## See the License for the specific language governing permissions and
 ## limitations under the License.
 <%!
-from desktop.views import commonheader, commonfooter
 from django.utils.translation import ugettext as _
+
+from desktop.views import commonheader, commonfooter
+
 from useradmin.password_policy import is_password_policy_enabled, get_password_hint
 from useradmin.views import is_user_locked_out
 %>
@@ -35,6 +37,7 @@ ${ layout.menubar(section='users') }
     % endif
 
     <br/>
+
     <form id="editForm" method="POST" class="form form-horizontal" autocomplete="off">
     ${ csrf_token(request) | n,unicode }
     <div id="properties" class="section">
@@ -96,10 +99,10 @@ ${ layout.menubar(section='users') }
         </div>
       % endif
       </div>
+
       <div class="form-actions">
         <a class="backBtn btn disabled">${ _('Back') }</a>
         <a class="nextBtn btn btn-primary disable-feedback">${ _('Next') }</a>
-
       % if username:
         <input type="submit" class="btn btn-primary" value="${_('Update user')}"/>
       % else:

+ 1 - 1
apps/useradmin/src/useradmin/urls.py

@@ -34,7 +34,7 @@ urlpatterns = patterns('useradmin.views',
   url(r'^users/add_ldap_groups$', 'add_ldap_groups'),
   url(r'^users/sync_ldap_users_groups$', 'sync_ldap_users_groups'),
   url(r'^groups/edit/(?P<name>%s)$' % (groupname_re,), 'edit_group'),
-  url(r'^permissions/edit/(?P<app>.*)/(?P<priv>.*)$', 'edit_permission'),
+  url(r'^permissions/edit/(?P<app>.+?)/(?P<priv>.+?)/?$', 'edit_permission'),
   url(r'^users/new$', 'edit_user', name="useradmin.new"),
   url(r'^groups/new$', 'edit_group', name="useradmin.new_group"),
   url(r'^users/delete', 'delete_user'),

+ 18 - 8
apps/useradmin/src/useradmin/views.py

@@ -249,6 +249,7 @@ def edit_user(request, username=None):
 
   userprofile = get_profile(request.user)
   updated = False
+  is_embeddable = request.GET.get('is_embeddable', False)
 
   if username is not None:
     instance = User.objects.get(username=username)
@@ -365,13 +366,13 @@ def edit_user(request, username=None):
     return render('change_password.mako', request, {
       'form': form,
       'username': username,
-      'is_embeddable': request.GET.get('is_embeddable', False),
+      'is_embeddable': is_embeddable
     })
   else:
     return render('edit_user.mako', request, {
       'form': form,
       'username': username,
-      'is_embeddable': request.GET.get('is_embeddable', False),
+      'is_embeddable': is_embeddable
     })
 
 
@@ -409,11 +410,12 @@ def edit_group(request, name=None):
   else:
     instance = None
 
+  is_embeddable = request.GET.get('is_embeddable', request.POST.get('is_embeddable', False))
+
   if request.method == 'POST':
     form = GroupEditForm(request.POST, instance=instance)
     if form.is_valid():
       form.save()
-      request.info(_('Group information updated'))
 
       # Audit log
       if name is not None:
@@ -430,7 +432,11 @@ def edit_group(request, name=None):
           'operationText': 'Created Group: %s, with member(s): %s' % (request.POST.get('name', ''), ', '.join(usernames))
         }
 
-      return redirect(reverse(list_groups))
+      if is_embeddable:
+        return redirect('/hue/useradmin/groups')
+      else:
+        request.info(_('Group information updated'))
+        return redirect('/useradmin/groups')
   else:
     form = GroupEditForm(instance=instance)
 
@@ -438,7 +444,7 @@ def edit_group(request, name=None):
     'form': form,
     'action': request.path,
     'name': name,
-    'is_embeddable': request.GET.get('is_embeddable', False),
+    'is_embeddable': is_embeddable,
   })
 
 
@@ -464,18 +470,22 @@ def edit_permission(request, app=None, priv=None):
     raise PopupException(_("You must be a superuser to change permissions."), error_code=401)
 
   instance = HuePermission.objects.get(app=app, action=priv)
+  is_embeddable = request.GET.get('is_embeddable', request.POST.get('is_embeddable', False))
 
   if request.method == 'POST':
     form = PermissionsEditForm(request.POST, instance=instance)
     if form.is_valid():
       form.save()
-      request.info(_('Permission information updated'))
       request.audit = {
         'operation': 'EDIT_PERMISSION',
         'operationText': 'Successfully edited permissions: %(app)s/%(priv)s' % {'app': app, 'priv': priv}
       }
 
-      return redirect(reverse(list_permissions))
+      if is_embeddable:
+        return JsonResponse({'url': '/hue' + reverse(list_permissions)})
+      else:
+        request.info(_('Permission information updated'))
+        return redirect(reverse(list_permissions))
   else:
     form = PermissionsEditForm(instance=instance)
 
@@ -484,7 +494,7 @@ def edit_permission(request, app=None, priv=None):
     'action': request.path,
     'app': app,
     'priv': priv,
-    'is_embeddable': request.GET.get('is_embeddable', False),
+    'is_embeddable': is_embeddable,
   })
 
 

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

@@ -813,6 +813,7 @@ ${ smart_unicode(login_modal(request).content) | n,unicode }
           { url: '/security/solr', app: 'security_solr' },
           { url: '/sqoop', app: 'sqoop' },
           { url: '/useradmin/configurations/', app: 'useradmin_configurations' },
+          { url: '/useradmin/groups', app: 'useradmin_groups' },
           { url: '/useradmin/groups/', app: 'useradmin_groups' },
           { url: '/useradmin/groups/new', app: 'useradmin_newgroup' },
           { url: '/useradmin/groups/edit/:group', app: 'useradmin_editgroup' },