Commit eddd88d7e652de40c874c7096bf7102c1df83bb2
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 |