]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
netcmd: models: make Group.system_flags a flags based EnumField
authorRob van der Linde <rob@catalyst.net.nz>
Tue, 13 Feb 2024 00:17:24 +0000 (13:17 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Fri, 16 Feb 2024 02:41:36 +0000 (02:41 +0000)
Signed-off-by: Rob van der Linde <rob@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Jo Sutton <josutton@catalyst.net.nz>
python/samba/netcmd/domain/models/__init__.py
python/samba/netcmd/domain/models/group.py
python/samba/netcmd/domain/models/types.py

index e65331fdf78ef395b1b553d98f56b8f5877ae6ef..3ca6c8981977cde4f2233c29cc8d7d22239c7415 100644 (file)
@@ -30,6 +30,6 @@ from .model import MODELS
 from .schema import AttributeSchema, ClassSchema
 from .site import Site
 from .subnet import Subnet
-from .types import AccountType
+from .types import AccountType, SystemFlags
 from .user import User
 from .value_type import ValueType
index 947312783c0f0eecd0bfccc34139ccc1cd7b658e..ab10654ad162823210771e4ad850d74d5d09d763 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-from .fields import BooleanField, DnField, IntegerField, SIDField, StringField
+from .fields import (BooleanField, DnField, EnumField, IntegerField, SIDField,
+                     StringField)
 from .model import Model
+from .types import SystemFlags
 
 
 class Group(Model):
@@ -31,7 +33,7 @@ class Group(Model):
                                              default=False, readonly=True)
     member = DnField("member", many=True)
     object_sid = SIDField("objectSid")
-    system_flags = IntegerField("systemFlags")
+    system_flags = EnumField("systemFlags", SystemFlags)
 
     @staticmethod
     def get_object_class():
index 83af9327940f392b82c4764cceb5326a22276af1..146c7f26fc7e718ae7b25d14b31445b00d4794f7 100644 (file)
 
 from enum import IntFlag
 
-from samba.dsdb import (ATYPE_SECURITY_GLOBAL_GROUP,
-                        ATYPE_SECURITY_LOCAL_GROUP,
-                        ATYPE_NORMAL_ACCOUNT,
-                        ATYPE_DISTRIBUTION_GLOBAL_GROUP,
-                        ATYPE_DISTRIBUTION_LOCAL_GROUP,
-                        ATYPE_WORKSTATION_TRUST,
-                        ATYPE_INTERDOMAIN_TRUST)
+from samba.dsdb import (
+    ATYPE_SECURITY_GLOBAL_GROUP,
+    ATYPE_SECURITY_LOCAL_GROUP,
+    ATYPE_NORMAL_ACCOUNT,
+    ATYPE_DISTRIBUTION_GLOBAL_GROUP,
+    ATYPE_DISTRIBUTION_LOCAL_GROUP,
+    ATYPE_WORKSTATION_TRUST,
+    ATYPE_INTERDOMAIN_TRUST,
+    SYSTEM_FLAG_CR_NTDS_NC,
+    SYSTEM_FLAG_CR_NTDS_DOMAIN,
+    SYSTEM_FLAG_CR_NTDS_NOT_GC_REPLICATED,
+    SYSTEM_FLAG_ATTR_IS_RDN,
+    SYSTEM_FLAG_CONFIG_ALLOW_LIMITED_MOVE,
+    SYSTEM_FLAG_CONFIG_ALLOW_MOVE,
+    SYSTEM_FLAG_CONFIG_ALLOW_RENAME,
+    SYSTEM_FLAG_DISALLOW_DELETE,
+    SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETE,
+    SYSTEM_FLAG_DOMAIN_DISALLOW_MOVE,
+    SYSTEM_FLAG_DOMAIN_DISALLOW_RENAME
+)
 
 
 class AccountType(IntFlag):
@@ -39,3 +52,17 @@ class AccountType(IntFlag):
     DISTRIBUTION_LOCAL_GROUP = ATYPE_DISTRIBUTION_LOCAL_GROUP
     WORKSTATION_TRUST = ATYPE_WORKSTATION_TRUST
     INTERDOMAIN_TRUST = ATYPE_INTERDOMAIN_TRUST
+
+
+class SystemFlags(IntFlag):
+    CR_NTDS_NC = SYSTEM_FLAG_CR_NTDS_NC
+    CR_NTDS_DOMAIN = SYSTEM_FLAG_CR_NTDS_DOMAIN
+    CR_NTDS_NOT_GC_REPLICATED = SYSTEM_FLAG_CR_NTDS_NOT_GC_REPLICATED
+    ATTR_IS_RDN = SYSTEM_FLAG_ATTR_IS_RDN
+    CONFIG_ALLOW_LIMITED_MOVE = SYSTEM_FLAG_CONFIG_ALLOW_LIMITED_MOVE
+    CONFIG_ALLOW_MOVE = SYSTEM_FLAG_CONFIG_ALLOW_MOVE
+    CONFIG_ALLOW_RENAME = SYSTEM_FLAG_CONFIG_ALLOW_RENAME
+    DISALLOW_DELETE = SYSTEM_FLAG_DISALLOW_DELETE
+    DISALLOW_MOVE_ON_DELETE = SYSTEM_FLAG_DISALLOW_MOVE_ON_DELETE
+    DOMAIN_DISALLOW_MOVE = SYSTEM_FLAG_DOMAIN_DISALLOW_MOVE
+    DOMAIN_DISALLOW_RENAME = SYSTEM_FLAG_DOMAIN_DISALLOW_RENAME