bsw@193: local area = Area:by_id(param.get_id()) or Area:new() bsw/jbe@5: bsw/jbe@1309: param.update(area, "unit_id", "name", "description", "external_reference", "quorum_standard", "quorum_issues", "quorum_time", "quorum_exponent", "quorum_factor", "active") bsw/jbe@5: bsw@1045: if #area.name < 1 then bsw@1045: slot.select("error", function() bsw@1045: ui.tag{ content = _"Please choose an area name" } bsw@1045: end) bsw@1045: return false bsw@1045: end bsw@1045: 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 bsw@1182: local 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: bsw@1182: local default_policy_id = param.get("default_policy", atom.integer) poelzi@126: poelzi@126: if default_policy_id and default_policy_id ~= -1 then bsw@1182: local 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