bsw/jbe@5: if not app.session.member.admin then bsw/jbe@5: error() bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: local id = param.get_id() bsw/jbe@5: bsw/jbe@5: local area bsw/jbe@5: if id then bsw/jbe@5: area = Area:new_selector():add_where{ "id = ?", id }:single_object_mode():exec() bsw/jbe@5: else bsw/jbe@5: area = Area:new() bsw/jbe@5: end bsw/jbe@5: bsw/jbe@5: bsw/jbe@5: param.update(area, "name", "description", "active") bsw/jbe@5: bsw/jbe@5: area:save() bsw/jbe@5: poelzi@119: param.update_relationship{ poelzi@119: param_name = "allowed_policies", poelzi@119: id = area.id, poelzi@119: connecting_model = AllowedPolicy, poelzi@119: own_reference = "area_id", poelzi@119: foreign_reference = "policy_id" poelzi@119: } poelzi@119: poelzi@126: -- we have to update the default flag because update_relationship can't handle it poelzi@126: old_default = AllowedPolicy:new_selector() poelzi@126: :add_where{ "allowed_policy.area_id = ? AND allowed_policy.default_policy = 't'", area.id } poelzi@126: :optional_object_mode() poelzi@126: :exec() poelzi@126: poelzi@126: if old_default then poelzi@126: old_default.default_policy = false; poelzi@126: old_default:save() poelzi@126: end poelzi@126: poelzi@126: default_policy_id = param.get("default_policy", atom.integer) poelzi@126: poelzi@126: if default_policy_id and default_policy_id ~= -1 then poelzi@126: pol = AllowedPolicy:new_selector() poelzi@126: :add_where{ "allowed_policy.area_id = ? AND allowed_policy.policy_id = ?", area.id, default_policy_id } poelzi@126: :optional_object_mode() poelzi@126: :exec() poelzi@126: if pol then poelzi@126: pol.default_policy = true; poelzi@126: pol:save() poelzi@126: end poelzi@126: end poelzi@126: bsw/jbe@5: slot.put_into("notice", _"Area successfully updated")