def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) self.memberUidOid=self.GetServer().GetOid("memberUid") self.Bind("AddMember", self.OnAddMember) self.Bind("DelMember", self.OnDelMember) self.Bind("GenerateGid", self.OnGenerate) lv=self['Members'] lv.AddColumn(xlt("User Id"), 20) lv.AddColumn(xlt("Description")) lv.Bind(wx.EVT_LIST_COL_END_DRAG, self.OnListColResize) lv.Bind(wx.EVT_MOTION, self.OnMouseMove)
def Go(self): self.initDomains() SpecificEntry.Go(self) if not self.sambaGroupMapping: return if self.dialog.node and self.sambaSid: ss=self.sambaSid.split('-') self.sambaRid = ss[7] self.sambaDomainSid='-'.join(ss[:-1]) self.sambaDomainName = self.sambaDomainSid self.EnableControls("sambaDomainSid sambaRid ridGen", False) wkg=smbWellKnownGroups.get(self.sambaRid) if wkg: self.GroupTypeLabel=xlt("Well Known Group") self.GroupType=xlt(wkg) else: sgt=smbGroupTypes.get(self.dialog.GetAttrValue("sambaGroupType")) if sgt: self.GroupType=xlt(sgt) else: self.GroupType=xlt("Domain Group") else: self.dialog.SetValue("sambaGroupType", 2) self.GroupType=xlt("Domain Group") self.OnChangeDomain()
def Check(self): if self.SambaGroupMapping: ok=True ok=self.dialog.CheckValid(ok, self.sambaDomainSid, xlt("Select Samba Domain first")) if not ok: return False return SpecificEntry.Check(self)
def Go(self): SpecificEntry.Go(self) attrval=self.dialog.attribs.get(self.memberUidOid) adm.config.restoreListviewPositions(self['Members'], self) if attrval: self.SetValue(attrval) if self.dialog.node: self['cn'].Disable() self['GenerateGid'].Disable()
def Check(self): ok=SpecificEntry.Check(self) if self.dialog.HasObjectClass("posixAccount"): if not self.uidNumber and self.GetServer().GetIdGeneratorStyle(): dn=self.GetServer().GetSambaUnixIdPoolDN() if not dn: if not self.dialog.HasObjectClass("sambaSamAccount"): ok=self.dialog.CheckValid(ok, dn, xlt("Need sambaUnixIdPoolDN configured for this server or Samba Account data")) return ok
def SetValue(self, attrval): if attrval.GetOid() == self.memberUidOid: lv=self['Members'] uids=attrval.GetValue()[:] for row in range(lv.GetItemCount()-1, -1, -1): if not lv.GetItemText(row, 0) in uids: lv.DeleteItem(row) for uid in uids: if lv.FindItem(-1, uid) < 0: lv.AppendItem(-1, uid) else: SpecificEntry.SetValue(self, attrval)
def Go(self): SpecificEntry.Go(self) self.allGroups = {} self.memberOf = [] memberList = self['MemberList'] memberList.AddColumn(xlt("Name"), 20) memberList.AddColumn("DN", 40) memberList.AddColumn(xlt("Description")) adm.config.restoreListviewPositions(memberList, self) knownDnGroupClasses = [ "groupOfNames", "groupOfUniqueNames", "mailGroup", "posixGroup" ] knownUidGroupClasses = ["posixGroup"] clsFilter = "" for kgc in knownDnGroupClasses: if clsFilter: clsFilter = "|(objectClass=%s)(%s)" % (kgc, clsFilter) else: clsFilter = "objectClass=%s" % kgc uidVal = self.dialog.GetAttrib("uid") if uidVal: for kgc in knownUidGroupClasses: if kgc not in knownDnGroupClasses: clsFilter = "|(objectClass=%s)(%s)" % (kgc, clsFilter) baseDn = self.GetServer().dn for dn, info in self.GetConnection().SearchSub( baseDn, "(%s)" % clsFilter, "* structuralObjectClass"): self.allGroups[dn] = Groups.GroupInfo(dn, info) if self.dialog.dn: userFilter = "|(member=%s)(uniquemember=%s)" % (self.dialog.dn, self.dialog.dn) if uidVal: userFilter = "|(%s)(memberuid=%s)" % (userFilter, uidVal.GetValue()[0]) filter = "(&(%s)(%s))" % (clsFilter, userFilter) for res in self.GetConnection().SearchSub(baseDn, filter, "dn"): dn = res[0].decode('utf8') self.memberOf.append(dn) self.addMember(dn)
def Go(self): self.initDomains() SpecificEntry.Go(self) if not self.sambaSamAccount: return if self.dialog.node and self.sambaDomainName: if len(self.sambaSid) > 15: ss=self.sambaSid.split('-') self.sambaDomainSid="-".join(ss[:1]) self.sambaRid = ss[7] self.EnableControls("sambaDomainName sambaRid ridGen", False) self.OnChangeDomain() self.updateFlags()
def DelValue(self, attrval): SpecificEntry.DelValue(self, attrval) self.updateFlags()
def Go(self): SpecificEntry.Go(self) self.OnExpire()
def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) self.Bind("AddGroup", self.OnAddGroup) self.Bind("DelGroup", self.OnDelGroup) self['MemberList'].Bind(wx.EVT_LIST_COL_END_DRAG, self.OnListColResize)
def Go(self): SpecificEntry.Go(self)
self.dialog.GetConnection().Modify(dn, chgList) for dn in delList: group=self.allGroups[dn] n=group.GetParamName() chgList=[AttrVal(n, group.GetParamValue(n))] if uid and group.WantUid(): chgList[0].RemoveValue(uid) else: chgList[0].RemoveValue(self.dialog.dn) self.dialog.GetConnection().Modify(dn, chgList) SpecificEntry.AddClass(Groups) class Members(SpecificEntry): name="Members" def Go(self): SpecificEntry.Go(self) SpecificEntry.AddClass(Members) # TODO #class GroupOfNames(SpecificEntry): # canClasses="groupOfUniqueNames" #SpecificEntry.AddClass(GroupOfNames) #Entry.addNewEntryClass(GroupOfNames)
@classmethod def FitLevel(self, node): if node.name.endswith("$"): return 999 else: return -1 def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) _SambaRidObject.__init__(self) # self.Bind("sambaDomainName", self.OnChangeDomain) SpecificEntry.AddClass(SambaComputer) Entry.addNewEntryClass(SambaComputer) class SambaAccount(SpecificEntry, _SambaRidObject): name=xlt("Samba") def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) _SambaRidObject.__init__(self) self.Bind("sambaDomainName", self.OnChangeDomain) self.Bind("sambaSamAccount", self.OnCheckSamba) self.Bind("CantChangePassword PasswordNeverExpires MustChangePassword AccountEnabled", self.OnCheckboxes) def OnCheckSamba(self, evt): self.OnCheckObjectClass(evt)
def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) _SambaRidObject.__init__(self)
def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) self.Bind("Expires", wx.EVT_CHECKBOX, self.OnExpire) self.Bind("GenerateUid", self.OnGenerateUid) self.Bind("GenerateGid", self.OnGenerateGid)
def DelValue(self, attrval): if attrval.GetOid() == self.memberUidOid: self['Members'].clear() else: SpecificEntry.DelValue(self, attrval)
def SetValue(self, attrval): SpecificEntry.SetValue(self, attrval) self.updateFlags()
def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) _SambaRidObject.__init__(self) self.Bind("sambaDomainName", self.OnChangeDomain) self.Bind("sambaSamAccount", self.OnCheckSamba) self.Bind("CantChangePassword PasswordNeverExpires MustChangePassword AccountEnabled", self.OnCheckboxes)
def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) _SambaRidObject.__init__(self) self.Bind("sambaDomainSid", self.OnChangeDomain)
canClasses="inetorgperson" startClasses="inetOrgPerson" @classmethod def GetClassIconName(self, node): if node.HasObjectClass("sambaSAMAccount"): return "SamUser" elif node.HasObjectClass("posixAccount"): return "PosixUser" return self.icon @staticmethod def New(parentWin, parentNode): adm.DisplayDialog(Entry.Dlg, parentWin, None, parentNode, UserAccount) SpecificEntry.AddClass(UserAccount) Entry.addNewEntryClass(UserAccount) class ShadowAccount(SpecificEntry): name=xlt("POSIX/Shadow") def __init__(self, dlg, notebook, resname=None): SpecificEntry.__init__(self, dlg, notebook, resname) self.Bind("Expires", wx.EVT_CHECKBOX, self.OnExpire) self.Bind("GenerateUid", self.OnGenerateUid) self.Bind("GenerateGid", self.OnGenerateGid) def Go(self): SpecificEntry.Go(self) self.OnExpire()