liquid_feedback_frontend
view model/initiative.lua @ 0:3bfb2fcf7ab9
Version alpha1
| author | bsw/jbe | 
|---|---|
| date | Wed Nov 18 12:00:00 2009 +0100 (2009-11-18) | 
| parents | |
| children | 5c601807d397 | 
 line source
     1 Initiative = mondelefant.new_class()
     2 Initiative.table = 'initiative'
     4 Initiative:add_reference{
     5   mode          = 'm1',
     6   to            = "Issue",
     7   this_key      = 'issue_id',
     8   that_key      = 'id',
     9   ref           = 'issue',
    10 }
    12 Initiative:add_reference{
    13   mode          = '1m',
    14   to            = "Draft",
    15   this_key      = 'id',
    16   that_key      = 'initiative_id',
    17   ref           = 'drafts',
    18   back_ref      = 'initiative',
    19   default_order = '"id"'
    20 }
    22 Initiative:add_reference{
    23   mode          = '1m',
    24   to            = "Suggestion",
    25   this_key      = 'id',
    26   that_key      = 'initiative_id',
    27   ref           = 'suggestions',
    28   back_ref      = 'initiative',
    29   default_order = '"id"'
    30 }
    32 Initiative:add_reference{
    33   mode          = '1m',
    34   to            = "Initiator",
    35   this_key      = 'id',
    36   that_key      = 'initiative_id',
    37   ref           = 'initiators',
    38   back_ref      = 'initiative',
    39   default_order = '"id"'
    40 }
    42 Initiative:add_reference{
    43   mode          = '1m',
    44   to            = "Supporter",
    45   this_key      = 'id',
    46   that_key      = 'initiative_id',
    47   ref           = 'supporters',
    48   back_ref      = 'initiative',
    49   default_order = '"id"'
    50 }
    52 Initiative:add_reference{
    53   mode          = '1m',
    54   to            = "Opinion",
    55   this_key      = 'id',
    56   that_key      = 'initiative_id',
    57   ref           = 'opinions',
    58   back_ref      = 'initiative',
    59   default_order = '"id"'
    60 }
    62 Initiative:add_reference{
    63   mode          = '1m',
    64   to            = "Vote",
    65   this_key      = 'id',
    66   that_key      = 'initiative_id',
    67   ref           = 'votes',
    68   back_ref      = 'initiative',
    69   default_order = '"member_id"'
    70 }
    72 Initiative:add_reference{
    73   mode                  = 'mm',
    74   to                    = "Member",
    75   this_key              = 'id',
    76   that_key              = 'id',
    77   connected_by_table    = '"initiator"',
    78   connected_by_this_key = 'initiative_id',
    79   connected_by_that_key = 'member_id',
    80   ref                   = 'initiating_members'
    81 }
    83 Initiative:add_reference{
    84   mode                  = 'mm',
    85   to                    = "Member",
    86   this_key              = 'id',
    87   that_key              = 'id',
    88   connected_by_table    = '"supporter"',
    89   connected_by_this_key = 'initiative_id',
    90   connected_by_that_key = 'member_id',
    91   ref                   = 'supporting_members'
    92 }
    94 function Initiative:search(search_string)
    95   return self:new_selector()
    96     :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" }
    97     :exec()
    98 end
   100 function Initiative.object_get:current_draft()
   101   return Draft:new_selector()
   102     :add_where{ '"initiative_id" = ?', self.id }
   103     :add_order_by('"id" DESC')
   104     :single_object_mode()
   105     :exec()
   106 end
   108 function Initiative.object_get:shortened_name()
   109   local name = self.name
   110   if #name > 100 then
   111     name = name:sub(1,100) .. "..."
   112   end
   113   return name
   114 end
