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

Collapse All | Expand All

(-)a/ucs-school-lib/python/models/computer.py (-7 / +5 lines)
Lines 160-171 class SchoolDCSlave(RoleSupportMixin, SchoolDC): Link Here
160
		allow_school_change = True
160
		allow_school_change = True
161
161
162
162
163
class SchoolComputer(UCSSchoolHelperAbstractClass):
163
class SchoolComputer(UCSSchoolHelperAbstractClass, RoleSupportMixin):
164
	ip_address = IPAddress(_('IP address'), required=True)
164
	ip_address = IPAddress(_('IP address'), required=True)
165
	subnet_mask = SubnetMask(_('Subnet mask'))
165
	subnet_mask = SubnetMask(_('Subnet mask'))
166
	mac_address = MACAddress(_('MAC address'), required=True)
166
	mac_address = MACAddress(_('MAC address'), required=True)
167
	inventory_number = InventoryNumber(_('Inventory number'))
167
	inventory_number = InventoryNumber(_('Inventory number'))
168
	zone = Attribute(_('Zone'))
168
	zone = Attribute(_('Zone'))
169
	ucsschool_roles = Roles(_('Roles'), aka=['Roles'])
169
170
170
	type_name = _('Computer')
171
	type_name = _('Computer')
171
172
Lines 329-337 class SchoolComputer(UCSSchoolHelperAbstractClass): Link Here
329
		name_is_unique = True
330
		name_is_unique = True
330
331
331
332
332
class WindowsComputer(RoleSupportMixin, SchoolComputer):
333
class WindowsComputer(SchoolComputer):
333
	type_name = _('Windows system')
334
	type_name = _('Windows system')
334
	ucsschool_roles = Roles(_('Roles'), aka=['Roles'])
335
	default_roles = [role_win_computer]
335
	default_roles = [role_win_computer]
336
336
337
	class Meta(SchoolComputer.Meta):
337
	class Meta(SchoolComputer.Meta):
Lines 339-347 class WindowsComputer(RoleSupportMixin, SchoolComputer): Link Here
339
		hook_path = 'computer'
339
		hook_path = 'computer'
340
340
341
341
342
class MacComputer(RoleSupportMixin, SchoolComputer):
342
class MacComputer(SchoolComputer):
343
	type_name = _('Mac OS X')
343
	type_name = _('Mac OS X')
344
	ucsschool_roles = Roles(_('Roles'), aka=['Roles'])
345
	default_roles = [role_mac_computer]
344
	default_roles = [role_mac_computer]
346
345
347
	class Meta(SchoolComputer.Meta):
346
	class Meta(SchoolComputer.Meta):
Lines 349-357 class MacComputer(RoleSupportMixin, SchoolComputer): Link Here
349
		hook_path = 'computer'
348
		hook_path = 'computer'
350
349
351
350
352
class IPComputer(RoleSupportMixin, SchoolComputer):
351
class IPComputer(SchoolComputer):
353
	type_name = _('Device with IP address')
352
	type_name = _('Device with IP address')
354
	ucsschool_roles = Roles(_('Roles'), aka=['Roles'])
355
	default_roles = [role_ip_computer]
353
	default_roles = [role_ip_computer]
356
354
357
	class Meta(SchoolComputer.Meta):
355
	class Meta(SchoolComputer.Meta):
