Commit 2cdb6a2a153205f092ea02daa44b47b5ad5d0663
1 parent
8ee805f8
Exists in
master
and in
1 other branch
Adds software downloads count to software
Signed-off-by: Tallys Martins <tallysmartins@gmail.com>
Showing
5 changed files
with
35 additions
and
15 deletions
Show diff stats
src/noosfero-spb/software_communities/controllers/software_communities_plugin_profile_controller.rb
... | ... | @@ -15,6 +15,11 @@ class SoftwareCommunitiesPluginProfileController < ProfileController |
15 | 15 | download.total_downloads += 1 |
16 | 16 | download.save |
17 | 17 | |
18 | + if profile.software? | |
19 | + profile.software_info.downloads_count += 1 | |
20 | + profile.software_info.save | |
21 | + end | |
22 | + | |
18 | 23 | redirect_to download.link |
19 | 24 | else |
20 | 25 | session[:notice] = ERROR_MESSAGES[:not_found] | ... | ... |
src/noosfero-spb/software_communities/db/migrate/20160518173644_adds_downloads_count_to_software.rb
0 → 100644
... | ... | @@ -0,0 +1,9 @@ |
1 | +class AddsDownloadsCountToSoftware < ActiveRecord::Migration | |
2 | + def up | |
3 | + add_column :software_communities_plugin_software_infos, :downloads_count, :integer, :default => 0 | |
4 | + end | |
5 | + | |
6 | + def down | |
7 | + remove_column :software_communities_plugin_software_infos, :downloads_count | |
8 | + end | |
9 | +end | ... | ... |
src/noosfero-spb/software_communities/db/migrate/20160518174439_migrate_software_downloads_count_from_download_block_to_software.rb
0 → 100644
... | ... | @@ -0,0 +1,18 @@ |
1 | +class MigrateSoftwareDownloadsCountFromDownloadBlockToSoftware < ActiveRecord::Migration | |
2 | + def up | |
3 | + SoftwareCommunitiesPlugin::SoftwareInfo.find_each do |software| | |
4 | + software.downloads_count = 0 | |
5 | + blocks = SoftwareCommunitiesPlugin::DownloadBlock.joins(:box).where("boxes.owner_id = #{software.community_id}") | |
6 | + blocks.each do |b| | |
7 | + b.downloads.map{ |dl| | |
8 | + software.downloads_count += dl[:total_downloads] if dl.has_key? :total_downloads | |
9 | + } | |
10 | + end | |
11 | + software.save | |
12 | + end | |
13 | + end | |
14 | + | |
15 | + def down | |
16 | + say "This migration can't be reverted" | |
17 | + end | |
18 | +end | ... | ... |
src/noosfero-spb/software_communities/lib/software_communities_plugin/statistic_block.rb
... | ... | @@ -14,11 +14,6 @@ class SoftwareCommunitiesPlugin::StatisticBlock < Block |
14 | 14 | end |
15 | 15 | |
16 | 16 | def content(args={}) |
17 | - download_blocks = get_profile_download_blocks(self.owner) | |
18 | - downloads = download_blocks.map do |download_block| | |
19 | - get_downloads_from_block(download_block) | |
20 | - end | |
21 | - | |
22 | 17 | block = self |
23 | 18 | statistics = get_software_statistics |
24 | 19 | |
... | ... | @@ -27,7 +22,6 @@ class SoftwareCommunitiesPlugin::StatisticBlock < Block |
27 | 22 | :file => 'blocks/software_statistics', |
28 | 23 | :locals => { |
29 | 24 | :block => block, |
30 | - :total_downloads => downloads.sum, | |
31 | 25 | :statistics => statistics |
32 | 26 | } |
33 | 27 | ) |
... | ... | @@ -44,23 +38,17 @@ class SoftwareCommunitiesPlugin::StatisticBlock < Block |
44 | 38 | SoftwareCommunitiesPlugin::DownloadBlock.joins(:box).where("boxes.owner_id = ?", profile.id) |
45 | 39 | end |
46 | 40 | |
47 | - def get_downloads_from_block download_block | |
48 | - downloads = download_block.download_records.map do |download| | |
49 | - download.total_downloads unless download.total_downloads.nil? | |
50 | - end | |
51 | - downloads.select! {|value| not value.nil? } | |
52 | - downloads.sum | |
53 | - end | |
54 | - | |
55 | 41 | def get_software_statistics |
56 | 42 | statistics = {} |
57 | 43 | software = SoftwareCommunitiesPlugin::SoftwareInfo.find_by_community_id(self.owner.id) |
58 | 44 | if software.present? |
59 | 45 | statistics[:saved_resources] = software.saved_resources |
60 | 46 | statistics[:benefited_people] = software.benefited_people |
47 | + statistics[:downloads_count] = software.downloads_count | |
61 | 48 | else |
62 | 49 | statistics[:saved_resources] = 0 |
63 | 50 | statistics[:benefited_people] = 0 |
51 | + statistics[:downloads_count] = 0 | |
64 | 52 | end |
65 | 53 | statistics |
66 | 54 | end | ... | ... |
src/noosfero-spb/software_communities/views/blocks/software_statistics.html.erb