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 |