| rev | line source | 
| bsw/jbe@1309 | 1 if config.disable_delegations then | 
| bsw/jbe@1309 | 2   return | 
| bsw/jbe@1309 | 3 end | 
| bsw/jbe@1309 | 4 | 
| bsw/jbe@0 | 5 local truster_id = app.session.member.id | 
| bsw/jbe@0 | 6 | 
| bsw/jbe@0 | 7 local trustee_id = param.get("trustee_id", atom.integer) | 
| bsw/jbe@0 | 8 | 
| bsw@248 | 9 local unit_id = param.get("unit_id", atom.integer) | 
| bsw@248 | 10 | 
| bsw/jbe@0 | 11 local area_id = param.get("area_id", atom.integer) | 
| bsw/jbe@0 | 12 | 
| bsw/jbe@0 | 13 local issue_id = param.get("issue_id", atom.integer) | 
| bsw/jbe@0 | 14 | 
| bsw@575 | 15 local initiative_id = param.get("initiative_id", atom.integer) | 
| bsw@575 | 16 | 
| bsw/jbe@0 | 17 if issue_id then | 
| bsw/jbe@0 | 18   area_id = nil | 
| bsw/jbe@0 | 19 end | 
| bsw/jbe@0 | 20 | 
| bsw@529 | 21 local preview = param.get("preview") | 
| bsw@529 | 22 | 
| bsw@529 | 23 if preview == "1" then | 
| bsw@529 | 24   request.redirect{ module = "delegation", view = "show", params = { | 
| bsw@575 | 25     unit_id = unit_id, area_id = area_id, issue_id = issue_id, initiative_id = initiative_id, preview_trustee_id = trustee_id | 
| bsw@529 | 26   } } | 
| bsw@529 | 27   return | 
| bsw@529 | 28 end | 
| bsw@529 | 29 | 
| bsw@293 | 30 local delegation = Delegation:by_pk(truster_id, unit_id, area_id, issue_id) | 
| bsw@293 | 31 | 
| bsw@293 | 32 | 
| bsw/jbe@4 | 33 if param.get("delete") or trustee_id == -1 then | 
| bsw/jbe@0 | 34 | 
| bsw/jbe@0 | 35   if delegation then | 
| bsw/jbe@0 | 36     delegation:destroy() | 
| bsw/jbe@0 | 37   end | 
| bsw/jbe@5 | 38 | 
| bsw/jbe@0 | 39 else | 
| bsw@296 | 40 | 
| bsw@300 | 41   local trustee | 
| bsw@300 | 42 | 
| bsw@300 | 43   if trustee_id then | 
| bsw@300 | 44     trustee = Member:by_id(trustee_id) | 
| bsw@300 | 45   end | 
| bsw/jbe@0 | 46 | 
| bsw@281 | 47   local check_unit_id | 
| bsw@281 | 48   if unit_id then | 
| bsw@281 | 49     check_unit_id = unit_id | 
| bsw@281 | 50   elseif area_id then | 
| bsw@281 | 51     local area = Area:by_id(area_id) | 
| bsw@281 | 52     check_unit_id = area.unit_id | 
| bsw@281 | 53   else | 
| bsw@281 | 54     local issue = Issue:by_id(issue_id) | 
| bsw@281 | 55     local area = Area:by_id(issue.area_id) | 
| bsw@281 | 56     check_unit_id = area.unit_id | 
| bsw@281 | 57   end | 
| bsw@296 | 58 | 
| bsw@300 | 59   if trustee and not trustee:has_voting_right_for_unit_id(check_unit_id) then | 
| bsw@296 | 60     slot.put_into("error", _"Trustee has no voting right in this unit") | 
| bsw@296 | 61     return false | 
| bsw@296 | 62   end | 
| bsw@281 | 63 | 
| bsw@281 | 64   if not app.session.member:has_voting_right_for_unit_id(check_unit_id) then | 
| bsw/jbe@1309 | 65     return execute.view { module = "index", view = "403" } | 
| bsw@281 | 66   end | 
| bsw@281 | 67 | 
| bsw/jbe@0 | 68   if not delegation then | 
| bsw/jbe@0 | 69     delegation = Delegation:new() | 
| bsw/jbe@0 | 70     delegation.truster_id = truster_id | 
| bsw@248 | 71     delegation.unit_id    = unit_id | 
| bsw/jbe@0 | 72     delegation.area_id    = area_id | 
| bsw/jbe@0 | 73     delegation.issue_id   = issue_id | 
| bsw/jbe@5 | 74     if issue_id then | 
| bsw/jbe@5 | 75       delegation.scope = "issue" | 
| bsw/jbe@5 | 76     elseif area_id then | 
| bsw/jbe@5 | 77       delegation.scope = "area" | 
| bsw@248 | 78     elseif unit_id then | 
| bsw@248 | 79       delegation.scope = "unit" | 
| bsw/jbe@5 | 80     end | 
| bsw/jbe@0 | 81   end | 
| bsw@180 | 82   if trustee_id == 0 then | 
| bsw@180 | 83     delegation.trustee_id = nil | 
| bsw@180 | 84   else | 
| bsw@180 | 85     delegation.trustee_id = trustee_id | 
| bsw@180 | 86   end | 
| bsw/jbe@0 | 87 | 
| bsw/jbe@0 | 88   delegation:save() | 
| bsw@529 | 89 | 
| bsw/jbe@0 | 90 end | 
| bsw/jbe@0 | 91 |