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

Collapse All | Expand All

(-)schema/ip-phone.schema (-1 / +5 lines)
 Lines 1-4    Link Here 
1
# univention registered the namespace 10176.
1
# univention registered the namespace 10176.
2
#objectIdentifier univention 1.3.6.1.4.1.10176
3
#objectIdentifier univentionCustomers univention:99999
4
#objectIdentifier univentionExampleAttributeType univentionCustomers:1
5
#objectIdentifier univentionExampleObjectClass univentionCustomers:2
6
2
attributetype ( 1.3.6.1.4.1.10176.9999.1.1 NAME 'testPhoneActive'
7
attributetype ( 1.3.6.1.4.1.10176.9999.1.1 NAME 'testPhoneActive'
3
	DESC 'state of the IP phone'
8
	DESC 'state of the IP phone'
4
	EQUALITY caseIgnoreIA5Match
9
	EQUALITY caseIgnoreIA5Match
 Lines 42-45    Link Here 
42
	MUST ( cn )
47
	MUST ( cn )
43
	MAY ( testPhoneRedirectUser )
48
	MAY ( testPhoneRedirectUser )
44
	)
49
	)
45
(-)debian/univention-directory-manager-module-example-schema.postrm (+4 lines)
 Lines 36-44    Link Here 
36
36
37
case "$1" in
37
case "$1" in
38
remove)
38
remove)
39
	case "$(/usr/sbin/univention-config-registry get server/role)" in
40
	domaincontroller_master)
39
	/usr/sbin/univention-config-registry commit /etc/ldap/slapd.conf
41
	/usr/sbin/univention-config-registry commit /etc/ldap/slapd.conf
40
	invoke-rc.d slapd restart
42
	invoke-rc.d slapd restart
41
	;;
43
	;;
44
	esac
45
	;;
42
46
43
purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
47
purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
44
	;;
48
	;;
(-)debian/changelog (+11 lines)
 Lines 1-3    Link Here 
