liquid_feedback_frontend

annotate model/area.lua @ 952:ba824959fc1f

Fixed handling of notify_email while registering
author bsw
date Mon Dec 10 19:59:07 2012 +0100 (2012-12-10)
parents 5ca9de94cb13
children
rev   line source
bsw/jbe@0 1 Area = mondelefant.new_class()
bsw/jbe@0 2 Area.table = 'area'
bsw/jbe@0 3
bsw/jbe@0 4 Area:add_reference{
bsw@262 5 mode = 'm1',
bsw@262 6 to = "Unit",
bsw@262 7 this_key = 'unit_id',
bsw@262 8 that_key = 'id',
bsw@262 9 ref = 'unit',
bsw@262 10 }
bsw@262 11
bsw@262 12 Area:add_reference{
bsw/jbe@0 13 mode = '1m',
bsw/jbe@0 14 to = "Issue",
bsw/jbe@0 15 this_key = 'id',
bsw/jbe@0 16 that_key = 'area_id',
bsw/jbe@0 17 ref = 'issues',
bsw/jbe@0 18 back_ref = 'area'
bsw/jbe@0 19 }
bsw/jbe@0 20
bsw/jbe@0 21 Area:add_reference{
bsw/jbe@0 22 mode = '1m',
bsw/jbe@0 23 to = "Membership",
bsw/jbe@0 24 this_key = 'id',
bsw/jbe@0 25 that_key = 'area_id',
bsw/jbe@0 26 ref = 'memberships',
bsw/jbe@0 27 back_ref = 'area'
bsw/jbe@0 28 }
bsw/jbe@0 29
bsw/jbe@0 30 Area:add_reference{
bsw@2 31 mode = '1m',
bsw@2 32 to = "Delegation",
bsw@2 33 this_key = 'id',
bsw@2 34 that_key = 'area_id',
bsw@2 35 ref = 'delegations',
bsw@2 36 back_ref = 'area'
bsw@2 37 }
bsw@2 38
bsw@2 39 Area:add_reference{
bsw/jbe@0 40 mode = 'mm',
bsw/jbe@0 41 to = "Member",
bsw/jbe@0 42 this_key = 'id',
bsw/jbe@0 43 that_key = 'id',
bsw/jbe@0 44 connected_by_table = 'membership',
bsw/jbe@0 45 connected_by_this_key = 'area_id',
bsw/jbe@0 46 connected_by_that_key = 'member_id',
bsw/jbe@0 47 ref = 'members'
bsw/jbe@0 48 }
bsw@7 49
bsw@7 50 Area:add_reference{
bsw@7 51 mode = 'mm',
bsw@7 52 to = "Policy",
bsw@7 53 this_key = 'id',
bsw@7 54 that_key = 'id',
bsw@7 55 connected_by_table = 'allowed_policy',
bsw@7 56 connected_by_this_key = 'area_id',
bsw@7 57 connected_by_that_key = 'policy_id',
bsw@7 58 ref = 'allowed_policies'
bsw@7 59 }
bsw@7 60
bsw@525 61 Area:add_reference{
bsw@525 62 mode = "11",
bsw@525 63 to = mondelefant.class_prototype,
bsw@525 64 this_key = "id",
bsw@525 65 that_key = "area_id",
bsw@525 66 ref = "delegation_info",
bsw@525 67 back_ref = "area",
bsw@525 68 selector_generator = function(list, options)
bsw@525 69 assert(options.member_id, "member_id mandatory for delegation_info")
bsw@525 70 local ids = { sep = ", " }
bsw@525 71 for i, object in ipairs(list) do
bsw@525 72 local id = object.id
bsw@525 73 if id ~= nil then
bsw@525 74 ids[#ids+1] = {"?", id}
bsw@525 75 end
bsw@525 76 end
bsw@525 77 local sub_selector = Area:get_db_conn():new_selector()
bsw@525 78 if #ids == 0 then
bsw@525 79 return sub_selector:empty_list_mode()
bsw@525 80 end
bsw@525 81 sub_selector:from("area")
bsw@525 82 sub_selector:add_field("area.id", "area_id")
bsw@529 83 sub_selector:add_field{ '(delegation_info(?, null, area.id, null, ?)).*', options.member_id, options.trustee_id }
bsw@525 84 sub_selector:add_where{ 'area.id IN ($)', ids }
bsw@525 85
bsw@525 86 local selector = Area:get_db_conn():new_selector()
bsw@525 87 selector:add_from(sub_selector, "delegation_info")
bsw@525 88 selector:left_join("member", "first_trustee", "first_trustee.id = delegation_info.first_trustee_id")
bsw@525 89 selector:left_join("member", "other_trustee", "other_trustee.id = delegation_info.other_trustee_id")
bsw@525 90 selector:add_field("delegation_info.*")
bsw@525 91 selector:add_field("first_trustee.name", "first_trustee_name")
bsw@525 92 selector:add_field("other_trustee.name", "other_trustee_name")
bsw@525 93 return selector
bsw@525 94 end
bsw@525 95 }
bsw@525 96
bsw@529 97 function Area.list:load_delegation_info_once_for_member_id(member_id, trustee_id)
bsw@525 98 if self._delegation_info_loaded_for_member_id ~= member_id then
bsw@529 99 self:load("delegation_info", { member_id = member_id, trustee_id = trustee_id })
bsw@525 100 for i, area in ipairs(self) do
bsw@525 101 area._delegation_info_loaded_for_member_id = member_id
bsw@525 102 end
bsw@525 103 self._delegation_info_loaded_for_member_id = member_id
bsw@525 104 end
bsw@525 105 end
bsw@525 106
bsw@529 107 function Area.object:load_delegation_info_once_for_member_id(member_id, trustee_id)
bsw@525 108 if self._delegation_info_loaded_for_member_id ~= member_id then
bsw@529 109 self:load("delegation_info", { member_id = member_id, trustee_id = trustee_id })
bsw@525 110 self._delegation_info_loaded_for_member_id = member_id
bsw@525 111 end
bsw@525 112 end
bsw@525 113
bsw@7 114 function Area.object_get:default_policy()
bsw@7 115 return Policy:new_selector()
bsw@7 116 :join("allowed_policy", nil, "allowed_policy.policy_id = policy.id")
bsw@7 117 :add_where{ "allowed_policy.area_id = ? AND allowed_policy.default_policy", self.id }
bsw@10 118 :optional_object_mode()
bsw@7 119 :exec()
bsw@7 120 end
bsw@7 121
bsw@193 122 function Area:build_selector(args)
bsw@193 123 local selector = Area:new_selector()
bsw@193 124 if args.active ~= nil then
bsw@274 125 selector:add_where{ "area.active = ?", args.active }
bsw@193 126 end
bsw@241 127 if args.unit_id ~= nil then
bsw@274 128 selector:add_where{ "area.unit_id = ?", args.unit_id }
bsw@241 129 end
bsw@193 130 return selector
bsw@193 131 end
bsw@262 132
bsw@262 133 function Area.object_get:name_with_unit_name()
bsw@264 134 if not config.single_unit_id then
bsw@280 135 return self.unit.name .. ", " .. self.name
bsw@264 136 else
bsw@264 137 return self.name
bsw@262 138 end
bsw@262 139 end

Impressum / About Us