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

Collapse All | Expand All

(-)management/univention-directory-manager-modules/modules/univention/admin/handlers/groups/group.py (+27 lines)
 Lines 109-114    Link Here 
109
			default=('2',[]),
109
			default=('2',[]),
110
			options=['samba']
110
			options=['samba']
111
		),
111
		),
112
	'sambaPrivileges': univention.admin.property(
113
			short_description=_('Samba privileges'),
114
			long_description=('Manage samba privileges'),
115
			syntax=univention.admin.syntax.sambaPrivileges,
116
			multivalue=1,
117
			options=['samba'],
118
			required=0,
119
			dontsearch=0,
120
			may_change=1,
121
			identifies=0,
122
	),
112
	'description': univention.admin.property(
123
	'description': univention.admin.property(
113
			short_description=_('Description'),
124
			short_description=_('Description'),
114
			long_description='',
125
			long_description='',
 Lines 222-227    Link Here 
222
	], advanced = True ),
233
	], advanced = True ),
223
	univention.admin.tab(_('Allowed groups'),_('Groups that are allowed to send e-mails to the group'),[
234
	univention.admin.tab(_('Allowed groups'),_('Groups that are allowed to send e-mails to the group'),[
224
		[univention.admin.field("allowedEmailGroups")]
235
		[univention.admin.field("allowedEmailGroups")]
236
	], advanced = True ),
237
	univention.admin.tab(_('Windows'),_('Windows account settings'),[
238
		[univention.admin.field("sambaPrivileges")]
225
	], advanced = True )
239
	], advanced = True )
226
]
240
]
227
241
 Lines 231-236    Link Here 
231
mapping.register('description', 'description', None, univention.admin.mapping.ListToString)
245
mapping.register('description', 'description', None, univention.admin.mapping.ListToString)
232
mapping.register('sambaGroupType', 'sambaGroupType', None, univention.admin.mapping.ListToString)
246
mapping.register('sambaGroupType', 'sambaGroupType', None, univention.admin.mapping.ListToString)
233
mapping.register('mailAddress', 'mailPrimaryAddress', None, univention.admin.mapping.ListToString)
247
mapping.register('mailAddress', 'mailPrimaryAddress', None, univention.admin.mapping.ListToString)
248
mapping.register('sambaPrivileges', 'univentionSambaPrivilegeList')
234
249
235
def _case_insensitive_in_list(dn, list):
250
def _case_insensitive_in_list(dn, list):
236
	for element in list:
251
	for element in list:
 Lines 569-574    Link Here 
569
	def _ldap_modlist( self ):
584
	def _ldap_modlist( self ):
570
585
571
		ml=univention.admin.handlers.simpleLdap._ldap_modlist( self )
586
		ml=univention.admin.handlers.simpleLdap._ldap_modlist( self )
587
588
		# samba privileges
589
		if self.hasChanged("sambaPrivileges") and "samba" in self.options:
590
			o = self.oldattr.get('objectClass', [])
591
			# add univentionSambaPrivileges objectclass
592
			if self["sambaPrivileges"] and not "univentionSambaPrivileges" in o:
593
				ml.insert(0, ('objectClass', '', 'univentionSambaPrivileges'))
594
			# do not remove univentionSambaPrivileges objectclass
595
			# (we need it in the listener filter)
596
			#if not self["sambaPrivileges"] and "univentionSambaPrivileges" in o:
597
			#	ml.insert(0, ('objectClass', 'univentionSambaPrivileges', ''))
598
572
		if self.hasChanged( 'mailAddress' ) and self[ 'mailAddress' ]:
599
		if self.hasChanged( 'mailAddress' ) and self[ 'mailAddress' ]:
573
			for i, j in self.alloc:
600
			for i, j in self.alloc:
574
				if i == 'mailPrimaryAddress': break
601
				if i == 'mailPrimaryAddress': break
(-)management/univention-directory-manager-modules/modules/univention/admin/handlers/users/de.po (+8 lines)
 Lines 286-291    Link Here 
