web/request.py
changeset 4277 35cd057339b2
parent 4252 6c4f109c2b03
child 4366 d51f28ba9399
equal deleted inserted replaced
4276:e2ed81c20e74 4277:35cd057339b2
   384         params['eid'] = eid
   384         params['eid'] = eid
   385         if len(params) < minparams:
   385         if len(params) < minparams:
   386             raise RequestError(self._('missing parameters for entity %s') % eid)
   386             raise RequestError(self._('missing parameters for entity %s') % eid)
   387         return params
   387         return params
   388 
   388 
   389     def get_pending_operations(self, entity, relname, role):
   389     # XXX this should go to the GenericRelationsField. missing edition cancel protocol.
   390         operations = {'insert' : [], 'delete' : []}
       
   391         for optype in ('insert', 'delete'):
       
   392             data = self.get_session_data('pending_%s' % optype) or ()
       
   393             for eidfrom, rel, eidto in data:
       
   394                 if relname == rel:
       
   395                     if role == 'subject' and entity.eid == eidfrom:
       
   396                         operations[optype].append(eidto)
       
   397                     if role == 'object' and entity.eid == eidto:
       
   398                         operations[optype].append(eidfrom)
       
   399         return operations
       
   400 
       
   401     def get_pending_inserts(self, eid=None):
       
   402         """shortcut to access req's pending_insert entry
       
   403 
       
   404         This is where are stored relations being added while editing
       
   405         an entity. This used to be stored in a temporary cookie.
       
   406         """
       
   407         pending = self.get_session_data('pending_insert') or ()
       
   408         return ['%s:%s:%s' % (subj, rel, obj) for subj, rel, obj in pending
       
   409                 if eid is None or eid in (subj, obj)]
       
   410 
       
   411     def get_pending_deletes(self, eid=None):
       
   412         """shortcut to access req's pending_delete entry
       
   413 
       
   414         This is where are stored relations being removed while editing
       
   415         an entity. This used to be stored in a temporary cookie.
       
   416         """
       
   417         pending = self.get_session_data('pending_delete') or ()
       
   418         return ['%s:%s:%s' % (subj, rel, obj) for subj, rel, obj in pending
       
   419                 if eid is None or eid in (subj, obj)]
       
   420 
   390 
   421     def remove_pending_operations(self):
   391     def remove_pending_operations(self):
   422         """shortcut to clear req's pending_{delete,insert} entries
   392         """shortcut to clear req's pending_{delete,insert} entries
   423 
   393 
   424         This is needed when the edition is completed (whether it's validated
   394         This is needed when the edition is completed (whether it's validated