annotate app/main/initiative/_action/remove_initiator.lua @ 1723:0b43b2485930
Added hook for logo only on start page
 | author | 
 bsw | 
 | date | 
 Tue Sep 28 09:16:01 2021 +0200 (2021-09-28) | 
 | parents | 
 32cc544d5a5b  | 
 | children | 
  | 
 
 | 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/jbe@1309
 | 
    23   return execute.view { module = "index", view = "403" }
 | 
| 
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/jbe@1309
 | 
    27   return execute.view { module = "index", view = "403" }
 | 
| 
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@280
 | 
    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 
 |