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 |