1
univention-directory-manager-module-example (2.0.5-1) unstable; urgency=low
2
3
  * Prepare for translation (Bug #17915)
4
  * Restart slapd only on domaincontroller_master.
5
  * Fix unicode strings.
6
  * Add missing DocString to exists() and _remove_attr().
7
  * Document advanced=True.
8
  * Use True and False instead of 1 and 0.
9
10
 -- Philipp Hahn <hahn@univention.de>  Wed, 16 Feb 2011 07:59:08 +0100
11
1
univention-directory-manager-module-example (2.0.4-1) unstable; urgency=low
12
univention-directory-manager-module-example (2.0.4-1) unstable; urgency=low
2
13
3
  * suggestions from QA feedback (Bug #17915)
14
  * suggestions from QA feedback (Bug #17915)
(-)modules/ip_phone.py (-76 / +87 lines)
 Lines 28-38    Link Here 
28
# /usr/share/common-licenses/AGPL-3; if not, see
28
# /usr/share/common-licenses/AGPL-3; if not, see
29
# <http://www.gnu.org/licenses/>.
29
# <http://www.gnu.org/licenses/>.
30
30
31
import re, sys, string, copy
31
import re
32
import copy
32
import univention.admin.filter		# Definiert Filterausdruck-Objekt für 'lookup' Funktion unten
33
import univention.admin.filter		# Definiert Filterausdruck-Objekt für 'lookup' Funktion unten
33
import univention.admin.handlers	# Enthält simpleLdap, die Basisklasse für 'object' unten
34
import univention.admin.handlers	# Enthält simpleLdap, die Basisklasse für 'object' unten
34
import univention.admin.syntax		# Liefert standard Syntax-Definitionen für die UDM 'property_descriptions' unten
35
import univention.admin.syntax		# Liefert standard Syntax-Definitionen für die UDM 'property_descriptions' unten
35
36
37
# Für das Einbinden von Übersetzungskatalogen für verschiedene Sprachen
36
translation=univention.admin.localization.translation('univention.admin.handlers.test')
38
translation=univention.admin.localization.translation('univention.admin.handlers.test')
37
_=translation.translate
39
_=translation.translate
38
40
 Lines 45-51    Link Here 
45
47
46
	## die Liste der Auswahlmöglichkeiten: Jedes der Elemente enthält einen eindeutigen Schlüssel
48
	## die Liste der Auswahlmöglichkeiten: Jedes der Elemente enthält einen eindeutigen Schlüssel
47
	## und den anzuzeigenden Text
49
	## und den anzuzeigenden Text
48
	choices=[ ( 'sip', u'SIP'), ( 'h323', u'H.323' ), ('skype', u'Skype' ) ]
50
	choices = [('sip', _(u'SIP')), ('h323', _(u'H.323')), ('skype', _(u'Skype'))]
49
51
50
class SynVoIP_Address(univention.admin.syntax.simple):
52
class SynVoIP_Address(univention.admin.syntax.simple):
51
	"""Diese Klasse dient als Syntax für VoIP Adresse. Der Aufbau ist einer E-Mail Adresse ähnlich,
53
	"""Diese Klasse dient als Syntax für VoIP Adresse. Der Aufbau ist einer E-Mail Adresse ähnlich,
 Lines 60-66    Link Here 
60
	def parse(self, text):
62
	def parse(self, text):
61
		if self._re.match(text) != None:
63
		if self._re.match(text) != None:
62
			return text
64
			return text
63
		raise univention.admin.uexceptions.valueError, u'Not a valid VoIP Address'
65
		raise univention.admin.uexceptions.valueError(_(u'Not a valid VoIP Address'))
64
66
65
67
66
############################ </Syntax definitions> ############################
68
############################ </Syntax definitions> ############################
 Lines 72-80    Link Here 
72
## dieses Objekt kann keine Unterobjekte enthalten
74
## dieses Objekt kann keine Unterobjekte enthalten
73
childs = 0
75
childs = 0
74
## ein sprechender Name für das Web-Frontend
76
## ein sprechender Name für das Web-Frontend
75
short_description = u'IP-Phone'
77
short_description = _(u'IP-Phone')
76
## eine ausführliche Beschreibung
78
## eine ausführliche Beschreibung
77
long_description = u'An example module for the Univention Directory Manager'
79
long_description = _(u'An example module for the Univention Directory Manager')
78
## die LDAP Operationen, die auf diesem Objekt ausgeführt werden können
80
## die LDAP Operationen, die auf diesem Objekt ausgeführt werden können
79
operations=['add','edit','remove','search','move']
81
operations=['add','edit','remove','search','move']
80
82
 Lines 82-90    Link Here 
82
##### Um einen eigenen Wizard zu erstellen, der im UDM-Web links in der Navigationsleiste erscheint:
84
##### Um einen eigenen Wizard zu erstellen, der im UDM-Web links in der Navigationsleiste erscheint:
83
## usewizard = 1
85
## usewizard = 1
84
## wizardmenustring = "VoIP"
86
## wizardmenustring = "VoIP"
85
## wizarddescription =  "Hinzufuegen, Loeschen und Suchen von VoIP Objekten"
87
## wizarddescription =  _(u"Add, delete and search VoIP objects"
86
## wizardoperations = { 'add' : [ "Hinzufuegen", "Fuegt ein VoIP Objekt hinzu" ],
88
## wizardoperations = { 'add' : [_(u"add"), _(u"Add an VoIP object")],
87
##                    'find' : [ "Suchen", "Sucht VoIP Objekte" ] }
89
##                    'find' : [_(u"Search"), _(u"Search VoIP objects"]) }
88
## wizardpath="univentionUsersObject"
90
## wizardpath="univentionUsersObject"
89
91
90
############################ <UDM module options> #############################
92
############################ <UDM module options> #############################
 Lines 93-100    Link Here 
93
	# durch 'options' werden optionale Eigenschaften eines Objekts definiert
95
	# durch 'options' werden optionale Eigenschaften eines Objekts definiert
94
	'redirection': univention.admin.option(
96
	'redirection': univention.admin.option(
95
			short_description=_('Call redirect option'),
97
			short_description=_('Call redirect option'),
96
			default=1,
98
			default=True,
97
			editable=1,
99
			editable=True,
98
			objectClasses = ['testPhoneCallRedirect'],
100
			objectClasses = ['testPhoneCallRedirect'],
99
		)
101
		)
100
}
102
}
 Lines 105-181    Link Here 
105
property_descriptions={
107
property_descriptions={
106
	# der eindeutige Name eines IP-Telefons
108
	# der eindeutige Name eines IP-Telefons
107
	'name': univention.admin.property(
109
	'name': univention.admin.property(
108
			short_description= u'Name',
110
			short_description=_(u'Name'),
109
			long_description= u'ID of the IP-phone',
111
			long_description=_(u'ID of the IP-phone'),
110
			syntax=univention.admin.syntax.hostName,	# Eigenschaft muss der Syntax eines Rechnernamens entsprechen, Def. in syntax.py
112
			syntax=univention.admin.syntax.hostName,	# Eigenschaft muss der Syntax eines Rechnernamens entsprechen, Def. in syntax.py
111
			multivalue=0,
113
			multivalue=False,
112
			options=[],
114
			options=[],
113
			required=1,								# Eigenschaft muss angegeben werden
115
			required=True,								# Eigenschaft muss angegeben werden
114
			may_change=0,								# Eigenschaft darf nach Erstellung nicht verändert werden
116
			may_change=False,							# Eigenschaft darf nach Erstellung nicht verändert werden
115
			identifies=1								# Eigenschaft muss eindeutig sein
117
			identifies=True								# Eigenschaft muss eindeutig sein
116
		),
118
		),
117
	#
119
	#
118
	'active': univention.admin.property(
120
	'active': univention.admin.property(
119
			short_description= u'active',
121
			short_description=_(u'active'),
120
			long_description= u'The IP-phone can be deactivated',
122
			long_description=_(u'The IP-phone can be deactivated'),
121
			syntax=univention.admin.syntax.boolean,		# kann nur die Werte '1' oder '0' annehmen, Definition in syntax.py
123
			syntax=univention.admin.syntax.boolean,		# kann nur die Werte '1' oder '0' annehmen, Definition in syntax.py
122
			multivalue=0,
124
			multivalue=False,
123
			options=[],
125
			options=[],
124
			required=0,								# Eigenschaft muss nicht zwingend angegeben werden
126
			required=False,								# Eigenschaft muss nicht zwingend angegeben werden
125
			default='1',								# Eigenschaft ist standardmäßig aktiviert
127
			default='1',								# Eigenschaft ist standardmäßig aktiviert
126
			may_change=1,								# Eigenschaft darf modifiziert werden
128
			may_change=True,							# Eigenschaft darf modifiziert werden
127
			identifies=0
129
			identifies=False
128
		),
130
		),
129
	'protocol': univention.admin.property(
131
	'protocol': univention.admin.property(
130
			short_description= u'Protocol',
132
			short_description=_(u'Protocol'),
131
			long_description= u'Supported VoIP protocols',
133
			long_description=_(u'Supported VoIP protocols'),
132
			syntax=SynVoIP_Protocols,					# nutzt die selbst definierte Auswahlliste als Syntax
134
			syntax=SynVoIP_Protocols,					# nutzt die selbst definierte Auswahlliste als Syntax
133
			multivalue=0,
135
			multivalue=False,
134
			options=[],
136
			options=[],
135
			required=0,
137
			required=False,
136
			default='sip',							# der Eintrag 'sip' ist vorausgewählt
138
			default='sip',							# der Eintrag 'sip' ist vorausgewählt
137
			may_change=1,
139
			may_change=True,
138
			identifies=0
140
			identifies=False
139
		),
141
		),
140
	'ip': univention.admin.property(
142
	'ip': univention.admin.property(
141
			short_description = u'IP-Address',
143
			short_description=_(u'IP-Address'),
142
			long_description = u'IP-Address of the IP-phone',
144
			long_description=_(u'IP-Address of the IP-phone'),
143
			syntax=univention.admin.syntax.ipAddress,	# muss der Syntax einer IP (Version 4) Adresse entsprechen
145
			syntax=univention.admin.syntax.ipAddress,	# muss der Syntax einer IP (Version 4) Adresse entsprechen
144
			multivalue=0,
146
			multivalue=False,
145
			options=[],
147
			options=[],
146
			required=1,
148
			required=True,
147
			may_change=1,
149
			may_change=True,
148
			identifies=0
150
			identifies=False
149
		),
151
		),
150
	'priuser': univention.admin.property(
152
	'priuser': univention.admin.property(
151
			short_description = u'Primary User',
153
			short_description=_(u'Primary User'),
152
			long_description = u'The primary user of this IP-phone',
154
			long_description=_(u'The primary user of this IP-phone'),
153
			syntax=SynVoIP_Address,						# muss der Syntax einer VoIP Adresse entsprechen
155
			syntax=SynVoIP_Address,						# muss der Syntax einer VoIP Adresse entsprechen
154
			multivalue=0,
156
			multivalue=False,
155
			options=[],
157
			options=[],
156
			required=1,
158
			required=True,
157
			may_change=1,
159
			may_change=True,
158
			identifies=0
160
			identifies=False
159
		),
161
		),
160
	'users': univention.admin.property(
162
	'users': univention.admin.property(
161
			short_description = u'Additional Users',
163
			short_description=_(u'Additional Users'),
162
			long_description = u'Users, that may register with this phone',
164
			long_description=_(u'Users, that may register with this phone'),
163
			syntax=SynVoIP_Address,						# jeder Eintrag muss der Syntax einer VoIP Adresse entsprechen
165
			syntax=SynVoIP_Address,						# jeder Eintrag muss der Syntax einer VoIP Adresse entsprechen
164
			multivalue=1,							# Dies ist eine Liste von Adressen
166
			multivalue=True,						# Dies ist eine Liste von Adressen
165
			options=[],
167
			options=[],
166
			required=0,
168
			required=False,
167
			may_change=1,
169
			may_change=True,
168
			identifies=0
170
			identifies=False
169
		),
171
		),
170
	'redirect_user': univention.admin.property(
172
	'redirect_user': univention.admin.property(
171
			short_description = u'Redirection User',
173
			short_description=_(u'Redirection User'),
172
			long_description = u'Address for call redirection',
174
			long_description=_(u'Address for call redirection'),
173
			syntax=SynVoIP_Address,
175
			syntax=SynVoIP_Address,
174
			multivalue=0,
176
			multivalue=False,
175
			options=['redirection'],					# Ist nur da, wenn die Option gesetzt ist
177
			options=['redirection'],					# Ist nur da, wenn die Option gesetzt ist
176
			required=0,
178
			required=False,
177
			may_change=1,
179
			may_change=True,
178
			identifies=0
180
			identifies=False
179
		),
181
		),
180
}
182
}
181
183
 Lines 186-200    Link Here 
186
##   * Der erste Parameter ist der Name des Reiters und der zweite Parameter
188
##   * Der erste Parameter ist der Name des Reiters und der zweite Parameter
187
##     ist eine Beschreibung der Einstellungsmöglich für diesen Reiter
189
##     ist eine Beschreibung der Einstellungsmöglich für diesen Reiter
188
##   * Die folgende Liste definiert die Anordnung der einzelnen Eigenschaftsfelder.
190
##   * Die folgende Liste definiert die Anordnung der einzelnen Eigenschaftsfelder.
191
##   * Per advanced=True wird der Reiter nur angezeigt, wenn das Anzeigen der
192
##     erweiterten Einstellungen aktiviert ist.
189
layout=[
193
layout=[
190
	univention.admin.tab( u'Gerneral', u'Basic Settings',
194
	univention.admin.tab((u'Gerneral'), _(u'Basic Settings'), [
191
			[ [ univention.admin.field( "name" ), univention.admin.field( "active" ) ],
195
			[ univention.admin.field("name"), univention.admin.field("active") ],
192
			[ univention.admin.field( "ip" ), univention.admin.field( "protocol" ) ],
196
			[ univention.admin.field( "ip" ), univention.admin.field( "protocol" ) ],
193
			[ univention.admin.field( "priuser" ) ] ] ),
197
			[ univention.admin.field("priuser") ],
194
	univention.admin.tab( u'Advanced', u'Advanced Settings', [
198
			]),
199
	univention.admin.tab(_(u'Advanced'), _(u'Advanced Settings'), [
195
				[ univention.admin.field( "users" ) ],
200
				[ univention.admin.field( "users" ) ],
196
			], advanced = True ),
201
			], advanced = True ),
197
	univention.admin.tab( u'Redirect', u'Redirect Option', [
202
	univention.admin.tab(_(u'Redirect'), _(u'Redirect Option'), [
198
				[ univention.admin.field( "redirect_user" ) ],
203
				[ univention.admin.field( "redirect_user" ) ],
199
			], advanced = True ),
204
			], advanced = True ),
200
	]
205
	]
 Lines 203-215    Link Here 
203
208
204
## Die folgenden beiden Hilfsfunktionen dienen zur Abbildung von bool'schen Werten '0' und '1' auf 'no' und 'yes' (siehe Mapping)
209
## Die folgenden beiden Hilfsfunktionen dienen zur Abbildung von bool'schen Werten '0' und '1' auf 'no' und 'yes' (siehe Mapping)
205
def boolToString(value):
210
def boolToString(value):
211
	u"""Wandelt den Wert des LDAP-Attributs in den Wert für die Anzeige der UDM Property."""
206
	if value == '1':
212
	if value == '1':
207
		return 'yes'
213
		return _('yes')
208
	else:
214
	else:
209
		return 'no'
215
		return _('no')
210
216
211
def stringToBool(value):
217
def stringToBool(value):
212
	if value[0].lower() == 'yes':
218
	u"""Wandelt den Wert der UDM Property zurück in den Wert des LDAP-Attributs."""
219
	if value[0].lower() == _('yes'):
213
		return '1'
220
		return '1'
214
	else:
221
	else:
215
		return '0'
222
		return '0'
 Lines 230-237    Link Here 
230
mapping.register('users', 'testPhoneUsers')
237
mapping.register('users', 'testPhoneUsers')
231
mapping.register('redirect_user', 'testPhoneRedirectUser', None, univention.admin.mapping.ListToString)
238
mapping.register('redirect_user', 'testPhoneRedirectUser', None, univention.admin.mapping.ListToString)
232
239
240
233
class object(univention.admin.handlers.simpleLdap):
241
class object(univention.admin.handlers.simpleLdap):
234
	"""Dieses Objekt unterstützt den Univention Directory Manager bei LDAP-Operationen,
242
	u"""Dieses Objekt unterstützt den Univention Directory Manager bei LDAP-Operationen,
235
	die sich auf dieses Modul beziehen.
243
	die sich auf dieses Modul beziehen.
236
	Die Basisklasse univention.admin.handlers.simpleLdap implementiert die komplette Kommunikation über LDAP,
244
	Die Basisklasse univention.admin.handlers.simpleLdap implementiert die komplette Kommunikation über LDAP,
237
	so dass hier nur die Anpassungen für dieses spezielle LDAP-Objekt implementiert werden müssen.
245
	so dass hier nur die Anpassungen für dieses spezielle LDAP-Objekt implementiert werden müssen.
 Lines 243-249    Link Here 
243
	module=module
251
	module=module
244
252
245
	def __init__(self, co, lo, position, dn='', superordinate=None, arg=None):
253
	def __init__(self, co, lo, position, dn='', superordinate=None, arg=None):
246
		"""Initialisierung des Objektes. Hier müssen die oben definierten globalen Variablen 'mapping'
254
		u"""Initialisierung des Objektes. Hier müssen die oben definierten globalen Variablen 'mapping'
247
		und 'property_descriptions' übernommen werden"""
255
		und 'property_descriptions' übernommen werden"""
248
		global options
256
		global options
249
		global mapping
257
		global mapping
 Lines 286-295    Link Here 
286
		self.old_options= copy.deepcopy( self.options )
294
		self.old_options= copy.deepcopy( self.options )
287
295
288
	def exists(self):
296
	def exists(self):
297
		u"""Von SimpleLdap intern verwendete Methode, um zu entscheiden, ob ein
298
		Objekt neu angelegt werden muß oder ein vorhandenes editiert wird."""
289
		return self._exists
299
		return self._exists
290
300
291
	def open(self):
301
	def open(self):
292
		"""Öffnen des LDAP-Objekts."""
302
		u"""Öffnen des LDAP-Objekts."""
293
303
294
		univention.admin.handlers.simpleLdap.open(self)
304
		univention.admin.handlers.simpleLdap.open(self)
295
		## In dieser Methode können die Eigenschaften des Objekts in self.info dynamisch Vor-initialisiert werden. 
305
		## In dieser Methode können die Eigenschaften des Objekts in self.info dynamisch Vor-initialisiert werden. 
 Lines 306-339    Link Here 
306
		self.old_options= copy.deepcopy( self.options ) # Optionen zum späteren Vergleich speichern.
316
		self.old_options= copy.deepcopy( self.options ) # Optionen zum späteren Vergleich speichern.
307
317
308
	def _ldap_pre_create(self):
318
	def _ldap_pre_create(self):
309
		"""Wird vor dem Anlegen des LDAP Objektes aufgerufen."""
319
		u"""Wird vor dem Anlegen des LDAP Objektes aufgerufen."""
310
		self.dn='%s=%s,%s' % (mapping.mapName('name'), mapping.mapValue('name', self.info['name']), self.position.getDn())
320
		self.dn='%s=%s,%s' % (mapping.mapName('name'), mapping.mapValue('name', self.info['name']), self.position.getDn())
311
321
312
	def _ldap_post_create(self):
322
	def _ldap_post_create(self):
313
		"""Wird nach dem Anlegen des Objektes aufgerufen."""
323
		u"""Wird nach dem Anlegen des Objektes aufgerufen."""
314
		pass
324
		pass
315
325
316
	def _ldap_pre_modify(self):
326
	def _ldap_pre_modify(self):
317
		"""Wird vor dem Modifizieren des Objektes aufgerufen."""
327
		u"""Wird vor dem Modifizieren des Objektes aufgerufen."""
318
		pass
328
		pass
319
329
320
	def _ldap_post_modify(self):
330
	def _ldap_post_modify(self):
321
		"""Wird nach dem Modifizieren des Objektes aufgerufen."""
331
		u"""Wird nach dem Modifizieren des Objektes aufgerufen."""
322
		pass
332
		pass
323
333
324
	def _ldap_pre_remove(self):
334
	def _ldap_pre_remove(self):
325
		"""Wird vor dem Löschen des Objektes aufgerufen."""
335
		u"""Wird vor dem Löschen des Objektes aufgerufen."""
326
		pass
336
		pass
327
337
328
	def _ldap_post_remove(self):
338
	def _ldap_post_remove(self):
329
		"""Wird nach dem Löschen des Objektes aufgerufen."""
339
		u"""Wird nach dem Löschen des Objektes aufgerufen."""
330
		pass
340
		pass
331
341
332
	def _update_policies(self):
342
	def _update_policies(self):
333
		pass
343
		pass
334
344
335
	def _ldap_addlist(self):
345
	def _ldap_addlist(self):
336
		"""Diese Funktion muss definiert werden, weil sie von 'create' verwendet wird.
346
		u"""Diese Funktion muss definiert werden, weil sie von 'create' verwendet wird.
337
		Sie sollte die nur zum Anlegen notwendigen LDAP-Attribute zurückgeben, d.h. mindestens die
347
		Sie sollte die nur zum Anlegen notwendigen LDAP-Attribute zurückgeben, d.h. mindestens die
338
		'objectClass' Definition. Nach dieser Methode ruft 'create' _ldap_modlist auf, um weitere
348
		'objectClass' Definition. Nach dieser Methode ruft 'create' _ldap_modlist auf, um weitere
339
		Modifikationen an Eigenschaften festzustellen."""
349
		Modifikationen an Eigenschaften festzustellen."""
 Lines 342-347    Link Here 
342
		return al
352
		return al
343
353
344
	def _remove_attr(self, ml, attr):
354
	def _remove_attr(self, ml, attr):
355
		u"""Hilfmethode zum Entfernen das Attribut 'attr' aus der Liste der zu
356
		modifizierenden Attribute 'ml'."""
345
		for m in ml:
357
		for m in ml:
346
			if m[0] == attr:
358
			if m[0] == attr:
347
				ml.remove(m)
359
				ml.remove(m)
 Lines 350-356    Link Here 
350
		return ml
362
		return ml
351
363
352
	def _ldap_modlist(self):
364
	def _ldap_modlist(self):
353
		"""Diese Funktion kann definiert werden. Die gleichnamige ererbte Methode von 'simpleLdap'
365
		u"""Diese Funktion kann definiert werden. Die gleichnamige ererbte Methode von 'simpleLdap'
354
		erstellt eine LDAP-modlist aus der Differenz zwischen self.oldinfo und self.info."""
366
		erstellt eine LDAP-modlist aus der Differenz zwischen self.oldinfo und self.info."""
355
367
356
		ml = univention.admin.handlers.simpleLdap._ldap_modlist(self)
368
		ml = univention.admin.handlers.simpleLdap._ldap_modlist(self)
 Lines 376-382    Link Here 
376
 
388
 
377
389
378
def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0):
390
def lookup(co, lo, filter_s, base='', superordinate=None, scope='sub', unique=0, required=0, timeout=-1, sizelimit=0):
379
	"""Diese Function sucht nach Objekten, die dem in diesem Modul verwalteten Typ (objectClass)
391
	u"""Diese Function sucht nach Objekten, die dem in diesem Modul verwalteten Typ (objectClass)
380
	die den angegebenen Suchkriterien entsprechen. Der Rückgabewert dieser Funktion ist ein Liste
392
	die den angegebenen Suchkriterien entsprechen. Der Rückgabewert dieser Funktion ist ein Liste
381
	der gefunden Objekte."""
393
	der gefunden Objekte."""
382
394
 Lines 402-410    Link Here 
402
	return res
414
	return res
403
415
404
416
405
def identify(dn, attr, canonical=0):
417
def identify(dn, attr, canonical=False):
406
	"""Prüft ob die verwaltete Objektklasse diese Moduls in der übergebenen Liste enthalten ist,
418
	u"""Prüft ob die verwaltete Objektklasse diese Moduls in der übergebenen Liste enthalten ist,
407
	d.h. ob dieses Modul für die Handhabung des Objekts zuständig ist"""
419
	d.h. ob dieses Modul für die Handhabung des Objekts zuständig ist."""
408
420
409
	return 'testPhone' in attr.get('objectClass', [])
421
	return 'testPhone' in attr.get('objectClass', [])
410

Return to bug 17915