286
msgid "Groups"
286
msgid "Groups"
287
msgstr "Gruppen"
287
msgstr "Gruppen"
288
288
289
#: user.py:528
290
msgid "Samba privileges"
291
msgstr "Samba Privilegien"
292
293
#: user.py:529
294
msgid "Manage samba privileges"
295
msgstr "Samba Privilegien verwalten"
296
289
#: user.py:538
297
#: user.py:538
290
msgid "Primary group"
298
msgid "Primary group"
291
msgstr "Primäre Gruppe"
299
msgstr "Primäre Gruppe"
(-)management/univention-directory-manager-modules/modules/univention/admin/handlers/users/user.py (-2 / +25 lines)
 Lines 524-529    Link Here 
524
			identifies=0,
524
			identifies=0,
525
			options=['samba']
525
			options=['samba']
526
		),
526
		),
527
	'sambaPrivileges': univention.admin.property(
528
			short_description=_('Samba privileges'),
529
			long_description=('Manage samba privileges'),
530
			syntax=univention.admin.syntax.sambaPrivileges,
531
			multivalue=1,
532
			options=['samba'],
533
			required=0,
534
			dontsearch=0,
535
			may_change=1,
536
			identifies=0,
537
		),
527
	'groups': univention.admin.property(
538
	'groups': univention.admin.property(
528
			short_description=_('Groups'),
539
			short_description=_('Groups'),
529
			long_description='',
540
			long_description='',
 Lines 1114-1120    Link Here 
1114
	univention.admin.tab(_('Windows'),_('Windows account settings'),[
1125
	univention.admin.tab(_('Windows'),_('Windows account settings'),[
1115
		[univention.admin.field("sambahome"), univention.admin.field("homedrive")],
1126
		[univention.admin.field("sambahome"), univention.admin.field("homedrive")],
1116
		[univention.admin.field("scriptpath"), univention.admin.field("profilepath")],
1127
		[univention.admin.field("scriptpath"), univention.admin.field("profilepath")],
1117
		[univention.admin.field("sambaRID")],
1128
		[univention.admin.field("sambaRID"), univention.admin.field("sambaPrivileges")],
1118
		[univention.admin.field("sambaLogonHours"), univention.admin.field("sambaUserWorkstations")]
1129
		[univention.admin.field("sambaLogonHours"), univention.admin.field("sambaUserWorkstations")]
1119
	]),
1130
	]),
1120
	univention.admin.tab(_('Groups'),_('Group memberships'), [
1131
	univention.admin.tab(_('Groups'),_('Group memberships'), [
 Lines 1380-1386    Link Here 
1380
mapping.register('organisation', 'o', None, univention.admin.mapping.ListToString)
1391
mapping.register('organisation', 'o', None, univention.admin.mapping.ListToString)
1381
1392
1382
mapping.register('mailPrimaryAddress', 'mailPrimaryAddress', None, univention.admin.mapping.ListToLowerString)
1393
mapping.register('mailPrimaryAddress', 'mailPrimaryAddress', None, univention.admin.mapping.ListToLowerString)
1383
mapping.register('mailAlternativeAddress', 'mailAlternativeAddress', univention.admin.mapping.ListToLowerListUniq)
1394
mapping.register('mailAlternativeAddress', 'mailAlternativeAddress', None, univention.admin.mapping.ListToLowerListUniq)
1384
mapping.register('mailGlobalSpamFolder', 'mailGlobalSpamFolder', None, univention.admin.mapping.ListToString)
1395
mapping.register('mailGlobalSpamFolder', 'mailGlobalSpamFolder', None, univention.admin.mapping.ListToString)
1385
1396
1386
mapping.register('street', 'street', None, univention.admin.mapping.ListToString)
1397
mapping.register('street', 'street', None, univention.admin.mapping.ListToString)
 Lines 1402-1407    Link Here 
1402
mapping.register('sambahome', 'sambaHomePath', None, univention.admin.mapping.ListToString)
1413
mapping.register('sambahome', 'sambaHomePath', None, univention.admin.mapping.ListToString)
1403
mapping.register('sambaUserWorkstations', 'sambaUserWorkstations', sambaWorkstationsMap, sambaWorkstationsUnmap)
1414
mapping.register('sambaUserWorkstations', 'sambaUserWorkstations', sambaWorkstationsMap, sambaWorkstationsUnmap)
1404
mapping.register('sambaLogonHours', 'sambaLogonHours', logonHoursMap, logonHoursUnmap)
1415
mapping.register('sambaLogonHours', 'sambaLogonHours', logonHoursMap, logonHoursUnmap)
1416
mapping.register('sambaPrivileges', 'univentionSambaPrivilegeList')
1405
mapping.register('scriptpath', 'sambaLogonScript', None, univention.admin.mapping.ListToString)
1417
mapping.register('scriptpath', 'sambaLogonScript', None, univention.admin.mapping.ListToString)
1406
mapping.register('profilepath', 'sambaProfilePath', None, univention.admin.mapping.ListToString)
1418
mapping.register('profilepath', 'sambaProfilePath', None, univention.admin.mapping.ListToString)
1407
mapping.register('homedrive', 'sambaHomeDrive', None, univention.admin.mapping.ListToString)
1419
mapping.register('homedrive', 'sambaHomeDrive', None, univention.admin.mapping.ListToString)
 Lines 2227-2232    Link Here 
2227
		shadowLastChangeValue = ''	# if is filled, it will be added to ml in the end
2239
		shadowLastChangeValue = ''	# if is filled, it will be added to ml in the end
2228
		sambaPwdLastSetValue = ''	# if is filled, it will be added to ml in the end
2240
		sambaPwdLastSetValue = ''	# if is filled, it will be added to ml in the end
2229
2241
2242
		# samba privileges
2243
		if self.hasChanged("sambaPrivileges") and "samba" in self.options:
2244
			o = self.oldattr.get('objectClass', [])
2245
			# add univentionSambaPrivileges objectclass
2246
			if self["sambaPrivileges"] and not "univentionSambaPrivileges" in o:
2247
				ml.insert(0, ('objectClass', '', 'univentionSambaPrivileges'))
2248
			# do not remove univentionSambaPrivileges objectclass
2249
			# (we need it in the listener filter)
2250
			#if not self["sambaPrivileges"] and "univentionSambaPrivileges" in o:
2251
			#	ml.insert(0, ('objectClass', 'univentionSambaPrivileges', ''))			
2252
2230
		if self.options != self.old_options:
2253
		if self.options != self.old_options:
2231
			univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'options: %s' % self.options)
2254
			univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'options: %s' % self.options)
2232
			univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'old_options: %s' % self.old_options)
2255
			univention.debug.debug(univention.debug.ADMIN, univention.debug.INFO, 'old_options: %s' % self.old_options)
(-)management/univention-directory-manager-modules/modules/univention/admin/syntax.py (+17 lines)
 Lines 1116-1121    Link Here 
1116
	name='ldapServer'
1116
	name='ldapServer'
1117
	def parse(self, text):
1117
	def parse(self, text):
1118
		return text
1118
		return text
1119
1120
class sambaPrivileges(simple):
1121
	name='sambaPrivileges'
1122
	privileges = [
1123
		{ "name" : "SeMachineAccountPrivilege", "description" : _("Add machines to domain") },
1124
		{ "name" : "SeSecurityPrivilege",       "description" : _("Manage auditing and security log") },
1125
		{ "name" : "SeTakeOwnershipPrivilege",  "description" : _("Take ownership of files or other objects") },
1126
		{ "name" : "SeBackupPrivilege",         "description" : _("Back up files and directories") },
1127
		{ "name" : "SeRestorePrivilege",        "description" : _("Restore files and directories") },
1128
		{ "name" : "SeRemoteShutdownPrivilege", "description" : _("Force shutdown from a remote system") },
1129
		{ "name" : "SePrintOperatorPrivilege",  "description" : _("Manage printers") },
1130
		{ "name" : "SeAddUsersPrivilege",       "description" : _("Add users and groups to the domain") },
1131
		{ "name" : "SeDiskOperatorPrivilege",   "description" : _("Manage disk shares") },
1132
	]
1133
	def parse(self, text):
1134
		return text
1135
1119
class printerServer(simple):
1136
class printerServer(simple):
1120
	name='printerServer'
1137
	name='printerServer'
1121
	def parse(self, text):
1138
	def parse(self, text):
(-)management/univention-directory-manager/uniconf/modedit.py (+99 lines)
 Lines 3730-3735    Link Here 
3730
3730
3731
					################################
3731
					################################
3732
3732
3733
					elif property.syntax.name == 'sambaPrivileges':
3734
						self.minput[name]=[]
3735
						minput_rows=[]
3736
						atts=copy.deepcopy(attributes)
3737
						mvaluelist=[]
3738
						i=0
3739
						if value:
3740
							for v in value:
3741
								try:
3742
									mvaluelist.append({'name': unicode(i), 'description': syntax.tostring(v)})
3743
								except univention.admin.uexceptions.valueInvalidSyntax, e:
3744
									pass
3745
								i+=1
3746
						if name:
3747
							# [0]: input field (or several input fields in case of a complex syntax property)
3748
3749
							packages = property.syntax.privileges
3750
3751
							self.minput[name].append(question_select(property.short_description,atts,{'choicelist':packages,'helptext':_('select Server')}))
3752
							atts=copy.deepcopy(attributes)
3753
							b_atts=copy.deepcopy(attributes)
3754
							b2_atts=copy.deepcopy(attributes)
3755
							# [1]: add button
3756
							self.minput[name].append(get_addbutton(b_atts,_("Add %s") % name))
3757
							# [2]: mselect list widget
3758
							self.minput[name].append(question_mselect(_("Entries:"),atts,{"helptext":_("Current entries for '%s'") % name,"choicelist":mvaluelist}))
3759
							# [3]: remove button
3760
							self.minput[name].append(get_removebutton(b_atts,_("Remove selected '%s' entrie(s) from list") % name))
3761
3762
							# move buttons:
3763
							# [4]: up button [ ^ ]
3764
							self.minput[name].append(get_upbutton(b2_atts,_("Move upwards")))
3765
							# [5]: down button [ v ]
3766
							self.minput[name].append(get_downbutton(b2_atts,_("Move downwards")))
3767
3768
							# put the widgets/buttons from minput[name] into a table
3769
							#                 |                |
3770
							#                 |----------------|
3771
							#  <input field>  | <add button>   |
3772
							# ---------------------------------|
3773
							#                 | <up button>    |
3774
							#                 |----------------|
3775
							#                 | <remove button>|
3776
							#  <mselect list> |----------------|
3777
							#                 | <down button>  |
3778
							#----------------------------------|
3779
							minput_rows.append(tablerow("",{},{"obs":[\
3780
										tablecol('',{'rowspan':'2'}, {'obs': [\
3781
											#input field
3782
											self.minput[name][0]\
3783
										]}),\
3784
										tablecol('',{}, {'obs': [\
3785
											# needed freespace
3786
											htmltext("",{},{'htmltext':['&nbsp;']})
3787
										]})\
3788
									]}))
3789
							minput_rows.append(tablerow("",{},{"obs":[\
3790
										tablecol('',{'type':'multi_add_top'}, {'obs': [\
3791
											#add button
3792
											self.minput[name][1]\
3793
										]})\
3794
									]}))
3795
							minput_rows.append(tablerow("",{},{"obs":[\
3796
										tablerow("",{},{"obs":[\
3797
											tablecol('',{'rowspan':'3'}, {'obs': [\
3798
												#mselect list
3799
												self.minput[name][2]\
3800
											]}),\
3801
											tablecol('',{'type':'multi_remove'}, {'obs': [\
3802
												#up button
3803
												self.minput[name][4]\
3804
											]})\
3805
										]}),\
3806
										tablerow("",{},{"obs":[\
3807
											tablecol('',{'type':'multi_remove'}, {'obs': [\
3808
												#remove button
3809
												self.minput[name][3]\
3810
											]})\
3811
										]}),\
3812
										tablerow("",{},{"obs":[\
3813
											tablecol('',{'type':'multi_remove_img'}, {'obs': [\
3814
												#down button
3815
												self.minput[name][5]\
3816
											]})\
3817
										]})\
3818
									]}))
3819
						else:
3820
							minput_rows.append(tablerow("",{},{"obs":[\
3821
										tablecol('',{}, {'obs': [\
3822
										]}),\
3823
										tablecol('',{}, {'obs': [\
3824
										]})\
3825
									]}))
3826
						cols.append(tablecol('',{'type':'tab_layout'}, {'obs': [table("",{'type':'multi'},{"obs":minput_rows})]}))
3827
3828
					
3829
3830
					################################
3831
3733
					elif property.syntax.name == 'ldapServer':
3832
					elif property.syntax.name == 'ldapServer':
3734
						self.minput[name]=[]
3833
						self.minput[name]=[]
3735
						minput_rows=[]
3834
						minput_rows=[]

Return to bug 23746