Przeglądaj źródła

HUE-8530 [organization] Move user change forms swap logic directly into imports

Romain 6 lat temu
rodzic
commit
23cbdebc51

+ 39 - 39
apps/useradmin/src/useradmin/forms.py

@@ -201,32 +201,50 @@ class UserChangeForm(django.contrib.auth.forms.UserChangeForm):
       self.save_m2m()
     return user
 
+if ENABLE_ORGANIZATIONS.get():
+  class OrganizationUserChangeForm(UserChangeForm):
+    username = None
+    email = forms.CharField(
+        label=_t("Email"),
+        widget=forms.TextInput(attrs={'maxlength': 150, 'placeholder': _t("Email"), 'autocomplete': 'off', 'autofocus': 'autofocus'})
+    )
 
-class OrganizationUserChangeForm(UserChangeForm):
-  username = None
-  email = forms.CharField(
-      label=_t("Email"),
-      widget=forms.TextInput(attrs={'maxlength': 150, 'placeholder': _t("Email"), 'autocomplete': 'off', 'autofocus': 'autofocus'})
-  )
-
-  class Meta(django.contrib.auth.forms.UserChangeForm.Meta):
-    model =  User
-    fields = ["first_name", "last_name", "email", "ensure_home_directory", "organization"]
+    class Meta(django.contrib.auth.forms.UserChangeForm.Meta):
+      model =  User
+      fields = ["first_name", "last_name", "email", "ensure_home_directory", "organization"]
 
-  def __init__(self, *args, **kwargs):
-    super(OrganizationUserChangeForm, self).__init__(*args, **kwargs)
+    def __init__(self, *args, **kwargs):
+      super(OrganizationUserChangeForm, self).__init__(*args, **kwargs)
 
-    if self.instance.id:
-      self.fields['email'].widget.attrs['readonly'] = True
+      if self.instance.id:
+        self.fields['email'].widget.attrs['readonly'] = True
 
-    self.fields['organization'] = forms.ChoiceField(choices=((default_organization().id, default_organization()),), initial=default_organization())
+      self.fields['organization'] = forms.ChoiceField(choices=((default_organization().id, default_organization()),), initial=default_organization())
 
-  def clean_organization(self):
-    try:
-      return Organization.objects.get(id=int(self.cleaned_data.get('organization')))
-    except:
-      LOG.exception('The organization does not exist.')
-      return None
+    def clean_organization(self):
+      try:
+        return Organization.objects.get(id=int(self.cleaned_data.get('organization')))
+      except:
+        LOG.exception('The organization does not exist.')
+        return None
+
+  # Mixin __init__ method?
+  class OrganizationSuperUserChangeForm(OrganizationUserChangeForm):
+    class Meta(UserChangeForm.Meta):
+      fields = ["email", "is_active"] + OrganizationUserChangeForm.Meta.fields + ["is_superuser", "unlock_account", "groups"]
+
+    def __init__(self, *args, **kwargs):
+      super(OrganizationSuperUserChangeForm, self).__init__(*args, **kwargs)
+      if self.instance.id:
+        # If the user exists already, we'll use its current group memberships
+        self.initial['groups'] = set(self.instance.groups.all())
+      else:
+        # If this is a new user, suggest the default group
+        default_group = get_default_user_group()
+        if default_group is not None:
+          self.initial['groups'] = set([default_group])
+        else:
+          self.initial['groups'] = []
 
 
 class PasswordChangeForm(UserChangeForm):
@@ -258,24 +276,6 @@ class SuperUserChangeForm(UserChangeForm):
       else:
         self.initial['groups'] = []
 
-# Mixin __init__ method?
-class OrganizationSuperUserChangeForm(OrganizationUserChangeForm):
-  class Meta(UserChangeForm.Meta):
-    fields = ["email", "is_active"] + OrganizationUserChangeForm.Meta.fields + ["is_superuser", "unlock_account", "groups"]
-
-  def __init__(self, *args, **kwargs):
-    super(OrganizationSuperUserChangeForm, self).__init__(*args, **kwargs)
-    if self.instance.id:
-      # If the user exists already, we'll use its current group memberships
-      self.initial['groups'] = set(self.instance.groups.all())
-    else:
-      # If this is a new user, suggest the default group
-      default_group = get_default_user_group()
-      if default_group is not None:
-        self.initial['groups'] = set([default_group])
-      else:
-        self.initial['groups'] = []
-
 
 class AddLdapUsersForm(forms.Form):
   username_pattern = forms.CharField(

+ 6 - 4
apps/useradmin/src/useradmin/views.py

@@ -49,8 +49,8 @@ from hadoop.fs.exceptions import WebHdfsException
 
 from useradmin import ldap_access
 from useradmin.forms import SyncLdapUsersGroupsForm, AddLdapGroupsForm, AddLdapUsersForm,\
-  PermissionsEditForm, GroupEditForm, SuperUserChangeForm, UserChangeForm, validate_username, validate_first_name, \
-  validate_last_name, PasswordChangeForm, OrganizationUserChangeForm, OrganizationSuperUserChangeForm
+  PermissionsEditForm, GroupEditForm, SuperUserChangeForm, validate_username, validate_first_name, \
+  validate_last_name, PasswordChangeForm
 from useradmin.ldap_access import LdapBindException, LdapSearchException
 from useradmin.models import HuePermission, UserProfile, LdapGroup
 from useradmin.models import get_profile, get_default_user_group
@@ -60,8 +60,10 @@ if sys.version_info[0] > 2:
 
 if ENABLE_ORGANIZATIONS.get():
   from useradmin.models import User, Group
+  from useradmin.forms import OrganizationUserChangeForm as UserChangeForm, OrganizationSuperUserChangeForm as SuperUserChangeForm
 else:
   from django.contrib.auth.models import User, Group
+  from useradmin.forms import UserChangeForm, SuperUserChangeForm
 
 
 LOG = logging.getLogger(__name__)
@@ -295,9 +297,9 @@ def edit_user(request, username=None):
   if require_change_password(userprofile):
     form_class = PasswordChangeForm
   elif is_admin(request.user):
-    form_class = OrganizationSuperUserChangeForm if ENABLE_ORGANIZATIONS.get() else SuperUserChangeForm
+    form_class = SuperUserChangeForm
   else:
-    form_class = OrganizationUserChangeForm if ENABLE_ORGANIZATIONS.get() else UserChangeForm
+    form_class = UserChangeForm
 
   if request.method == 'POST':
     form = form_class(request.POST, instance=instance)