예제 #1
0
 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)
예제 #2
0
  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()
예제 #3
0
 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)
예제 #4
0
 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()
예제 #5
0
 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
예제 #6
0
 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)
예제 #7
0
    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)
예제 #8
0
  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()
예제 #9
0
 def DelValue(self, attrval):
   SpecificEntry.DelValue(self, attrval)
   self.updateFlags()
예제 #10
0
 def Go(self):
   SpecificEntry.Go(self)
   self.OnExpire()
예제 #11
0
 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)
예제 #12
0
 def Go(self):
   SpecificEntry.Go(self)
예제 #13
0
      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)
예제 #14
0
  @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)
예제 #15
0
 def __init__(self, dlg, notebook, resname=None):
   SpecificEntry.__init__(self, dlg, notebook, resname)
   _SambaRidObject.__init__(self)
예제 #16
0
 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)
예제 #17
0
 def DelValue(self, attrval):
   if attrval.GetOid() == self.memberUidOid:
     self['Members'].clear()
   else:
     SpecificEntry.DelValue(self, attrval)
예제 #18
0
 def SetValue(self, attrval):
   SpecificEntry.SetValue(self, attrval)
   self.updateFlags()
예제 #19
0
 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)
예제 #20
0
 def __init__(self, dlg, notebook, resname=None):
   SpecificEntry.__init__(self, dlg, notebook, resname)
   _SambaRidObject.__init__(self)
   self.Bind("sambaDomainSid", self.OnChangeDomain)
예제 #21
0
  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()