class Area

OpenIrekia v4.0.0

Copyright 2009-2013 eFaber, S.L. Copyright 2009-2013 Ejie, S.A. Copyrigth 2009-2013 Dirección de Gobierno Abierto y Comunicación en Internet;

Gobernu Irekirako eta Interneteko Komunikaziorako Zuzendaritza; Lehendakaritza.
Gobierno Vasco – Eusko Jaurlaritza

Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la Licencia); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: ec.europa.eu/idabc/eupl Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye TAL CUAL, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia

http://open.irekia.net, openirekia@efaber.net

Attributes

area_tag_name[RW]

Public Class Methods

tags() click to toggle source
# File app/models/area.rb, line 50
def self.tags
  self.all.collect {|a| a.area_tag}
end

Public Instance Methods

approved_arguments() click to toggle source
# File app/models/area.rb, line 117
def approved_arguments
  nil
end
approved_comments() click to toggle source
# File app/models/area.rb, line 113
def approved_comments
  nil
end
approved_headlines() click to toggle source
# File app/models/area.rb, line 121
def approved_headlines     
  Headline.published.translated.tagged_with(self.tag_name_es).find(:all, :limit => 10)
end
area_tag() click to toggle source
# File app/models/area.rb, line 61
def area_tag
  @area_tag ||= self.tags.detect {|t| t.name_es.match(/^_a_/)}
  @area_tag
end
area_tag_name=(value) click to toggle source
# File app/models/area.rb, line 54
def area_tag_name=(value)
  @area_tag_name = value
  old_tags = self.tag_list
  self.tag_list = old_tags.select {|t| !t.match(/^_a_/)} + [value]
  return @area_tag_name
end
area_tag_name_format() click to toggle source
# File app/models/area.rb, line 43
def area_tag_name_format
  self.errors.add :area_tag_name, 'debe empezar por _a_' unless @area_tag_name.match(/^_a_/)
end
find_headlines_from_albiste_es() click to toggle source
# File app/models/area.rb, line 125
def find_headlines_from_albiste_es 
  if self.headline_keywords.present?                  
    ['es', 'eu'].each do |locale|
      begin  
        query = {"size" => 10, "from" => 0, 
          "query" => {"filtered" => {
            "filter" => {"and" => [{"term" => {"published_at" => Date.today.to_s}}, {"term" => {"locale" => locale}}]},
            "query" => {"query_string" => {"fields" => ["title^10"], "query" => self.headline_keywords.tildes, "analyzer" => "semicolon"}} }}}   
        # query = {"size" => 10, "from" => 0, 
        #   "query" => {"query_string" => {"fields" => ["title^3", "body"], "query" => self.headline_keywords.tildes}} }

        # puts "QUERY STRING #{query.inspect}"
        uri=(URI.parse("#{ELASTICSEARCH_ALBISTE_URI}/references/_search?pretty=true"))
        Net::HTTP.start(uri.host, uri.port) do |http|
          headers = { 'Content-Type' => 'application/json'}
          data = query.to_json
          response = http.send_request("GET", uri.request_uri, data, headers)                                            
          # puts "Elasticsearch Response: #{response.code} #{response.message} #{response.body}"  
          puts "Elasticsearch Response: #{response.code} #{response.message}"                    
          @code=response.code
          @body=response.body
        end    
      rescue => e
        puts "ERROR. Elasticsearch is not available. #{e}"
        return false
      end
      if @code.eql?('200')
        results=Hash.new
        results['hits']=[]
        results['total_hits'] = JSON.parse(@body)['hits']['total']
        JSON.parse(@body)["hits"]["hits"].each do |result|
          es_item = result['_source']
          item = Headline.find(:all, :conditions => {:source_item_id => result['_source']['source_item_id'], :source_item_type => result['_source']['source_item_type']})        
          unless item.present?
            item = Headline.create(result['_source'].merge(:tag_list => self.area_tag.name)) 
          end                                                                                 
        end                                                                                   
        # return true
      else
        # return false
      end
    end    
    puts "Headlines successfully created for area #{self.name}"
  end                                                                                         
end
tag_name_es() click to toggle source
# File app/models/area.rb, line 70
def tag_name_es
  self.area_tag.name_es
end
to_yaml( opts = {} ) click to toggle source

HQ # Preguntas del área: son las preguntas que comparten tags con el área def approved_and_published_questions

Question.approved.published.tagged_with(self.tag_name_es)

end

def questions_count

self.approved_and_published_questions.count('distinct contributions.id')

end

# Respuestas del área. Son las respuestas de las preguntas del área. def answers

Answer.tagged_with(self.tag_name_es)

end

def answers_count

self.answers.count('distinct contributions.id')

end

# File app/models/area.rb, line 101
def to_yaml( opts = {} )
  YAML.quick_emit( self.id, opts ) { |out|
    out.map( taguri, to_yaml_style ) { |map|
      atr = @attributes.dup
      #atr.each_key {|key| atr[key] = "#{atr[key]}" if ["description_es", "description_eu", "description_en"].include?(key)}
      atr["tag_name_es"] = self.tag_name_es
      atr["filename4icon"] = self.icon_file_name
      map.add("attributes",  atr)
    }
  }
end