liquid_feedback_frontend
annotate app/main/initiative/_action/remove_initiator.lua @ 145:90520c9fca44
implement area filter in timeline
allows the user to ignore any area in the timeline filter.
better display in javascript off
allows the user to ignore any area in the timeline filter.
better display in javascript off
| author | Daniel Poelzleithner <poelzi@poelzi.org> |
|---|---|
| date | Thu Oct 07 00:35:48 2010 +0200 (2010-10-07) |
| 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 |