@@ -, +, @@ attributeTypes --- .../debian/changelog | 6 ++ .../handlers/legacy/policies/clientdevices.py | 4 +- .../legacy/policies/managedclientpackages.py | 4 +- .../legacy/policies/mobileclientpackages.py | 4 +- .../admin/handlers/legacy/policies/sound.py | 4 +- .../admin/handlers/legacy/policies/thinclient.py | 4 +- .../admin/handlers/legacy/policies/xfree.py | 4 +- .../admin/handlers/policies/admin_container.py | 8 +-- .../admin/handlers/policies/autostart.py | 6 +- .../univention/admin/handlers/policies/desktop.py | 6 +- .../admin/handlers/policies/dhcp_boot.py | 8 +-- .../univention/admin/handlers/policies/dhcp_dns.py | 8 +-- .../admin/handlers/policies/dhcp_dnsupdate.py | 4 +- .../admin/handlers/policies/dhcp_leasetime.py | 4 +- .../admin/handlers/policies/dhcp_netbios.py | 4 +- .../admin/handlers/policies/dhcp_routing.py | 8 +-- .../admin/handlers/policies/dhcp_scope.py | 4 +- .../admin/handlers/policies/dhcp_statements.py | 4 +- .../admin/handlers/policies/ldapserver.py | 6 +- .../admin/handlers/policies/mailquota.py | 6 +- .../admin/handlers/policies/maintenance.py | 4 +- .../admin/handlers/policies/masterpackages.py | 4 +- .../admin/handlers/policies/memberpackages.py | 4 +- .../admin/handlers/policies/nfsmounts.py | 4 +- .../admin/handlers/policies/print_quota.py | 4 +- .../admin/handlers/policies/printserver.py | 4 +- .../admin/handlers/policies/pwhistory.py | 4 +- .../univention/admin/handlers/policies/registry.py | 4 +- .../univention/admin/handlers/policies/release.py | 4 +- .../admin/handlers/policies/repositoryserver.py | 4 +- .../admin/handlers/policies/repositorysync.py | 4 +- .../admin/handlers/policies/share_userquota.py | 4 +- .../admin/handlers/policies/slavepackages.py | 4 +- .../admin/handlers/settings/extended_attribute.py | 4 +- .../modules/univention/admin/syntax.py | 71 +++++++++++++++------- .../debian/changelog | 6 ++ .../umc/python/udm/syntax.py | 4 ++ 37 files changed, 143 insertions(+), 100 deletions(-) --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/debian/changelog +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/debian/changelog @@ -1,3 +1,9 @@ +univention-directory-manager-modules (10.0.29-53) unstable; urgency=low + + * Bug #31857: provide list of objectClasses and attributeTypes + + -- Philipp Hahn Thu, 18 Jun 2015 12:25:49 +0200 + univention-directory-manager-modules (10.0.29-52) unstable; urgency=medium * Bug #32146: filter duplicated variables, strip out leading/trailing --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/clientdevices.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/clientdevices.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/managedclientpackages.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/managedclientpackages.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/mobileclientpackages.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/mobileclientpackages.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/sound.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/sound.py @@ -97,7 +97,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -107,7 +107,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/thinclient.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/thinclient.py @@ -130,7 +130,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -140,7 +140,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/xfree.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/legacy/policies/xfree.py @@ -239,7 +239,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -249,7 +249,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/admin_container.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/admin_container.py @@ -52,7 +52,7 @@ module='policies/admin_container' operations=['add','edit','remove','search'] policy_oc='univentionPolicyAdminContainerSettings' -policy_apply_to=[] +policy_apply_to=[] policy_position_dn_prefix="cn=container,cn=admin" usewizard=1 @@ -87,7 +87,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -97,7 +97,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -176,7 +176,7 @@ class object(univention.admin.handlers.simplePolicy): def _ldap_addlist(self): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyAdminContainerSettings']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/autostart.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/autostart.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -174,7 +174,7 @@ class object(univention.admin.handlers.simplePolicy): def _ldap_addlist(self): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyAutoStart']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/desktop.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/desktop.py @@ -116,7 +116,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -126,7 +126,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -210,7 +210,7 @@ class object(univention.admin.handlers.simplePolicy): def _ldap_addlist(self): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyDesktop']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_boot.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_boot.py @@ -96,7 +96,7 @@ server from which the initial boot file is retrieved.'), 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ server from which the initial boot file is retrieved.'), 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -189,7 +189,7 @@ class object(univention.admin.handlers.simplePolicy): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyDhcpBoot']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ @@ -210,5 +210,5 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, return res def identify(dn, attr, canonical=0): - + return 'univentionPolicyDhcpBoot' in attr.get('objectClass', []) --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_dns.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_dns.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -189,7 +189,7 @@ class object(univention.admin.handlers.simplePolicy): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyDhcpDns']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ @@ -210,5 +210,5 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, return res def identify(dn, attr, canonical=0): - + return 'univentionPolicyDhcpDns' in attr.get('objectClass', []) --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_dnsupdate.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_dnsupdate.py @@ -162,7 +162,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -172,7 +172,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_leasetime.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_leasetime.py @@ -106,7 +106,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -116,7 +116,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_netbios.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_netbios.py @@ -106,7 +106,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -116,7 +116,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_routing.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_routing.py @@ -84,7 +84,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -94,7 +94,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -176,7 +176,7 @@ class object(univention.admin.handlers.simplePolicy): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyDhcpRouting']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ @@ -197,5 +197,5 @@ def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, return res def identify(dn, attr, canonical=0): - + return 'univentionPolicyDhcpRouting' in attr.get('objectClass', []) --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_scope.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_scope.py @@ -128,7 +128,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -138,7 +138,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_statements.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/dhcp_statements.py @@ -139,7 +139,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -149,7 +149,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/ldapserver.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/ldapserver.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -174,7 +174,7 @@ class object(univention.admin.handlers.simplePolicy): def _ldap_addlist(self): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionPolicyLDAPServer']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/mailquota.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/mailquota.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -174,7 +174,7 @@ class object(univention.admin.handlers.simplePolicy): def _ldap_addlist(self): return [ ('objectClass', ['top', 'univentionPolicy', 'univentionMailQuota']) ] - + def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0): filter=univention.admin.filter.conjunction('&', [ --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/maintenance.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/maintenance.py @@ -166,7 +166,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -176,7 +176,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/masterpackages.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/masterpackages.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/memberpackages.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/memberpackages.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/nfsmounts.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/nfsmounts.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/print_quota.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/print_quota.py @@ -109,7 +109,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -119,7 +119,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/printserver.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/printserver.py @@ -85,7 +85,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -95,7 +95,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/pwhistory.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/pwhistory.py @@ -117,7 +117,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -127,7 +127,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/registry.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/registry.py @@ -84,7 +84,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -94,7 +94,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/release.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/release.py @@ -95,7 +95,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -105,7 +105,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/repositoryserver.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/repositoryserver.py @@ -86,7 +86,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -96,7 +96,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/repositorysync.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/repositorysync.py @@ -126,7 +126,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -136,7 +136,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/share_userquota.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/share_userquota.py @@ -130,7 +130,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -140,7 +140,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/slavepackages.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/policies/slavepackages.py @@ -96,7 +96,7 @@ property_descriptions={ 'requiredObjectClasses': univention.admin.property( short_description=_('Required object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, @@ -106,7 +106,7 @@ property_descriptions={ 'prohibitedObjectClasses': univention.admin.property( short_description=_('Excluded object class'), long_description='', - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=1, options=[], required=0, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/settings/extended_attribute.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/handlers/settings/extended_attribute.py @@ -257,7 +257,7 @@ property_descriptions={ 'ldapMapping': univention.admin.property( short_description=_('LDAP attribute'), long_description=_('Univention Corporate Server provides its own LDAP scheme for customer extensions. The LDAP object class univentionFreeAttributes can be used for extended attributes without restrictions. It offers 20 freely usable attributes (univentionFreeAttribute1 to univentionFreeAttribute20) and can be used in connection with any LDAP object (e.g., a user object)'), - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapAttribute, multivalue=0, options=[], required=1, @@ -298,7 +298,7 @@ property_descriptions={ 'objectClass': univention.admin.property( short_description=_('LDAP object class'), long_description=_('Univention Corporate Server provides its own LDAP scheme for customer extensions. The LDAP object class univentionFreeAttributes can be used for extended attributes without restrictions. It offers 20 freely usable attributes (univentionFreeAttribute1 to univentionFreeAttribute20) and can be used in connection with any LDAP object (e.g., a user object)'), - syntax=univention.admin.syntax.string, + syntax=univention.admin.syntax.ldapObjectClass, multivalue=0, options=[], required=1, --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/syntax.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-directory-manager-modules/modules/univention/admin/syntax.py @@ -1467,15 +1467,45 @@ class ldapDnOrNone(simple): return text raise univention.admin.uexceptions.valueError,_("Not a valid LDAP DN") -class ldapObjectClass(simple): - @classmethod - def parse(self, text): - return text -class ldapAttribute(simple): - @classmethod - def parse(self, text): - return text +class ldapObjectClass(select): + choices = (('top', 'top')) + + +class ldapAttribute(select): + choices = () + + +def _update_schema(): + from univention.uldap import getMachineConnection + from ldap.schema import (SubSchema, ObjectClass, AttributeType) + conn = getMachineConnection() + try: + results = conn.lo.search_ext_s( + base='cn=Subschema', + scope=ldap.SCOPE_BASE, + attrlist=['attributeTypes', 'objectClasses']) + result, = results + dn, entry = result + subschema = SubSchema(entry) + + sorter = lambda s: s.lower() + ocs = set() + for oid in subschema.listall(ObjectClass): + oc = subschema.get_obj(ObjectClass, oid) + ocs |= set(oc.names) + ldapObjectClass.choices = [(oc, oc) for oc in sorted(ocs, key=sorter)] + attrs = set() + for oid in subschema.listall(AttributeType): + attr = subschema.get_obj(AttributeType, oid) + attrs |= set(attr.names) + ldapAttribute.choices = [(attr, attr) for attr in sorted(attrs, key=sorter)] + except ldap.SERVER_DOWN: + pass + finally: + conn.lo.unbind() +__register_choice_update_function(_update_schema) + class ldapFilter(simple): @@ -2522,7 +2552,7 @@ class MinuteSimple(select): class UNIX_AccessRight( simple ): pass -# Widget supports setgid/sticky bit +# Widget supports setgid/sticky bit class UNIX_AccessRight_extended( simple ): pass @@ -2612,18 +2642,15 @@ class univentionAdminModules(select): return text raise univention.admin.uexceptions.valueInvalidSyntax, _('"%s" is not a Univention Admin Module.') % text -# Unfortunately, Python doesn't seem to support (static) class methods; -# however, (static) class variables such as "choices" seem to work; -# so, we'll modify "choices" using this global method -def univentionAdminModules_update(): - temp = [] - for name, mod in univention.admin.modules.modules.items(): - if not univention.admin.modules.virtual( mod ): - temp.append( ( name, univention.admin.modules.short_description( mod ) ) ) - - univentionAdminModules.choices = sorted( temp, key = operator.itemgetter( 1 ) ) + @classmethod + def _update_choices(cls): + cls.choices = sorted([ + (name, univention.admin.modules.short_description(mod)) + for name, mod in univention.admin.modules.modules.items() + if not univention.admin.modules.virtual(mod) + ] , key=operator.itemgetter(1)) -__register_choice_update_function(univentionAdminModules_update) +__register_choice_update_function(univentionAdminModules._update_choices) class UDM_PropertySelect( complex ): subsyntaxes = ( ( _( 'UDM module' ), string ), ( _( 'property' ), string ) ) @@ -2707,11 +2734,11 @@ class LDAP_Search( select ): Searches can be either defined dynamically via a UDM settings/syntax definition and using - >>> LDAP_Search( syntax_name = '' ) + > LDAP_Search( syntax_name = '' ) or programmatically by directly instantiating - >>> LDAP_Search( filter = '', attribute = [ '', ... ], value = '', base = '' ) + > LDAP_Search( filter = '', attribute = [ '', ... ], value = '', base = '' ) """ FILTER_PATTERN = '(&(objectClass=univentionSyntax)(cn=%s))' --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-management-console-module-udm/debian/changelog +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-management-console-module-udm/debian/changelog @@ -1,3 +1,9 @@ +univention-management-console-module-udm (5.1.25-71) unstable; urgency=low + + * Bug #31857: provide list of objectClasses and attributeTypes + + -- Philipp Hahn Thu, 18 Jun 2015 12:25:49 +0200 + univention-management-console-module-udm (5.1.25-70) unstable; urgency=medium * Bug #38544: handle errors when no object type is given via request.options --- a/branches/ucs-4.0/ucs-4.0-2/management/univention-management-console-module-udm/umc/python/udm/syntax.py +++ a/branches/ucs-4.0/ucs-4.0-2/management/univention-management-console-module-udm/umc/python/udm/syntax.py @@ -39,6 +39,10 @@ import univention.admin.syntax as udm_syntax from ...log import MODULE +# update choices-lists which are defined in LDAP +udm_syntax.update_choices() + + class Widget(object): '''Describes a widget for the new web frontend''' --