Univention Bugzilla – Attachment 8200 Details for
Bug 42863
Teachers classes gets removed if teacher is modified via school wizards module
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
42863.patch (text/plain), 3.23 KB, created by
Florian Best
on 2016-11-07 13:25:03 CET
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Florian Best
Created:
2016-11-07 13:25:03 CET
Size:
3.23 KB
patch
obsolete
>diff --git a/ucs-school-umc-wizards/umc/python/schoolwizards/__init__.py b/ucs-school-umc-wizards/umc/python/schoolwizards/__init__.py >index 5753183..2a9ede7 100644 >--- a/ucs-school-umc-wizards/umc/python/schoolwizards/__init__.py >+++ b/ucs-school-umc-wizards/umc/python/schoolwizards/__init__.py >@@ -83,7 +83,7 @@ def get_computer_class(computer_type): > }.get(computer_type, SchoolComputer) > > >-def iter_objects_in_request(request): >+def iter_objects_in_request(request, lo): > klass = { > 'schoolwizards/schools': School, > 'schoolwizards/users': User, >@@ -106,7 +106,13 @@ def iter_objects_in_request(request): > if issubclass(klass, SchoolClass): > # workaround to be able to reuse this function everywhere > obj_props['name'] = '%s-%s' % (obj_props['school'], obj_props['name']) >- obj = klass(**obj_props) >+ if dn: >+ obj = klass.from_dn(dn, obj_props.get('school'), lo) >+ for key, value in obj_props.iteritems(): >+ if key in obj._attributes: >+ setattr(obj, key, value) >+ else: >+ obj = klass(**obj_props) > if dn: > obj.old_dn = dn > yield obj >@@ -169,7 +175,7 @@ def share_servers(self, request, ldap_user_read=None): > @LDAP_Connection() > def _get_obj(self, request, ldap_user_read=None): > ret = [] >- for obj in iter_objects_in_request(request): >+ for obj in iter_objects_in_request(request, ldap_user_read): > MODULE.process('Getting %r' % (obj)) > obj = obj.from_dn(obj.old_dn, obj.school, ldap_user_read) > ret.append(obj.to_dict()) >@@ -179,7 +185,7 @@ def _get_obj(self, request, ldap_user_read=None): > @LDAP_Connection(USER_READ, USER_WRITE) > def _create_obj(self, request, ldap_user_read=None, ldap_user_write=None): > ret = [] >- for obj in iter_objects_in_request(request): >+ for obj in iter_objects_in_request(request, ldap_user_write): > MODULE.process('Creating %r' % (obj,)) > obj.validate(ldap_user_read) > if obj.errors: >@@ -200,7 +206,7 @@ def _create_obj(self, request, ldap_user_read=None, ldap_user_write=None): > @LDAP_Connection(USER_READ, USER_WRITE) > def _modify_obj(self, request, ldap_user_read=None, ldap_user_write=None): > ret = [] >- for obj in iter_objects_in_request(request): >+ for obj in iter_objects_in_request(request, ldap_user_write): > MODULE.process('Modifying %r' % (obj)) > obj.validate(ldap_user_read) > if obj.errors: >@@ -218,7 +224,7 @@ def _modify_obj(self, request, ldap_user_read=None, ldap_user_write=None): > @LDAP_Connection(USER_READ, USER_WRITE) > def _delete_obj(self, request, ldap_user_read=None, ldap_user_write=None): > ret = [] >- for obj in iter_objects_in_request(request): >+ for obj in iter_objects_in_request(request, ldap_user_write): > obj.name = obj.get_name_from_dn(obj.old_dn) > MODULE.process('Deleting %r' % (obj)) > if obj.remove(ldap_user_write): >@@ -252,7 +258,7 @@ def get_users(self, request, ldap_user_read=None): > @LDAP_Connection(USER_READ, USER_WRITE) > def delete_user(self, request, ldap_user_read=None, ldap_user_write=None): > ret = [] >- for i, obj in enumerate(iter_objects_in_request(request)): >+ for i, obj in enumerate(iter_objects_in_request(request, ldap_user_write)): > school = request.options[i]['object']['school'] > obj = obj.from_dn(obj.old_dn, obj.school, ldap_user_write) > success = obj.remove_from_school(school, ldap_user_write)
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 42863
: 8200