Commit eddd88d7e652de40c874c7096bf7102c1df83bb2

Authored by David Silva
1 parent 54d7aaef
Exists in master

Improves community_data_export

Signed-off-by: David Carlos <ddavidcarlos1392@gmail.com>
Showing 1 changed file with 44 additions and 29 deletions   Show diff stats
lib/community_data_export.rb
1 module CommunityDataExport 1 module CommunityDataExport
2 2
  3 + COMMUNITY_FIELDS = %w(public_software acronym finality repository_link)
  4 + LICENSE_INFO_FIELDS = %w(id version link)
  5 +
3 def community_attr_to_hash community 6 def community_attr_to_hash community
4 attrs = {} 7 attrs = {}
5 8
6 attrs["members-count"] = community.members.count 9 attrs["members-count"] = community.members.count
7 attrs["members"] = [] 10 attrs["members"] = []
8 11
  12 + attrs = community_members(attrs, community)
  13 +
  14 + if community.respond_to?("software?") && community.software?
  15 + attrs['software_data'] = software_data(community)
  16 + attrs = categories(attrs, community)
  17 + end
  18 +
  19 + attrs
  20 + end
  21 +
  22 + def software_data(community)
  23 + software_hash = {}
  24 + COMMUNITY_FIELDS.each do |m|
  25 + software_hash.merge!({m => community.software_info.send(m)})
  26 + end
  27 +
  28 + software_hash['license_info'] = {}
  29 + LICENSE_INFO_FIELDS.each do |m|
  30 + software_hash['license_info'].merge!({m => community.software_info.license_info.send(m)})
  31 + end
  32 + software_hash
  33 + end
  34 +
  35 + def categories(attrs, community)
  36 + attrs['software_data']["categories"] = []
  37 + community.categories.each do |category|
  38 + if Category.last.parent.name == "Software"
  39 + category_info = {
  40 + "id" => category.id,
  41 + "name" => category.name,
  42 + "slug" => category.slug,
  43 + "path" => category.path
  44 + }
  45 + attrs['software_data']["categories"] << category_info
  46 + end
  47 + end
  48 + attrs
  49 + end
  50 +
  51 +
  52 + def community_members(attrs, community)
9 community.members.each do |member| 53 community.members.each do |member|
10 attrs_members = { 54 attrs_members = {
11 "is_admin" => community.admins.include?(member), 55 "is_admin" => community.admins.include?(member),
@@ -15,35 +59,6 @@ module CommunityDataExport @@ -15,35 +59,6 @@ module CommunityDataExport
15 } 59 }
16 attrs['members'] << attrs_members 60 attrs['members'] << attrs_members
17 end 61 end
18 -  
19 - if community.respond_to?("software?") && community.software?  
20 - attrs['software_data'] = {  
21 - "public_software" => community.software_info.public_software,  
22 - "acronym" => community.software_info.acronym,  
23 - "finality" => community.software_info.finality,  
24 - "repository_link" => community.software_info.repository_link,  
25 - "license_info" => {  
26 - "id" => community.software_info.license_info.id,  
27 - "version" => community.software_info.license_info.version,  
28 - "link" => community.software_info.license_info.link,  
29 - },  
30 - "categories" => []  
31 - }  
32 -  
33 - community.categories.each do |category|  
34 - if Category.last.parent.name == "Software"  
35 - category_info = {  
36 - "id" => category.id,  
37 - "name" => category.name,  
38 - "slug" => category.slug,  
39 - "path" => category.path  
40 - }  
41 -  
42 - attrs['software_data']["categories"] << category_info  
43 - end  
44 - end  
45 - end  
46 -  
47 attrs 62 attrs
48 end 63 end
49 64