From: Rob van der Linde Date: Tue, 27 Feb 2024 01:12:40 +0000 (+1300) Subject: netcmd: models: Add Person and OrganizationalPerson X-Git-Tag: tdb-1.4.11~1552 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d961aacdf2b91b75eb0b7d410163dc089ff8ef4a;p=thirdparty%2Fsamba.git netcmd: models: Add Person and OrganizationalPerson Move only those fields over that we already had on User that actually belong on Person and OrganizationalPerson There are more fields to add later. Signed-off-by: Rob van der Linde Reviewed-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- diff --git a/python/samba/netcmd/domain/models/__init__.py b/python/samba/netcmd/domain/models/__init__.py index c84380b9b6a..4e100574aaf 100644 --- a/python/samba/netcmd/domain/models/__init__.py +++ b/python/samba/netcmd/domain/models/__init__.py @@ -29,6 +29,7 @@ from .constants import MODELS from .gmsa import GroupManagedServiceAccount from .group import Group from .model import Model +from .person import OrganizationalPerson, Person from .schema import AttributeSchema, ClassSchema from .site import Site from .subnet import Subnet diff --git a/python/samba/netcmd/domain/models/person.py b/python/samba/netcmd/domain/models/person.py new file mode 100644 index 00000000000..8e68c80eacd --- /dev/null +++ b/python/samba/netcmd/domain/models/person.py @@ -0,0 +1,41 @@ +# Unix SMB/CIFS implementation. +# +# Person and OrganisationalPerson models. +# +# Copyright (C) Catalyst.Net Ltd. 2024 +# +# Written by Rob van der Linde +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +from .fields import IntegerField, StringField +from .model import Model + + +class Person(Model): + sn = StringField("sn") + + @staticmethod + def get_object_class(): + return "person" + + +class OrganizationalPerson(Person): + country_code = IntegerField("countryCode") + given_name = StringField("givenName") + + @staticmethod + def get_object_class(): + return "organizationalPerson" diff --git a/python/samba/netcmd/domain/models/user.py b/python/samba/netcmd/domain/models/user.py index 151fbfab5d3..a3fc2677fbd 100644 --- a/python/samba/netcmd/domain/models/user.py +++ b/python/samba/netcmd/domain/models/user.py @@ -25,11 +25,11 @@ from ldb import Dn from samba.dsdb import DS_GUID_USERS_CONTAINER from .fields import DnField, EnumField, IntegerField, NtTimeField, StringField -from .model import Model +from .person import OrganizationalPerson from .types import AccountType, UserAccountControl -class User(Model): +class User(OrganizationalPerson): username = StringField("sAMAccountName") account_type = EnumField("sAMAccountType", AccountType) assigned_policy = DnField("msDS-AssignedAuthNPolicy") @@ -37,10 +37,7 @@ class User(Model): bad_password_time = NtTimeField("badPasswordTime", readonly=True) bad_pwd_count = IntegerField("badPwdCount", readonly=True) code_page = IntegerField("codePage") - country_code = IntegerField("countryCode") display_name = StringField("displayName") - given_name = StringField("givenName") - sn = StringField("sn") last_logoff = NtTimeField("lastLogoff", readonly=True) last_logon = NtTimeField("lastLogon", readonly=True) logon_count = IntegerField("logonCount", readonly=True)