bsw@10: local initiative = Initiative:by_id(param.get_id()) bsw@10: bsw@10: local initiator = Initiator:by_pk(initiative.id, app.session.member.id) bsw@10: if not initiator or initiator.accepted ~= true then bsw@10: error("access denied") bsw@10: end bsw@10: bsw@10: -- TODO important m1 selectors returning result _SET_! bsw@10: local issue = initiative:get_reference_selector("issue"):for_share():single_object_mode():exec() bsw@10: bsw@10: if issue.closed then bsw@10: slot.put_into("error", _"This issue is already closed.") bsw@10: return false bsw@10: elseif issue.half_frozen then bsw@10: slot.put_into("error", _"This issue is already frozen.") bsw@10: return false bsw@10: end bsw@10: bsw@10: if initiative.revoked then bsw@10: slot.put_into("error", _"This initiative is already revoked") bsw@10: return false bsw@10: end bsw@10: bsw@10: local suggested_initiative_id = param.get("suggested_initiative_id", atom.integer) bsw@10: bsw@10: if suggested_initiative_id ~= -1 then bsw@10: local suggested_initiative = Initiative:by_id(suggested_initiative_id) bsw@10: if not suggested_initiative then bsw@10: error("object not found") bsw@10: end bsw@10: if initiative.id == suggested_initiative.id then bsw@10: slot.put_into("error", _"You can't suggest the initiative you are revoking") bsw@10: return false bsw@10: end bsw@10: initiative.suggested_initiative_id = suggested_initiative.id bsw@10: end bsw@10: bsw@10: if not param.get("are_you_sure", atom.boolean) then bsw@10: slot.put_into("error", _"You have to mark 'Are you sure' to revoke!") bsw@10: return false bsw@10: end bsw@10: bsw@377: initiative.revoked_by_member_id = app.session.member_id bsw@10: initiative.revoked = "now" bsw@10: initiative:save() bsw@10: bsw@10: slot.put_into("notice", _"Initiative is revoked now") bsw@10: