liquid_feedback_frontend

diff model/initiative.lua @ 1045:701a5cf6b067

Imported LiquidFeedback Frontend 3.0 branch
author bsw
date Thu Jul 10 01:19:48 2014 +0200 (2014-07-10)
parents 18e8de7a2b6a
children 97ca043d7c40
line diff
     1.1 --- a/model/initiative.lua	Thu Jul 10 01:02:43 2014 +0200
     1.2 +++ b/model/initiative.lua	Thu Jul 10 01:19:48 2014 +0200
     1.3 @@ -10,6 +10,14 @@
     1.4  }
     1.5  
     1.6  Initiative:add_reference{
     1.7 +  mode          = 'm1',
     1.8 +  to            = "Member",
     1.9 +  this_key      = 'revoked_by_member_id',
    1.10 +  that_key      = 'id',
    1.11 +  ref           = 'revoked_by_member',
    1.12 +}
    1.13 +
    1.14 +Initiative:add_reference{
    1.15    mode          = '1m',
    1.16    to            = "Draft",
    1.17    this_key      = 'id',
    1.18 @@ -26,6 +34,7 @@
    1.19    that_key      = 'initiative_id',
    1.20    ref           = 'suggestions',
    1.21    back_ref      = 'initiative',
    1.22 +  default_order = '"proportional_order" NULLS LAST, id'
    1.23  }
    1.24  
    1.25  Initiative:add_reference{
    1.26 @@ -223,6 +232,61 @@
    1.27      :add_where("initiative.revoked ISNULL")
    1.28  end
    1.29  
    1.30 +function Initiative:getSpecialSelector( args )
    1.31 +  local selector = Initiative:new_selector()
    1.32 +  selector:join( "issue", nil, "issue.id = initiative.issue_id" )
    1.33 +  selector:join( "area", nil, "area.id = issue.area_id" )
    1.34 +  if args.area_id then
    1.35 +    selector:add_where{ "area.id = ?", args.area_id }
    1.36 +  elseif args.unit_id then
    1.37 +    selector:add_where{ "area.unit_id = ?", args.unit_id }
    1.38 +  end
    1.39 +  selector:limit( 1 )
    1.40 +  selector:optional_object_mode()
    1.41 +  return selector
    1.42 +end
    1.43 +
    1.44 +function Initiative:getLastWinner( args )
    1.45 +  local selector = Initiative:getSpecialSelector( args )
    1.46 +  selector:add_where( "issue.state = 'finished_with_winner'" )
    1.47 +  selector:add_order_by( "issue.closed DESC, id DESC" )
    1.48 +  return selector:exec()
    1.49 +end
    1.50 +
    1.51 +function Initiative:getLastLoser( args )
    1.52 +  local selector = Initiative:getSpecialSelector( args )
    1.53 +  selector:add_where( "issue.state = 'finished_without_winner'" )
    1.54 +  selector:add_order_by( "issue.closed DESC, id DESC" )
    1.55 +  return selector:exec()
    1.56 +end
    1.57 +
    1.58 +function Initiative:getNextEndingVoting( args )
    1.59 +  local selector = Initiative:getSpecialSelector( args )
    1.60 +  selector:add_where( "issue.state = 'voting'" )
    1.61 +  selector:add_order_by( "issue.fully_frozen + issue.verification_time DESC, id DESC" )
    1.62 +  return selector:exec()
    1.63 +end
    1.64 +
    1.65 +function Initiative:getNextEndingVerification( args )
    1.66 +  local selector = Initiative:getSpecialSelector( args )
    1.67 +  selector:add_where( "issue.state = 'verification'" )
    1.68 +  selector:add_order_by( "issue.half_frozen + issue.verification_time DESC, id DESC" )
    1.69 +  return selector:exec()
    1.70 +end
    1.71 +
    1.72 +function Initiative:getNextEndingDiscussion( args )
    1.73 +  local selector = Initiative:getSpecialSelector( args )
    1.74 +  selector:add_where( "issue.state = 'discussion'" )
    1.75 +  selector:add_order_by( "issue.accepted + issue.discussion_time DESC, id DESC" )
    1.76 +  return selector:exec()
    1.77 +end
    1.78 +
    1.79 +function Initiative:getBestInAdmission( args )
    1.80 +  local selector = Initiative:getSpecialSelector( args )
    1.81 +  selector:add_where( "issue.state = 'admission'" )
    1.82 +  selector:add_order_by( "issue.created + issue.admission_time DESC, id DESC" )
    1.83 +  return selector:exec()
    1.84 +end
    1.85  
    1.86  function Initiative.object_get:current_draft()
    1.87    return Draft:new_selector()
    1.88 @@ -240,6 +304,10 @@
    1.89    return name
    1.90  end
    1.91  
    1.92 +function Initiative.object_get:display_name()
    1.93 +  return "i" .. self.id .. ": " .. self.name
    1.94 +end
    1.95 +
    1.96  function Initiative.object_get:initiator_names()
    1.97    local members = Member:new_selector()
    1.98      :join("initiator", nil, "initiator.member_id = member.id")
    1.99 @@ -254,3 +322,8 @@
   1.100    return member_names
   1.101  end
   1.102  
   1.103 +function Initiative.object_get:potential_supporter_count()
   1.104 +  if self.supporter_count and self.satisfied_supporter_count then
   1.105 +    return self.supporter_count - self.satisfied_supporter_count
   1.106 +  end
   1.107 +end

Impressum / About Us