bsw@10: local initiative = Initiative:by_id(param.get("initiative_id")) bsw@10: local member = Member:by_id(param.get("member_id")) bsw@10: bsw@10: if not member then bsw@10: slot.put_into("error", _"Please choose a member") bsw@10: return false bsw@10: end 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 revoked") bsw@10: return false bsw@10: end bsw@10: bsw@10: local initiator = Initiator:by_pk(initiative.id, member.id) bsw@10: if initiator then bsw@10: if initiator.accepted == true then bsw@10: slot.put_into("error", _"This member is already initiator of this initiative") bsw@10: elseif initiator.accepted == false then bsw@10: slot.put_into("error", _"This member has rejected to become initiator of this initiative") bsw@10: elseif initiator.accepted == nil then bsw@10: slot.put_into("error", _"This member is already invited to become initiator of this initiative") bsw@10: end bsw@10: return false bsw@10: end bsw@10: bsw@10: local initiator = Initiator:new() bsw@10: initiator.initiative_id = initiative.id bsw@10: initiator.member_id = member.id bsw@10: initiator.accepted = nil bsw@10: initiator:save() bsw@10: bsw@280: --slot.put_into("notice", _"Member is now invited to be initiator") bsw@10: