浏览代码

HUE-8530 [organization] Auto add missing organization to Group and Permission

Romain 5 年之前
父节点
当前提交
3049e36839
共有 2 个文件被更改,包括 21 次插入5 次删除
  1. 15 5
      apps/useradmin/src/useradmin/models.py
  2. 6 0
      apps/useradmin/src/useradmin/models2.py

+ 15 - 5
apps/useradmin/src/useradmin/models.py

@@ -44,6 +44,7 @@ import logging
 from datetime import datetime
 from enum import Enum
 
+from crequest.middleware import CrequestMiddleware
 from django.db import connection, models, transaction
 from django.contrib.auth import models as auth_models
 from django.contrib.auth.models import AbstractUser, BaseUserManager
@@ -219,7 +220,9 @@ if ENABLE_ORGANIZATIONS.get():
     objects = OrganizationHuePermissionManager()
 
     def __init__(self, *args, **kwargs):
-      self.organization = kwargs.pop('organization', None)
+      if not kwargs.get('organization'):
+        kwargs['organization'] = get_user_request_organization()
+
       super(OrganizationHuePermission, self).__init__(*args, **kwargs)
 
     def __str__(self):
@@ -271,8 +274,8 @@ def get_default_user_group(**kwargs):
   attributes = {
     'name': default_user_group
   }
-  if ENABLE_ORGANIZATIONS.get():
-    attributes['organization'] = organization = kwargs['user'].organization if kwargs.get('user') else default_organization()
+  if ENABLE_ORGANIZATIONS.get() and kwargs.get('user'):
+    attributes['organization'] = kwargs['user'].organization
 
   group, created = Group.objects.get_or_create(**attributes)
 
@@ -282,6 +285,11 @@ def get_default_user_group(**kwargs):
   return group
 
 
+def get_user_request_organization():
+  request = CrequestMiddleware.get_request()
+  return request.user.organization if request and hasattr(request, 'user') else default_organization()
+
+
 def update_app_permissions(**kwargs):
   """
   Keep in sync apps and connectors permissions into the database table.
@@ -356,8 +364,10 @@ def update_app_permissions(**kwargs):
             'action': action,
             'description': description
           }
-          if kwargs.get('organization'):
-            attributes['organization'] = kwargs['organization']
+          # if ENABLE_ORGANIZATIONS.get():
+          #   # Or move signals instead
+          #   attributes['organization'] = kwargs['organization'] if kwargs.get('organization') else default_organization()
+
           new_dp = HuePermission(**attributes)
           new_dp.save()
           added.append(new_dp)

+ 6 - 0
apps/useradmin/src/useradmin/models2.py

@@ -98,6 +98,12 @@ class OrganizationGroup(models.Model):
 
   objects = OrganizationGroupManager()
 
+  def __init__(self, *args, **kwargs):
+    if not kwargs.get('organization'):
+      kwargs['organization'] = get_user_request_organization()
+
+    super(OrganizationGroup, self).__init__(*args, **kwargs)
+
   class Meta:
     verbose_name = _t('organization group')
     verbose_name_plural = _t('organization groups')