liquid_feedback_frontend
view model/area.lua @ 211:4993b71b383f
First checkin of lf2 (frontend second generation) prototype
| author | bsw | 
|---|---|
| date | Wed Mar 02 20:06:26 2011 +0100 (2011-03-02) | 
| parents | 46351752814f | 
| children | 3e4ad069847a | 
 line source
     1 Area = mondelefant.new_class()
     2 Area.table = 'area'
     4 Area:add_reference{
     5   mode          = '1m',
     6   to            = "Issue",
     7   this_key      = 'id',
     8   that_key      = 'area_id',
     9   ref           = 'issues',
    10   back_ref      = 'area'
    11 }
    13 Area:add_reference{
    14   mode          = '1m',
    15   to            = "Membership",
    16   this_key      = 'id',
    17   that_key      = 'area_id',
    18   ref           = 'memberships',
    19   back_ref      = 'area'
    20 }
    22 Area:add_reference{
    23   mode          = '1m',
    24   to            = "Delegation",
    25   this_key      = 'id',
    26   that_key      = 'area_id',
    27   ref           = 'delegations',
    28   back_ref      = 'area'
    29 }
    31 Area:add_reference{
    32   mode                  = 'mm',
    33   to                    = "Member",
    34   this_key              = 'id',
    35   that_key              = 'id',
    36   connected_by_table    = 'membership',
    37   connected_by_this_key = 'area_id',
    38   connected_by_that_key = 'member_id',
    39   ref                   = 'members'
    40 }
    42 Area:add_reference{
    43   mode                  = 'mm',
    44   to                    = "Policy",
    45   this_key              = 'id',
    46   that_key              = 'id',
    47   connected_by_table    = 'allowed_policy',
    48   connected_by_this_key = 'area_id',
    49   connected_by_that_key = 'policy_id',
    50   ref                   = 'allowed_policies'
    51 }
    53 function Area.object_get:default_policy()
    54   return Policy:new_selector()
    55     :join("allowed_policy", nil, "allowed_policy.policy_id = policy.id")
    56     :add_where{ "allowed_policy.area_id = ? AND allowed_policy.default_policy", self.id }
    57     :optional_object_mode()
    58     :exec()
    59 end
    61 function Area:build_selector(args)
    62   local selector = Area:new_selector()
    63   if args.active ~= nil then
    64     selector:add_where{ "active = ?", args.active }
    65   end
    66   if args.member_id then
    67     selector:join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", args.member_id })
    68   end
    69   if args.not_member_id then
    70     selector:left_join("membership", nil, { "membership.area_id = area.id AND membership.member_id = ?", args.not_member_id })
    71     selector:add_where{ "membership.member_id ISNULL" }
    72   end
    73   return selector
    74 end
