View | Details | Raw Unified | Return to bug 49859
Collapse All | Expand All

(-)a/ucs-school-umc-exam/umc/python/schoolexam/__init__.py (-12 / +7 lines)
 Lines 56-61   from univention.management.console.modules.distribution import compare_dn Link Here 
56
56
57
from univention.lib.i18n import Translation
57
from univention.lib.i18n import Translation
58
from univention.lib.umc import Client, ConnectionError, HTTPError
58
from univention.lib.umc import Client, ConnectionError, HTTPError
59
from univention.lib.misc import custom_groupname
59
60
60
from ucsschool.lib.schoolldap import LDAP_Connection, SchoolBaseModule, SchoolSearchBase, SchoolSanitizer, Display
61
from ucsschool.lib.schoolldap import LDAP_Connection, SchoolBaseModule, SchoolSearchBase, SchoolSanitizer, Display
61
from ucsschool.lib import internetrules
62
from ucsschool.lib import internetrules
 Lines 177-183   class Instance(SchoolBaseModule): Link Here 
177
		sender_user = User.from_dn(exam.sender.dn, None, ldap_user_read)
178
		sender_user = User.from_dn(exam.sender.dn, None, ldap_user_read)
178
		if user.is_administrator(ldap_user_read) and len(set(sender_user.schools).intersection(user.schools)) != 0:
179
		if user.is_administrator(ldap_user_read) and len(set(sender_user.schools).intersection(user.schools)) != 0:
179
			return True
180
			return True
180
		admin_group_dn = 'cn=Domain Admins,cn=groups,' + ucr['ldap/base']
181
		admin_group_dn = 'cn={},cn=groups,{}'.format(custom_groupname('Domain Admins', ucr), ucr['ldap/base'])
181
		if admin_group_dn in user.get_udm_object(ldap_user_read)['groups']:
182
		if admin_group_dn in user.get_udm_object(ldap_user_read)['groups']:
182
			return True
183
			return True
183
		return False
184
		return False
 Lines 254-267   class Instance(SchoolBaseModule): Link Here 
254
			return False
255
			return False
255
		if exam.isDistributed:
256
		if exam.isDistributed:
256
			return False
257
			return False
257
		if not self._user_can_modify(User.from_dn(ldap_user_read.whoami(), None, ldap_user_read) ,exam):
258
		if not self._user_can_modify(User.from_dn(ldap_user_read.whoami(), None, ldap_user_read), exam):
258
			return False
259
			return False
259
		exam.purge()
260
		exam.purge()
260
		return True
261
		return True
261
262
262
	@sanitize(StringSanitizer(required=True))
263
	@sanitize(StringSanitizer(required=True))
263
	@LDAP_Connection()
264
	def get(self, request):
264
	def get(self, request, ldap_user_read=None):
265
		result = []
265
		result = []
266
		for project in [util.distribution.Project.load(iid) for iid in request.options]:
266
		for project in [util.distribution.Project.load(iid) for iid in request.options]:
267
			if not project:
267
			if not project:
 Lines 295-311   class Instance(SchoolBaseModule): Link Here 
295
		recipients=ListSanitizer(StringSanitizer(minimum=1), required=True),
295
		recipients=ListSanitizer(StringSanitizer(minimum=1), required=True),
296
		files=ListSanitizer(StringSanitizer()),
296
		files=ListSanitizer(StringSanitizer()),
297
	)
297
	)
298
	@require_password
298
	def add(self, request):
299
	@LDAP_Connection()
300
	def add(self, request, ldap_user_read=None):
301
		self._save_exam(request)
299
		self._save_exam(request)
302
		self.finished(request.id, True)
300
		self.finished(request.id, True)
303
301
304
	@sanitize(
302
	@sanitize(
305
		exams=ListSanitizer(StringSanitizer(minimum=1), required=True)
303
		exams=ListSanitizer(StringSanitizer(minimum=1), required=True)
306
	)
304
	)
307
	@LDAP_Connection()
305
	def delete(self, request):
308
	def delete(self, request, ldap_user_read=None):
309
		result = []
306
		result = []
310
		for exam in request.options['exams']:
307
		for exam in request.options['exams']:
311
			result.append(self._delete_exam(exam))
308
			result.append(self._delete_exam(exam))
 Lines 323-331   class Instance(SchoolBaseModule): Link Here 
323
		recipients=ListSanitizer(StringSanitizer(minimum=1), required=True),
320
		recipients=ListSanitizer(StringSanitizer(minimum=1), required=True),
324
		files=ListSanitizer(StringSanitizer()),
321
		files=ListSanitizer(StringSanitizer()),
325
	)
322
	)
326
	@require_password
323
	def put(self, request):
327
	@LDAP_Connection()
328
	def put(self, request, ldap_user_read=None):
329
		self._save_exam(request, update=True)
324
		self._save_exam(request, update=True)
330
		self.finished(request.id, True)
325
		self.finished(request.id, True)
331
326

Return to bug 49859