sobjects/ldapparser.py
changeset 8434 39c5bb4dcc59
parent 8432 96b4f7a35e6c
child 8478 e099ebc65e61
child 8483 4ba11607d84a
--- a/sobjects/ldapparser.py	Wed Jun 06 10:26:34 2012 +0200
+++ b/sobjects/ldapparser.py	Wed Jun 06 10:30:54 2012 +0200
@@ -67,9 +67,23 @@
                 self.warning('deactivate %s %s entities', len(eids), etype)
                 for eid in eids:
                     wf = session.entity_from_eid(eid).cw_adapt_to('IWorkflowable')
-                    wf.fire_transition('deactivate')
+                    wf.fire_transition_if_possible('deactivate')
         session.commit(free_cnxset=False)
 
+    def update_if_necessary(self, entity, attrs):
+        entity.complete(tuple(attrs))
+        if entity.__regid__ == 'CWUser':
+            wf = entity.cw_adapt_to('IWorkflowable')
+            if wf.state == 'deactivated':
+                self.warning('update on deactivated user %s', entity.login)
+        mdate = attrs.get('modification_date')
+        if not mdate or mdate > entity.modification_date:
+            attrs = dict( (k, v) for k, v in attrs.iteritems()
+                          if v != getattr(entity, k))
+            if attrs:
+                entity.set_attributes(**attrs)
+                self.notify_updated(entity)
+
     def ldap2cwattrs(self, sdict, tdict=None):
         if tdict is None:
             tdict = {}