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 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 6 def community_attr_to_hash community
4 7 attrs = {}
5 8  
6 9 attrs["members-count"] = community.members.count
7 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 53 community.members.each do |member|
10 54 attrs_members = {
11 55 "is_admin" => community.admins.include?(member),
... ... @@ -15,35 +59,6 @@ module CommunityDataExport
15 59 }
16 60 attrs['members'] << attrs_members
17 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 62 attrs
48 63 end
49 64  
... ...