From: Rob van der Linde Date: Wed, 1 Nov 2023 03:44:18 +0000 (+1300) Subject: netcmd: model: add a find method to User model to avoid repeating code X-Git-Tag: talloc-2.4.2~758 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=921cc1df67e6dd90ae471f24abf735429477299a;p=thirdparty%2Fsamba.git netcmd: model: add a find method to User model to avoid repeating code Signed-off-by: Rob van der Linde Reviewed-by: Douglas Bagnall Reviewed-by: Andrew Bartlett --- diff --git a/python/samba/netcmd/domain/models/user.py b/python/samba/netcmd/domain/models/user.py index b00caceb5f0..c18ffc6bf6d 100644 --- a/python/samba/netcmd/domain/models/user.py +++ b/python/samba/netcmd/domain/models/user.py @@ -20,6 +20,8 @@ # along with this program. If not, see . # +from ldb import Dn + from samba.dsdb import DS_GUID_USERS_CONTAINER from .fields import DnField, StringField @@ -53,3 +55,16 @@ class User(Model): @staticmethod def get_object_class(): return "user" + + @classmethod + def find(cls, ldb, name): + """Helper function to find a user first by Dn then username. + + If the Dn can't be parsed, use sAMAccountName instead. + """ + try: + query = {"dn": Dn(ldb, name)} + except ValueError: + query = {"username": name} + + return cls.get(ldb, **query)