rev |
line source |
bsw@10
|
1 local initiative = Initiative:by_id(param.get_id())
|
bsw@10
|
2
|
bsw@10
|
3 local initiator = Initiator:by_pk(initiative.id, app.session.member.id)
|
bsw@10
|
4 if not initiator or initiator.accepted ~= true then
|
bsw@10
|
5 error("access denied")
|
bsw@10
|
6 end
|
bsw@10
|
7
|
bsw@10
|
8 -- TODO important m1 selectors returning result _SET_!
|
bsw@10
|
9 local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec()
|
bsw@10
|
10
|
bsw@10
|
11 if issue.closed then
|
bsw@10
|
12 slot.put_into("error", _"This issue is already closed.")
|
bsw@10
|
13 return false
|
bsw@10
|
14 elseif issue.half_frozen then
|
bsw@10
|
15 slot.put_into("error", _"This issue is already frozen.")
|
bsw@10
|
16 return false
|
bsw@964
|
17 elseif not issue.accepted and issue.phase_finished then
|
bsw@964
|
18 slot.put_into("error", _"Current phase is already closed.")
|
bsw@964
|
19 return false
|
bsw@10
|
20 end
|
bsw@10
|
21
|
bsw@10
|
22 if initiative.revoked then
|
bsw@10
|
23 slot.put_into("error", _"This initiative is already revoked")
|
bsw@10
|
24 return false
|
bsw@10
|
25 end
|
bsw@10
|
26
|
bsw@10
|
27 local suggested_initiative_id = param.get("suggested_initiative_id", atom.integer)
|
bsw@10
|
28
|
bsw@10
|
29 if suggested_initiative_id ~= -1 then
|
bsw@10
|
30 local suggested_initiative = Initiative:by_id(suggested_initiative_id)
|
bsw@10
|
31 if not suggested_initiative then
|
bsw@10
|
32 error("object not found")
|
bsw@10
|
33 end
|
bsw@10
|
34 if initiative.id == suggested_initiative.id then
|
bsw@10
|
35 slot.put_into("error", _"You can't suggest the initiative you are revoking")
|
bsw@10
|
36 return false
|
bsw@10
|
37 end
|
bsw@10
|
38 initiative.suggested_initiative_id = suggested_initiative.id
|
bsw@10
|
39 end
|
bsw@10
|
40
|
bsw@10
|
41 if not param.get("are_you_sure", atom.boolean) then
|
bsw@10
|
42 slot.put_into("error", _"You have to mark 'Are you sure' to revoke!")
|
bsw@10
|
43 return false
|
bsw@10
|
44 end
|
bsw@10
|
45
|
bsw@377
|
46 initiative.revoked_by_member_id = app.session.member_id
|
bsw@10
|
47 initiative.revoked = "now"
|
bsw@10
|
48 initiative:save()
|
bsw@10
|
49
|
bsw@10
|
50 slot.put_into("notice", _"Initiative is revoked now")
|
bsw@10
|
51
|