Univention Bugzilla – Attachment 10043 Details for
Bug 48080
Teacher's computer is locked out of internet access due to exam mode/computer room settings
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Technical changes to filter out defined teacher pc's
48080_backend.patch (text/plain), 4.88 KB, created by
Ole Schwiegert
on 2019-05-23 10:53:46 CEST
(
hide
)
Description:
Technical changes to filter out defined teacher pc's
Filename:
MIME Type:
Creator:
Ole Schwiegert
Created:
2019-05-23 10:53:46 CEST
Size:
4.88 KB
patch
obsolete
>diff --git a/ucs-school-lib/python/models/computer.py b/ucs-school-lib/python/models/computer.py >index 4f6bac70a..5894c5fdc 100644 >--- a/ucs-school-lib/python/models/computer.py >+++ b/ucs-school-lib/python/models/computer.py >@@ -160,12 +160,13 @@ class SchoolDCSlave(RoleSupportMixin, SchoolDC): > allow_school_change = True > > >-class SchoolComputer(UCSSchoolHelperAbstractClass): >+class SchoolComputer(UCSSchoolHelperAbstractClass, RoleSupportMixin): > ip_address = IPAddress(_('IP address'), required=True) > subnet_mask = SubnetMask(_('Subnet mask')) > mac_address = MACAddress(_('MAC address'), required=True) > inventory_number = InventoryNumber(_('Inventory number')) > zone = Attribute(_('Zone')) >+ ucsschool_roles = Roles(_('Roles'), aka=['Roles']) > > type_name = _('Computer') > >@@ -329,9 +330,8 @@ class SchoolComputer(UCSSchoolHelperAbstractClass): > name_is_unique = True > > >-class WindowsComputer(RoleSupportMixin, SchoolComputer): >+class WindowsComputer(SchoolComputer): > type_name = _('Windows system') >- ucsschool_roles = Roles(_('Roles'), aka=['Roles']) > default_roles = [role_win_computer] > > class Meta(SchoolComputer.Meta): >@@ -339,9 +339,8 @@ class WindowsComputer(RoleSupportMixin, SchoolComputer): > hook_path = 'computer' > > >-class MacComputer(RoleSupportMixin, SchoolComputer): >+class MacComputer(SchoolComputer): > type_name = _('Mac OS X') >- ucsschool_roles = Roles(_('Roles'), aka=['Roles']) > default_roles = [role_mac_computer] > > class Meta(SchoolComputer.Meta): >@@ -349,9 +348,8 @@ class MacComputer(RoleSupportMixin, SchoolComputer): > hook_path = 'computer' > > >-class IPComputer(RoleSupportMixin, SchoolComputer): >+class IPComputer(SchoolComputer): > type_name = _('Device with IP address') >- ucsschool_roles = Roles(_('Roles'), aka=['Roles']) > default_roles = [role_ip_computer] > > class Meta(SchoolComputer.Meta): >diff --git a/ucs-school-lib/python/roles.py b/ucs-school-lib/python/roles.py >index e90a1a9d2..80a5c9e9f 100644 >--- a/ucs-school-lib/python/roles.py >+++ b/ucs-school-lib/python/roles.py >@@ -53,6 +53,7 @@ role_mac_computer = 'mac_computer' > role_ip_computer = 'ip_computer' > role_linux_computer = 'linux_computer' > role_ubuntu_computer = 'ubuntu_computer' >+role_teacher_computer = 'teacher_computer' > role_exam_user = 'exam_user' > role_memberserver = 'memberserver' > role_memberserver_admin = 'memberserver_admin' >@@ -77,7 +78,7 @@ all_roles = ( > role_memberserver_admin, role_memberserver_edu, role_school, role_school_admin, role_school_admin_group, > role_school_class, role_school_class_share, role_single_master, role_student, role_workgroup, role_workgroup_share, > role_school_domain_group, role_school_teacher_group, role_school_staff_group, role_school_student_group, >- role_ip_computer, role_linux_computer, role_mac_computer, role_ubuntu_computer, role_win_computer, >+ role_ip_computer, role_linux_computer, role_mac_computer, role_ubuntu_computer, role_win_computer, role_teacher_computer > ) > > >diff --git a/ucs-school-umc-exam/umc/python/schoolexam-master/__init__.py b/ucs-school-umc-exam/umc/python/schoolexam-master/__init__.py >index 463b7031b..ccee47326 100644 >--- a/ucs-school-umc-exam/umc/python/schoolexam-master/__init__.py >+++ b/ucs-school-umc-exam/umc/python/schoolexam-master/__init__.py >@@ -48,7 +48,8 @@ from univention.management.console.modules import UMC_Error > from univention.management.console.modules.decorators import sanitize > from univention.management.console.modules.sanitizers import StringSanitizer, DNSanitizer, ListSanitizer > from ucsschool.lib.schoolldap import LDAP_Connection, SchoolBaseModule, ADMIN_WRITE, USER_READ >-from ucsschool.lib.models import School, ComputerRoom, Student, ExamStudent, MultipleObjectsError >+from ucsschool.lib.roles import role_teacher_computer, create_ucsschool_role_string >+from ucsschool.lib.models import School, ComputerRoom, Student, ExamStudent, MultipleObjectsError, SchoolComputer > from ucsschool.lib.models.utils import add_module_logger_to_schoollib > from ucsschool.importer.utils.import_pyhook import ImportPyHookLoader > from ucsschool.exam.exam_user_pyhook import ExamUserPyHook >@@ -425,8 +426,14 @@ class Instance(SchoolBaseModule): > except univention.admin.uexceptions.ldapError: > raise > >+ teacher_pc_role = create_ucsschool_role_string(role_teacher_computer, room.school) >+ exam_hosts = list() >+ for host in room.hosts: >+ host_obj = SchoolComputer.from_dn(host, None, ldap_user_read) >+ if teacher_pc_role not in host_obj.ucsschool_roles: >+ exam_hosts.append(host) > # Add all host members of room to examGroup >- host_uid_list = [univention.admin.uldap.explodeDn(uniqueMember, 1)[0] + '$' for uniqueMember in room.hosts] >+ host_uid_list = [univention.admin.uldap.explodeDn(uniqueMember, 1)[0] + '$' for uniqueMember in exam_hosts] > examGroup = self.examGroup(ldap_admin_write, ldap_position, room.school) > examGroup.fast_member_add(room.hosts, host_uid_list) # adds any uniqueMember and member listed if not already present >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 48080
: 10043 |
10074