annotate app/main/initiative/_action/remove_initiator.lua @ 162:3d0b6f87d8e5
Fixed timeline search for queries without options except date(range)
 | author | bsw | 
 | date | Sat Oct 09 17:37:10 2010 +0200 (2010-10-09) | 
 | parents | 72c5e0ee7c98 | 
 | children | 808269b7f41c | 
 
 | rev | line source | 
| bsw@10 | 1 local initiative = Initiative:by_id(param.get("initiative_id")) | 
| bsw@10 | 2 local initiator = Initiator:by_pk(initiative.id, app.session.member.id) | 
| bsw@10 | 3 | 
| bsw@10 | 4 -- TODO important m1 selectors returning result _SET_! | 
| bsw@10 | 5 local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec() | 
| bsw@10 | 6 | 
| bsw@10 | 7 if issue.closed then | 
| bsw@10 | 8   slot.put_into("error", _"This issue is already closed.") | 
| bsw@10 | 9   return false | 
| bsw@10 | 10 elseif issue.half_frozen then | 
| bsw@10 | 11   slot.put_into("error", _"This issue is already frozen.") | 
| bsw@10 | 12   return false | 
| bsw@10 | 13 end | 
| bsw@10 | 14 | 
| bsw@10 | 15 if initiative.revoked then | 
| bsw@10 | 16   slot.put_into("error", _"This initiative is revoked") | 
| bsw@10 | 17   return false | 
| bsw@10 | 18 end | 
| bsw@10 | 19 | 
| bsw@10 | 20 local initiator_todelete = Initiator:by_pk(initiative.id, param.get("member_id", atom.integer)) | 
| bsw@10 | 21 | 
| bsw@10 | 22 if not (initiator and initiator.accepted) and not (initiator.member_id == initiator_todelete.member_id) then | 
| bsw@10 | 23   error("access denied") | 
| bsw@10 | 24 end | 
| bsw@10 | 25 | 
| bsw@10 | 26 if initiator_todelete.accepted == false and initiator.member_id ~= initiator_todelete.member_id then | 
| bsw@10 | 27   error("access denied") | 
| bsw@10 | 28 end | 
| bsw@10 | 29 | 
| bsw@10 | 30 local initiators = initiative | 
| bsw@10 | 31   :get_reference_selector("initiators") | 
| bsw@10 | 32   :add_where("accepted") | 
| bsw@10 | 33   :for_update() | 
| bsw@10 | 34   :exec() | 
| bsw@10 | 35 | 
| bsw@10 | 36 if #initiators > 1 or initiator_todelete.accepted ~= true then | 
| bsw@10 | 37   initiator_todelete:destroy() | 
| bsw@10 | 38   slot.put_into("notice", _"Member has been removed from initiators") | 
| bsw@10 | 39 else | 
| bsw@10 | 40   slot.put_into("error", _"Can't remove last initiator") | 
| bsw@10 | 41   return false | 
| bsw@10 | 42 end | 
| bsw@10 | 43 | 
| bsw@10 | 44 |