annotate app/main/admin/_action/area_update.lua @ 178:bf799314a20f
Highlight the current member itself too
 | author | 
 bsw | 
 | date | 
 Sun Oct 31 20:12:20 2010 +0100 (2010-10-31) | 
 | parents | 
 36aedac3e4bf  | 
 | children | 
 46351752814f  | 
 
 | rev | 
   line source | 
| 
bsw/jbe@5
 | 
     1 if not app.session.member.admin then
 | 
| 
bsw/jbe@5
 | 
     2   error()
 | 
| 
bsw/jbe@5
 | 
     3 end
 | 
| 
bsw/jbe@5
 | 
     4 
 | 
| 
bsw/jbe@5
 | 
     5 local id = param.get_id()
 | 
| 
bsw/jbe@5
 | 
     6 
 | 
| 
bsw/jbe@5
 | 
     7 local area
 | 
| 
bsw/jbe@5
 | 
     8 if id then
 | 
| 
bsw/jbe@5
 | 
     9   area = Area:new_selector():add_where{ "id = ?", id }:single_object_mode():exec()
 | 
| 
bsw/jbe@5
 | 
    10 else
 | 
| 
bsw/jbe@5
 | 
    11   area = Area:new()
 | 
| 
bsw/jbe@5
 | 
    12 end
 | 
| 
bsw/jbe@5
 | 
    13 
 | 
| 
bsw/jbe@5
 | 
    14 
 | 
| 
bsw/jbe@5
 | 
    15 param.update(area, "name", "description", "active")
 | 
| 
bsw/jbe@5
 | 
    16 
 | 
| 
bsw/jbe@5
 | 
    17 area:save()
 | 
| 
bsw/jbe@5
 | 
    18 
 | 
| 
poelzi@119
 | 
    19 param.update_relationship{
 | 
| 
poelzi@119
 | 
    20   param_name        = "allowed_policies",
 | 
| 
poelzi@119
 | 
    21   id                = area.id,
 | 
| 
poelzi@119
 | 
    22   connecting_model  = AllowedPolicy,
 | 
| 
poelzi@119
 | 
    23   own_reference     = "area_id",
 | 
| 
poelzi@119
 | 
    24   foreign_reference = "policy_id"
 | 
| 
poelzi@119
 | 
    25 }
 | 
| 
poelzi@119
 | 
    26 
 | 
| 
poelzi@126
 | 
    27 -- we have to update the default flag because update_relationship can't handle it
 | 
| 
poelzi@126
 | 
    28 old_default = AllowedPolicy:new_selector()
 | 
| 
poelzi@126
 | 
    29 :add_where{ "allowed_policy.area_id = ? AND allowed_policy.default_policy = 't'", area.id }
 | 
| 
poelzi@126
 | 
    30 :optional_object_mode()
 | 
| 
poelzi@126
 | 
    31 :exec()
 | 
| 
poelzi@126
 | 
    32 
 | 
| 
poelzi@126
 | 
    33 if old_default then
 | 
| 
poelzi@126
 | 
    34   old_default.default_policy = false;
 | 
| 
poelzi@126
 | 
    35   old_default:save()
 | 
| 
poelzi@126
 | 
    36 end
 | 
| 
poelzi@126
 | 
    37 
 | 
| 
poelzi@126
 | 
    38 default_policy_id = param.get("default_policy", atom.integer)
 | 
| 
poelzi@126
 | 
    39 
 | 
| 
poelzi@126
 | 
    40 if default_policy_id and default_policy_id ~= -1 then
 | 
| 
poelzi@126
 | 
    41   pol = AllowedPolicy:new_selector()
 | 
| 
poelzi@126
 | 
    42   :add_where{ "allowed_policy.area_id = ? AND allowed_policy.policy_id = ?", area.id, default_policy_id }
 | 
| 
poelzi@126
 | 
    43   :optional_object_mode()
 | 
| 
poelzi@126
 | 
    44   :exec()
 | 
| 
poelzi@126
 | 
    45   if pol then
 | 
| 
poelzi@126
 | 
    46     pol.default_policy = true;
 | 
| 
poelzi@126
 | 
    47     pol:save()
 | 
| 
poelzi@126
 | 
    48   end
 | 
| 
poelzi@126
 | 
    49 end
 | 
| 
poelzi@126
 | 
    50 
 | 
| 
bsw/jbe@5
 | 
    51 slot.put_into("notice", _"Area successfully updated")
 |