bsw/jbe@0: Initiative = mondelefant.new_class() bsw/jbe@0: Initiative.table = 'initiative' bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Issue", bsw/jbe@0: this_key = 'issue_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'issue', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Draft", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'drafts', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Suggestion", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'suggestions', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Initiator", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'initiators', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Supporter", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'supporters', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Opinion", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'opinions', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = '1m', bsw/jbe@0: to = "Vote", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'initiative_id', bsw/jbe@0: ref = 'votes', bsw/jbe@0: back_ref = 'initiative', bsw/jbe@0: default_order = '"member_id"' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = 'mm', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: connected_by_table = '"initiator"', bsw/jbe@0: connected_by_this_key = 'initiative_id', bsw/jbe@0: connected_by_that_key = 'member_id', bsw/jbe@0: ref = 'initiating_members' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Initiative:add_reference{ bsw/jbe@0: mode = 'mm', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: connected_by_table = '"supporter"', bsw/jbe@0: connected_by_this_key = 'initiative_id', bsw/jbe@0: connected_by_that_key = 'member_id', bsw/jbe@0: ref = 'supporting_members' bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: function Initiative:search(search_string) bsw/jbe@0: return self:new_selector() bsw/jbe@0: :add_where{ '"initiative"."name" ILIKE ?', "%" .. search_string:gsub("%%", "") .. "%" } bsw/jbe@0: :exec() bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: function Initiative.object_get:current_draft() bsw/jbe@0: return Draft:new_selector() bsw/jbe@0: :add_where{ '"initiative_id" = ?', self.id } bsw/jbe@0: :add_order_by('"id" DESC') bsw/jbe@0: :single_object_mode() bsw/jbe@0: :exec() bsw/jbe@0: end bsw/jbe@0: bsw/jbe@0: function Initiative.object_get:shortened_name() bsw/jbe@0: local name = self.name bsw/jbe@0: if #name > 100 then bsw/jbe@0: name = name:sub(1,100) .. "..." bsw/jbe@0: end bsw/jbe@0: return name bsw/jbe@0: end