(-)a/ucs-school-lib/python/roles.py (-1 / +2 lines)
Lines 53-58 role_mac_computer = 'mac_computer' Link Here
53
role_ip_computer = 'ip_computer'
53
role_ip_computer = 'ip_computer'
54
role_linux_computer = 'linux_computer'
54
role_linux_computer = 'linux_computer'
55
role_ubuntu_computer = 'ubuntu_computer'
55
role_ubuntu_computer = 'ubuntu_computer'
56
role_teacher_computer = 'teacher_computer'
56
role_exam_user = 'exam_user'
57
role_exam_user = 'exam_user'
57
role_memberserver = 'memberserver'
58
role_memberserver = 'memberserver'
58
role_memberserver_admin = 'memberserver_admin'
59
role_memberserver_admin = 'memberserver_admin'
Lines 77-83 all_roles = ( Link Here
77
	role_memberserver_admin, role_memberserver_edu, role_school, role_school_admin, role_school_admin_group,
78
	role_memberserver_admin, role_memberserver_edu, role_school, role_school_admin, role_school_admin_group,
78
	role_school_class, role_school_class_share, role_single_master, role_student, role_workgroup, role_workgroup_share,
79
	role_school_class, role_school_class_share, role_single_master, role_student, role_workgroup, role_workgroup_share,
79
	role_school_domain_group, role_school_teacher_group, role_school_staff_group, role_school_student_group,
80
	role_school_domain_group, role_school_teacher_group, role_school_staff_group, role_school_student_group,
80
	role_ip_computer, role_linux_computer, role_mac_computer, role_ubuntu_computer, role_win_computer,
81
	role_ip_computer, role_linux_computer, role_mac_computer, role_ubuntu_computer, role_win_computer, role_teacher_computer
81
)
82
)
82
83
83
84
(-)a/ucs-school-umc-exam/umc/python/schoolexam-master/__init__.py (-2 / +9 lines)
Lines 48-54 from univention.management.console.modules import UMC_Error Link Here
48
from univention.management.console.modules.decorators import sanitize
48
from univention.management.console.modules.decorators import sanitize
49
from univention.management.console.modules.sanitizers import StringSanitizer, DNSanitizer, ListSanitizer
49
from univention.management.console.modules.sanitizers import StringSanitizer, DNSanitizer, ListSanitizer
50
from ucsschool.lib.schoolldap import LDAP_Connection, SchoolBaseModule, ADMIN_WRITE, USER_READ
50
from ucsschool.lib.schoolldap import LDAP_Connection, SchoolBaseModule, ADMIN_WRITE, USER_READ
51
from ucsschool.lib.models import School, ComputerRoom, Student, ExamStudent, MultipleObjectsError
51
from ucsschool.lib.roles import role_teacher_computer, create_ucsschool_role_string
52
from ucsschool.lib.models import School, ComputerRoom, Student, ExamStudent, MultipleObjectsError, SchoolComputer
52
from ucsschool.lib.models.utils import add_module_logger_to_schoollib
53
from ucsschool.lib.models.utils import add_module_logger_to_schoollib
53
from ucsschool.importer.utils.import_pyhook import ImportPyHookLoader
54
from ucsschool.importer.utils.import_pyhook import ImportPyHookLoader
54
from ucsschool.exam.exam_user_pyhook import ExamUserPyHook
55
from ucsschool.exam.exam_user_pyhook import ExamUserPyHook
Lines 425-432 class Instance(SchoolBaseModule): Link Here
425
		except univention.admin.uexceptions.ldapError:
426
		except univention.admin.uexceptions.ldapError:
426
			raise
427
			raise
427
428
429
		teacher_pc_role = create_ucsschool_role_string(role_teacher_computer, room.school)
430
		exam_hosts = list()
431
		for host in room.hosts:
432
			host_obj = SchoolComputer.from_dn(host, None, ldap_user_read)
433
			if teacher_pc_role not in host_obj.ucsschool_roles:
434
				exam_hosts.append(host)
428
		# Add all host members of room to examGroup
435
		# Add all host members of room to examGroup
429
		host_uid_list = [univention.admin.uldap.explodeDn(uniqueMember, 1)[0] + '$' for uniqueMember in room.hosts]
436
		host_uid_list = [univention.admin.uldap.explodeDn(uniqueMember, 1)[0] + '$' for uniqueMember in exam_hosts]
430
		examGroup = self.examGroup(ldap_admin_write, ldap_position, room.school)
437
		examGroup = self.examGroup(ldap_admin_write, ldap_position, room.school)
431
		examGroup.fast_member_add(room.hosts, host_uid_list)  # adds any uniqueMember and member listed if not already present
438
		examGroup.fast_member_add(room.hosts, host_uid_list)  # adds any uniqueMember and member listed if not already present
432
439

Return to bug 48080