View | Details | Raw Unified | Return to bug 31857 | Differences between
and this patch

Collapse All | Expand All

(-)a/management/univention-directory-manager-modules/modules/univention/admin/handlers/settings/extended_attribute.py (-2 / +2 lines)
 Lines 263-269    Link Here 
263
	'ldapMapping': univention.admin.property(
263
	'ldapMapping': univention.admin.property(
264
		short_description=_('LDAP attribute'),
264
		short_description=_('LDAP attribute'),
265
		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)'),
265
		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)'),
266
		syntax=univention.admin.syntax.string,
266
		syntax=univention.admin.syntax.ldapAttribute,
267
		multivalue=False,
267
		multivalue=False,
268
		options=[],
268
		options=[],
269
		required=True,
269
		required=True,
 Lines 304-310    Link Here 
304
	'objectClass': univention.admin.property(
304
	'objectClass': univention.admin.property(
305
		short_description=_('LDAP object class'),
305
		short_description=_('LDAP object class'),
306
		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)'),
306
		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)'),
307
		syntax=univention.admin.syntax.string,
307
		syntax=univention.admin.syntax.ldapObjectClass,
308
		multivalue=False,
308
		multivalue=False,
309
		options=[],
309
		options=[],
310
		required=True,
310
		required=True,
(-)a/management/univention-directory-manager-modules/modules/univention/admin/handlers/settings/extended_options.py (-1 / +1 lines)
 Lines 145-151    Link Here 
