liquid_feedback_frontend

diff model/issue.lua @ 0:3bfb2fcf7ab9

Version alpha1
author bsw/jbe
date Wed Nov 18 12:00:00 2009 +0100 (2009-11-18)
parents
children 5c601807d397
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/model/issue.lua	Wed Nov 18 12:00:00 2009 +0100
     1.3 @@ -0,0 +1,109 @@
     1.4 +Issue = mondelefant.new_class()
     1.5 +Issue.table = 'issue'
     1.6 +
     1.7 +Issue:add_reference{
     1.8 +  mode          = 'm1',
     1.9 +  to            = "Area",
    1.10 +  this_key      = 'area_id',
    1.11 +  that_key      = 'id',
    1.12 +  ref           = 'area',
    1.13 +}
    1.14 +
    1.15 +Issue:add_reference{
    1.16 +  mode          = 'm1',
    1.17 +  to            = "Policy",
    1.18 +  this_key      = 'policy_id',
    1.19 +  that_key      = 'id',
    1.20 +  ref           = 'policy',
    1.21 +}
    1.22 +
    1.23 +Issue:add_reference{
    1.24 +  mode          = '1m',
    1.25 +  to            = "Initiative",
    1.26 +  this_key      = 'id',
    1.27 +  that_key      = 'issue_id',
    1.28 +  ref           = 'initiatives',
    1.29 +  back_ref      = 'issue'
    1.30 +}
    1.31 +
    1.32 +Issue:add_reference{
    1.33 +  mode          = '1m',
    1.34 +  to            = "Interest",
    1.35 +  this_key      = 'id',
    1.36 +  that_key      = 'issue_id',
    1.37 +  ref           = 'interests',
    1.38 +  back_ref      = 'issue',
    1.39 +  default_order = '"id"'
    1.40 +}
    1.41 +
    1.42 +Issue:add_reference{
    1.43 +  mode          = '1m',
    1.44 +  to            = "Supporter",
    1.45 +  this_key      = 'id',
    1.46 +  that_key      = 'issue_id',
    1.47 +  ref           = 'supporters',
    1.48 +  back_ref      = 'issue',
    1.49 +  default_order = '"id"'
    1.50 +}
    1.51 +
    1.52 +Issue:add_reference{
    1.53 +  mode          = '1m',
    1.54 +  to            = "DirectVoter",
    1.55 +  this_key      = 'id',
    1.56 +  that_key      = 'issue_id',
    1.57 +  ref           = 'direct_voters',
    1.58 +  back_ref      = 'issue',
    1.59 +  default_order = '"member_id"'
    1.60 +}
    1.61 +
    1.62 +Issue:add_reference{
    1.63 +  mode          = '1m',
    1.64 +  to            = "Vote",
    1.65 +  this_key      = 'id',
    1.66 +  that_key      = 'issue_id',
    1.67 +  ref           = 'votes',
    1.68 +  back_ref      = 'issue',
    1.69 +  default_order = '"member_id", "initiative_id"'
    1.70 +}
    1.71 +
    1.72 +Issue:add_reference{
    1.73 +  mode                  = 'mm',
    1.74 +  to                    = "Member",
    1.75 +  this_key              = 'id',
    1.76 +  that_key              = 'id',
    1.77 +  connected_by_table    = 'interest',
    1.78 +  connected_by_this_key = 'issue_id',
    1.79 +  connected_by_that_key = 'member_id',
    1.80 +  ref                   = 'members'
    1.81 +}
    1.82 +
    1.83 +function Issue:get_state_name_for_state(value)
    1.84 +  local state_name_table = {}
    1.85 +  return state_name_table[value] or value
    1.86 +end
    1.87 +
    1.88 +function Issue:search(search_string)
    1.89 +  return self:new_selector()
    1.90 +    :join('"initiative"', nil, '"initiative"."issue_id" = "issue"."id"')
    1.91 +    :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" }
    1.92 +    :set_distinct()
    1.93 +    :exec()
    1.94 +end
    1.95 +
    1.96 +function Issue.object_get:state()
    1.97 +  if self.accepted then
    1.98 +    if self.frozen then
    1.99 +      return "frozen"
   1.100 +    elseif self.closed then
   1.101 +      return "closed"
   1.102 +    else
   1.103 +      return "accepted"
   1.104 +    end
   1.105 +  else
   1.106 +    if self.closed then
   1.107 +      return "closed"
   1.108 +    else
   1.109 +      return "new"
   1.110 +    end
   1.111 +  end
   1.112 +end
   1.113 \ No newline at end of file

Impressum / About Us