145
	'objectClass': univention.admin.property(
145
	'objectClass': univention.admin.property(
146
		short_description=_('LDAP object class'),
146
		short_description=_('LDAP object class'),
147
		long_description=_('Mapping to LDAP objectClasses'),
147
		long_description=_('Mapping to LDAP objectClasses'),
148
		syntax=univention.admin.syntax.string,
148
		syntax=univention.admin.syntax.ldapObjectClass,
149
		multivalue=True,
149
		multivalue=True,
150
		options=[],
150
		options=[],
151
		required=False,
151
		required=False,
(-)a/management/univention-directory-manager-modules/modules/univention/admin/policy.py (-2 / +2 lines)
 Lines 58-64   def requiredObjectClassesProperty(**kwargs): Link Here 
58
	pargs = dict(
58
	pargs = dict(
59
		short_description=_('Required object class'),
59
		short_description=_('Required object class'),
60
		long_description='',
60
		long_description='',
61
		syntax=univention.admin.syntax.string,
61
		syntax=univention.admin.syntax.ldapObjectClass,
62
		multivalue=True,
62
		multivalue=True,
63
		options=[],
63
		options=[],
64
		required=False,
64
		required=False,
 Lines 73-79   def prohibitedObjectClassesProperty(**kwargs): Link Here 
73
	pargs = dict(
73
	pargs = dict(
74
		short_description=_('Excluded object class'),
74
		short_description=_('Excluded object class'),
75
		long_description='',
75
		long_description='',
76
		syntax=univention.admin.syntax.string,
76
		syntax=univention.admin.syntax.ldapObjectClass,
77
		multivalue=True,
77
		multivalue=True,
78
		options=[],
78
		options=[],
79
		required=False,
79
		required=False,
(-)a/management/univention-directory-manager-modules/modules/univention/admin/syntax.py (-24 / +46 lines)
 Lines 2383-2404   def parse(self, text): Link Here 
2383
		raise univention.admin.uexceptions.valueError(_("Not a valid LDAP DN"))
2383
		raise univention.admin.uexceptions.valueError(_("Not a valid LDAP DN"))
2384
2384
2385
2385
2386
class ldapObjectClass(simple):
2386
class ldapObjectClass(combobox):
2387
	"""
2387
	"""
2388
	Syntax to enter a |LDAP| objectClass name.
2388
	Syntax to enter a |LDAP| objectClass name.
2389
	"""
2389
	"""
2390
	@classmethod
2390
	choices = (('top', 'top'))
2391
	def parse(self, text):
2392
		return text
2393
2391
2394
2392
2395
class ldapAttribute(simple):
2393
class ldapAttribute(combobox):
2396
	"""
2394
	"""
2397
	Syntax to enter a |LDAP| attribute name.
2395
	Syntax to enter a |LDAP| attribute name.
2398
	"""
2396
	"""
2399
	@classmethod
2397
2400
	def parse(self, text):
2398
2401
		return text
2399
def _update_schema():
2400
	from univention.uldap import getMachineConnection
2401
	from ldap.schema import ObjectClass, AttributeType
2402
	try:
2403
		conn = getMachineConnection()
2404
		subschema = conn.get_schema()
2405
2406
		ocs = set()
2407
		for oid in subschema.listall(ObjectClass):
2408
			oc = subschema.get_obj(ObjectClass, oid)
2409
			if oc:
2410
				ocs |= set(oc.names)
2411
		ldapObjectClass.choices = [(_oc, _oc) for _oc in sorted(ocs, key=lambda s: s.lower())]
2412
2413
		attrs = set()
2414
		for oid in subschema.listall(AttributeType):
2415
			attr = subschema.get_obj(AttributeType, oid)
2416
			if attr:
2417
				attrs |= set(attr.names)
2418
		ldapAttribute.choices = [(_attr, _attr) for _attr in sorted(attrs, key=lambda s: s.lower())]
2419
	except ldap.SERVER_DOWN:
2420
		pass
2421
	finally:
2422
		try:
2423
			conn.unbind()
2424
		except:
2425
			pass
2426
2427
2428
__register_choice_update_function(_update_schema)
2402
2429
2403
2430
2404
class ldapFilter(simple):
2431
class ldapFilter(simple):
 Lines 4051-4074   def parse(self, text): Link Here 
4051
				return text
4078
				return text
4052
		raise univention.admin.uexceptions.valueInvalidSyntax(_('"%s" is not a Univention Admin Module.') % text)
4079
		raise univention.admin.uexceptions.valueInvalidSyntax(_('"%s" is not a Univention Admin Module.') % text)
4053
4080
4054
# Unfortunately, Python doesn't seem to support (static) class methods;
4081
	@classmethod
4055
# however, (static) class variables such as "choices" seem to work;
4082
	def update_choices(cls):
4056
# so, we'll modify "choices" using this global method
4083
		"""
4057
4084
		Update internal list of |UDM| modules in :py:class:`univentionAdminModules`.
4058
4085
		"""
4059
def univentionAdminModules_update():
4086
		cls.choices = sorted([
4060
	"""
4087
			(name, univention.admin.modules.short_description(mod))
4061
	Update internal list of |UDM| modules in :py:class:`univentionAdminModules`.
4088
			for name, mod in univention.admin.modules.modules.items()
4062
	"""
4089
			if not univention.admin.modules.virtual(mod)
4063
	temp = []
4090
		], key=operator.itemgetter(1))
4064
	for name, mod in univention.admin.modules.modules.items():
4065
		if not univention.admin.modules.virtual(mod):
4066
			temp.append((name, univention.admin.modules.short_description(mod)))
4067
4068
	univentionAdminModules.choices = sorted(temp, key=operator.itemgetter(1))
4069
4091
4070
4092
4071
__register_choice_update_function(univentionAdminModules_update)
4093
__register_choice_update_function(univentionAdminModules.update_choices)
4072
4094
4073
4095
4074
class UDM_PropertySelect(complex):
4096
class UDM_PropertySelect(complex):
(-)a/management/univention-management-console-module-udm/umc/python/udm/__init__.py (+1 lines)
 Lines 178-183   def init(self): Link Here 
178
		# read user settings and initial UDR
178
		# read user settings and initial UDR
179
		self.reports_cfg = udr.Config()
179
		self.reports_cfg = udr.Config()
180
		self.modules_with_childs = container_modules()
180
		self.modules_with_childs = container_modules()
181
		udm_syntax.update_choices()
181
182
182
	def set_locale(self, _locale):
183
	def set_locale(self, _locale):
183
		super(Instance, self).set_locale(_locale)
184
		super(Instance, self).set_locale(_locale)

Return to bug 31857