voluntary_music_metadata_enrichment 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. checksums.yaml +15 -0
  2. data/app/assets/javascripts/voluntary_music_metadata_enrichment/groups/show.js.coffee +2 -1
  3. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/index.js.coffee +3 -2
  4. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_releases/index_view.js.coffee +94 -15
  5. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_releases/new_view.js.coffee +37 -2
  6. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_tracks/index_view.js.coffee +94 -15
  7. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_tracks/new_view.js.coffee +37 -2
  8. data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/years_in_review/index_view.js.coffee +6 -0
  9. data/app/assets/javascripts/voluntary_music_metadata_enrichment/videos/show.js.coffee +2 -0
  10. data/app/controllers/concerns/music_metadata_enrichment/artist_confirmation.rb +98 -132
  11. data/app/controllers/concerns/music_metadata_enrichment/track_confirmation.rb +45 -24
  12. data/app/controllers/library/music/year_in_review_release_flops_controller.rb +31 -0
  13. data/app/controllers/library/music/year_in_review_releases_controller.rb +24 -4
  14. data/app/controllers/library/music/year_in_review_track_flops_controller.rb +31 -0
  15. data/app/controllers/library/music/year_in_review_tracks_controller.rb +55 -24
  16. data/app/controllers/library/music/years_in_review_controller.rb +25 -3
  17. data/app/controllers/music_metadata_enrichment/application_controller.rb +4 -0
  18. data/app/controllers/music_metadata_enrichment/artists_controller.rb +14 -12
  19. data/app/controllers/music_metadata_enrichment/group_memberships_controller.rb +20 -0
  20. data/app/controllers/music_metadata_enrichment/group_year_in_review_releases_controller.rb +29 -0
  21. data/app/controllers/music_metadata_enrichment/group_year_in_review_tracks_controller.rb +27 -0
  22. data/app/controllers/music_metadata_enrichment/group_year_in_reviews_controller.rb +18 -0
  23. data/app/controllers/music_metadata_enrichment/groups_controller.rb +2 -0
  24. data/app/controllers/music_metadata_enrichment/releases_controller.rb +59 -57
  25. data/app/controllers/music_metadata_enrichment/tracks_controller.rb +37 -7
  26. data/app/controllers/music_metadata_enrichment/videos_controller.rb +4 -4
  27. data/app/controllers/voluntary/api/v1/music/releases_controller.rb +17 -0
  28. data/app/controllers/voluntary/api/v1/music/tracks_controller.rb +17 -0
  29. data/app/controllers/voluntary/api/v1/music/videos_controller.rb +31 -0
  30. data/app/controllers/voluntary/api/v1/music/year_in_reviews_controller.rb +94 -0
  31. data/app/helpers/library/music/year_in_review_releases_helper.rb +14 -0
  32. data/app/helpers/library/music/year_in_review_tracks_helper.rb +13 -0
  33. data/app/helpers/library/music/year_in_reviews_helper.rb +22 -0
  34. data/app/helpers/music_metadata_enrichment/lastfm_helper.rb +19 -0
  35. data/app/models/concerns/lastfm_request.rb +54 -0
  36. data/app/models/concerns/music_metadata_enrichment/group_year_in_review_music_entry.rb +14 -0
  37. data/app/models/concerns/year_in_review_music_entry.rb +3 -1
  38. data/app/models/concerns/year_in_review_music_release_base.rb +35 -0
  39. data/app/models/concerns/year_in_review_music_track_base.rb +37 -0
  40. data/app/models/music_artist.rb +106 -27
  41. data/app/models/music_metadata_enrichment/group.rb +14 -13
  42. data/app/models/music_metadata_enrichment/group_membership.rb +13 -0
  43. data/app/models/music_metadata_enrichment/group_year_in_review.rb +72 -0
  44. data/app/models/music_metadata_enrichment/group_year_in_review_release.rb +8 -0
  45. data/app/models/music_metadata_enrichment/group_year_in_review_track.rb +8 -0
  46. data/app/models/music_release.rb +224 -35
  47. data/app/models/music_track.rb +140 -28
  48. data/app/models/year_in_review_music.rb +193 -101
  49. data/app/models/year_in_review_music_release.rb +2 -20
  50. data/app/models/year_in_review_music_release_flop.rb +4 -0
  51. data/app/models/year_in_review_music_track.rb +2 -24
  52. data/app/models/year_in_review_music_track_flop.rb +4 -0
  53. data/app/views/library/music/index.html.erb +2 -2
  54. data/app/views/library/music/year_in_review_release_flops/create.js.erb +5 -0
  55. data/app/views/library/music/year_in_review_releases/_collection.html.erb +55 -41
  56. data/app/views/library/music/year_in_review_releases/_form.html.erb +2 -1
  57. data/app/views/library/music/year_in_review_releases/_multiple_form.html.erb +20 -6
  58. data/app/views/library/music/year_in_review_releases/_year_in_review_release.html.erb +35 -0
  59. data/app/views/library/music/year_in_review_releases/create.js.erb +9 -4
  60. data/app/views/library/music/year_in_review_releases/destroy.js.erb +2 -2
  61. data/app/views/library/music/year_in_review_releases/export.html.erb +2 -1
  62. data/app/views/library/music/year_in_review_releases/index.html.erb +4 -4
  63. data/app/views/library/music/year_in_review_track_flops/create.js.erb +5 -0
  64. data/app/views/library/music/year_in_review_tracks/_collection.html.erb +49 -38
  65. data/app/views/library/music/year_in_review_tracks/_form.html.erb +2 -1
  66. data/app/views/library/music/year_in_review_tracks/_multiple_form.html.erb +69 -42
  67. data/app/views/library/music/year_in_review_tracks/_year_in_review_track.html.erb +29 -0
  68. data/app/views/library/music/year_in_review_tracks/create.js.erb +9 -4
  69. data/app/views/library/music/year_in_review_tracks/destroy.js.erb +2 -2
  70. data/app/views/library/music/year_in_review_tracks/export.html.erb +1 -1
  71. data/app/views/library/music/year_in_review_tracks/index.html.erb +3 -3
  72. data/app/views/library/music/year_in_review_tracks/multiple_new.js.erb +5 -2
  73. data/app/views/library/music/years_in_review/_collection.html.erb +23 -6
  74. data/app/views/library/music/years_in_review/destroy.js.erb +1 -0
  75. data/app/views/library/music/years_in_review/index.html.erb +2 -2
  76. data/app/views/library/music/years_in_review/publish.js.erb +1 -0
  77. data/app/views/library/music/years_in_review/show.html.erb +3 -3
  78. data/app/views/music_metadata_enrichment/artists/_collection.html.erb +3 -3
  79. data/app/views/music_metadata_enrichment/group_artist_connections/import.html.erb +1 -1
  80. data/app/views/music_metadata_enrichment/group_memberships/_create_or_destroy.html.erb +9 -0
  81. data/app/views/music_metadata_enrichment/group_memberships/create.js.erb +5 -0
  82. data/app/views/music_metadata_enrichment/group_memberships/destroy.js.erb +5 -0
  83. data/app/views/music_metadata_enrichment/group_year_in_review_releases/index.html.erb +16 -0
  84. data/app/views/music_metadata_enrichment/group_year_in_review_tracks/index.html.erb +16 -0
  85. data/app/views/music_metadata_enrichment/group_year_in_reviews/index.html.erb +18 -0
  86. data/app/views/music_metadata_enrichment/group_year_in_reviews/show.html.erb +20 -0
  87. data/app/views/music_metadata_enrichment/groups/show.html.erb +7 -1
  88. data/app/views/music_metadata_enrichment/releases/_spotify_album_player.html.erb +3 -0
  89. data/app/views/music_metadata_enrichment/releases/announce.html.erb +3 -1
  90. data/app/views/music_metadata_enrichment/releases/by_name.html.erb +1 -1
  91. data/app/views/music_metadata_enrichment/releases/name.html.erb +2 -1
  92. data/app/views/music_metadata_enrichment/releases/name_confirmation.html.erb +2 -1
  93. data/app/views/music_metadata_enrichment/releases/show.html.erb +24 -0
  94. data/app/views/music_metadata_enrichment/shared/_artist_confirmation_form.html.erb +2 -1
  95. data/app/views/music_metadata_enrichment/shared/_new_artist_form.html.erb +2 -1
  96. data/app/views/music_metadata_enrichment/shared/_new_track_form.html.erb +2 -1
  97. data/app/views/music_metadata_enrichment/shared/_track_confirmation_form.html.erb +3 -2
  98. data/app/views/music_metadata_enrichment/tracks/show.html.erb +20 -2
  99. data/app/views/music_metadata_enrichment/videos/artist_confirmation.html.erb +1 -1
  100. data/app/views/music_metadata_enrichment/videos/show.html.erb +7 -1
  101. data/config/locales/resources/music_metadata_enrichment_group_memberships/en.yml +7 -0
  102. data/config/locales/resources/music_releases/en.yml +4 -0
  103. data/config/locales/resources/music_tracks/en.yml +8 -3
  104. data/config/locales/resources/year_in_review_music_release_flops/en.yml +4 -0
  105. data/config/locales/resources/year_in_review_music_releases/en.yml +6 -1
  106. data/config/locales/resources/year_in_review_music_track_flops/en.yml +4 -0
  107. data/config/locales/resources/year_in_review_music_tracks/en.yml +4 -0
  108. data/config/locales/resources/years_in_review_music/en.yml +8 -3
  109. data/config/routes.rb +30 -2
  110. data/config/routes/api.rb +32 -0
  111. data/db/migrate/20150106183434_add_product_music_metadata_enrichment.rb +3 -1
  112. data/db/migrate/20150120091801_create_music_metadata_enrichment_groups.rb +2 -2
  113. data/db/migrate/20150208120722_add_is_lp_to_music_releases.rb +5 -0
  114. data/db/migrate/20150209091856_year_in_review_music_releases_and_tracks_flops.rb +34 -0
  115. data/db/migrate/20150209151056_add_is_ambiguous_to_music_artists.rb +5 -0
  116. data/db/migrate/20150213170604_create_group_memberships.rb +11 -0
  117. data/db/migrate/20150214083714_create_group_year_in_review_music_releases_and_tracks.rb +77 -0
  118. data/db/migrate/20150215120545_add_matches_to_year_in_reviews_music.rb +6 -0
  119. data/db/migrate/20150215135051_add_spotify_album_id_to_music_releases.rb +8 -0
  120. data/db/migrate/20150220084746_add_state_to_year_in_review_music_entries.rb +7 -0
  121. data/lib/voluntary_music_metadata_enrichment/ability.rb +12 -3
  122. data/lib/voluntary_music_metadata_enrichment/concerns/model/user/has_music_library.rb +69 -34
  123. data/lib/voluntary_music_metadata_enrichment/version.rb +1 -1
  124. metadata +63 -64
  125. data/MIT-LICENSE +0 -20
  126. data/README.rdoc +0 -3
@@ -4,47 +4,68 @@ module MusicMetadataEnrichment
4
4
 
5
5
  private
6
6
 
7
- def track_creation(from)
7
+ def track_creation(from, name = nil)
8
8
  name_and_mbid = params[:music_track].delete(:name_and_mbid)
9
- @track.name = MusicTrack.format_name(name_and_mbid.split(';').first)
9
+ @track.name = name || MusicTrack.format_name(name_and_mbid.split(';').first)
10
10
 
11
- if track = MusicTrack.where("artist_id = :artist_id AND LOWER(name) = :name", artist_id: @track.artist_id, name: @track.name.downcase.strip).first
12
- if from == 'new_track'
11
+ if @track.name.length > 255
12
+ flash[:alert] = I18n.t('errors.messages.too_long.other', count: 255)
13
+
14
+ @path = params[:group_id].present? ? music_group_path(params[:group_id]) :
15
+ music_path
16
+ elsif track = MusicTrack.where("artist_id = :artist_id AND LOWER(name) = :name", artist_id: @track.artist_id, name: @track.name.downcase.strip).first
17
+ @track = track
18
+ @path = if from == 'new_track'
13
19
  flash[:alert] = I18n.t('music_tracks.create.already_exist')
14
- redirect_to music_track_path(track.id)
20
+ music_track_path(track.id)
15
21
  elsif from == 'new_video'
16
- redirect_to metadata_music_videos_path(
22
+ metadata_music_videos_path(
17
23
  (params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(music_video: { track_id: track.id })
18
24
  )
19
25
  end
20
26
  else
21
- if @track.is_bonus_track?
27
+ is_bonus_track = name.present? ? false : @track.is_bonus_track?
28
+
29
+ if @track.release_name.present?
30
+ release = MusicRelease.create(artist_id: @track.artist_id, name: @track.release_name, is_lp: @track.release_is_lp)
31
+ end
32
+
33
+ if name.present? || @track.release_name.present?
34
+ @track.create_draft_track(name || @track.name)
35
+
36
+ if @track.persisted?
37
+ flash[:notice] = I18n.t('music_tracks.create.draft_successful')
38
+ else
39
+ flash[:alert] = I18n.t('music_tracks.create.draft_failed', errors: @track.errors.full_messages.join('. '))
40
+ end
41
+ end
42
+
43
+ if name.blank? && (@track.artist.is_classical? || is_bonus_track)
22
44
  @track.create_bonus_track(name_and_mbid.split(';').last)
23
- flash[:notice] = I18n.t('music_tracks.create.successfully_creation')
24
45
 
46
+ if @track.persisted?
47
+ flash[:notice] = I18n.t('music_tracks.create.bonus_track_successful')
48
+ else
49
+ flash[:alert] = I18n.t('music_tracks.create.bonus_track_failed', errors: @track.errors.full_messages.join('. '))
50
+ end
51
+ end
52
+
53
+ if @track.persisted?
25
54
  if from == 'new_track'
26
- redirect_to music_track_path(@track.id)
55
+ @path = music_track_path(@track.id)
27
56
  elsif from == 'new_video'
28
- redirect_to metadata_music_videos_path(
57
+ @path = metadata_music_videos_path(
29
58
  (params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(music_video: { track_id: @track.id })
30
59
  )
31
60
  end
32
- elsif @track.release_name.present?
33
- release = MusicRelease.create(artist_id: @track.artist_id, name: @track.release_name)
34
-
35
- if release.valid?
36
- flash[:notice] = I18n.t('music_tracks.create.scheduled_release_for_import')
37
- else
38
- flash[:alert] = release.errors.full_messages.join('. ')
39
- end
40
-
41
- if params[:group_id].present?
42
- redirect_to music_group_path(params[:group_id])
43
- else
44
- redirect_to music_path
45
- end
61
+ else
62
+ @path = track_name_music_tracks_path(
63
+ (params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(music_track: { artist_id: @track.artist_id })
64
+ )
46
65
  end
47
66
  end
67
+
68
+ redirect_to @path unless @path.blank? || request.xhr?
48
69
  end
49
70
 
50
71
  def build_track
@@ -0,0 +1,31 @@
1
+ class Library::Music::YearInReviewReleaseFlopsController < ::MusicMetadataEnrichment::ApplicationController
2
+ include ::MusicMetadataEnrichment::BaseController
3
+ include Applicat::Mvc::Controller::Resource
4
+
5
+ before_action :find_resource, only: [:move, :destroy]
6
+ authorize_resource class: 'YearInReviewMusicReleaseFlop'
7
+
8
+ def create
9
+ build_resource
10
+
11
+ if @year_in_review_release_flop.save
12
+ @year_in_review.releases.where(release_id: @year_in_review_release_flop.release_id).delete_all
13
+ MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_release_flop.artist_id)
14
+ end
15
+
16
+ render layout: false
17
+ end
18
+
19
+ private
20
+
21
+ def build_resource
22
+ @user = current_user
23
+ find_year_in_review
24
+ params[:year_in_review_music_release_flop] ||= {}
25
+ @year_in_review_release_flop = @year_in_review.flop_releases.new(release_id: params[:year_in_review_music_release_flop][:release_id])
26
+ end
27
+
28
+ def find_year_in_review
29
+ @year_in_review = @user.years_in_review_music.where(year: params[:year]).first
30
+ end
31
+ end
@@ -2,7 +2,7 @@ class Library::Music::YearInReviewReleasesController < ::MusicMetadataEnrichment
2
2
  include ::MusicMetadataEnrichment::BaseController
3
3
  include Applicat::Mvc::Controller::Resource
4
4
 
5
- before_action :find_resource, only: [:move, :destroy]
5
+ before_action :find_resource, only: [:destroy]
6
6
  authorize_resource class: 'YearInReviewMusicRelease'
7
7
 
8
8
  def index
@@ -51,6 +51,7 @@ class Library::Music::YearInReviewReleasesController < ::MusicMetadataEnrichment
51
51
  build_resource
52
52
 
53
53
  if @year_in_review_release.save
54
+ @year_in_review.flop_releases.where(release_id: @year_in_review_release.release_id).delete_all
54
55
  MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_release.artist_id)
55
56
  @notice = I18n.t('year_in_review_music_releases.create.successful')
56
57
  get_year_in_review_releases
@@ -60,13 +61,28 @@ class Library::Music::YearInReviewReleasesController < ::MusicMetadataEnrichment
60
61
  end
61
62
 
62
63
  def move
63
- @year_in_review_release.insert_at(params[:position].to_i)
64
+ year_in_review_releases = current_user.years_in_review_music_releases.where('year_in_review_music_releases.id IN(?)', params[:positions].values).index_by(&:id)
65
+
66
+ params[:positions].keys.map(&:to_i).sort.each do |position|
67
+ id = params[:positions][position.to_s]
68
+ year_in_review_releases[id.to_i].reload
69
+ year_in_review_releases[id.to_i].insert_at(position.to_i)
70
+ end
71
+
72
+ render nothing: true
73
+ end
74
+
75
+ def update_all_positions
76
+ @user = current_user
77
+ find_year_in_review
78
+
79
+ @year_in_review.update_all_positions_of_users_top_list(@user, :releases, params[:matches], params[:positions])
64
80
 
65
81
  render nothing: true
66
82
  end
67
83
 
68
84
  def destroy
69
- @year_in_review_release.destroy!
85
+ @year_in_review_release.destroy
70
86
  @user = current_user
71
87
  params[:user_id], params[:year] = current_user.id, @year_in_review_release.year
72
88
  find_year_in_review
@@ -90,7 +106,9 @@ class Library::Music::YearInReviewReleasesController < ::MusicMetadataEnrichment
90
106
  private
91
107
 
92
108
  def find_year_in_review
93
- @year_in_review = @user.years_in_review_music.where(year: params[:year]).first
109
+ @year_in_review = @user.years_in_review_music
110
+ @year_in_review = @year_in_review.published unless current_user.try(:id) == @user.id
111
+ @year_in_review = @year_in_review.where(year: params[:year]).first
94
112
  end
95
113
 
96
114
  def build_resource
@@ -106,5 +124,7 @@ class Library::Music::YearInReviewReleasesController < ::MusicMetadataEnrichment
106
124
 
107
125
  def get_year_in_review_releases
108
126
  @year_in_review_releases = @year_in_review.releases.order('position ASC')
127
+ @year_in_review_tracks = @year_in_review.tracks.order('position ASC').group_by(&:release_id)
128
+ @year_in_review_tracks_count = @year_in_review_tracks.values.flatten.length
109
129
  end
110
130
  end
@@ -0,0 +1,31 @@
1
+ class Library::Music::YearInReviewTrackFlopsController < ::MusicMetadataEnrichment::ApplicationController
2
+ include ::MusicMetadataEnrichment::BaseController
3
+ include Applicat::Mvc::Controller::Resource
4
+
5
+ before_action :find_resource, only: [:move, :destroy]
6
+ authorize_resource class: 'YearInReviewMusicTrackFlop'
7
+
8
+ def create
9
+ build_resource
10
+
11
+ if @year_in_review_track_flop.save
12
+ @year_in_review.tracks.where(track_id: @year_in_review_track_flop.track_id).delete_all
13
+ MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track_flop.artist_id)
14
+ end
15
+
16
+ render layout: false
17
+ end
18
+
19
+ private
20
+
21
+ def build_resource
22
+ @user = current_user
23
+ find_year_in_review
24
+ params[:year_in_review_music_track_flop] ||= {}
25
+ @year_in_review_track_flop = @year_in_review.flop_tracks.new(track_id: params[:year_in_review_music_track_flop][:track_id])
26
+ end
27
+
28
+ def find_year_in_review
29
+ @year_in_review = @user.years_in_review_music.where(year: params[:year]).first
30
+ end
31
+ end
@@ -2,7 +2,7 @@ class Library::Music::YearInReviewTracksController < ::MusicMetadataEnrichment::
2
2
  include ::MusicMetadataEnrichment::BaseController
3
3
  include Applicat::Mvc::Controller::Resource
4
4
 
5
- before_action :find_resource, only: [:move, :destroy]
5
+ before_action :find_resource, only: [:destroy]
6
6
  authorize_resource class: 'YearInReviewMusicTrack'
7
7
 
8
8
  def index
@@ -19,31 +19,44 @@ class Library::Music::YearInReviewTracksController < ::MusicMetadataEnrichment::
19
19
  end
20
20
 
21
21
  def multiple_new
22
- @user = current_user
23
- find_year_in_review
24
- @tracks = current_user.music_tracks.for_year_in_review(@year_in_review)
25
- @tracks = @tracks.where('music_tracks.id > ?', params[:last_id]) if params[:last_id].present?
26
- @tracks_left = @tracks.count
27
- @tracks = @tracks.order('music_tracks.id ASC').limit(10)
28
- params[:last_id] = params[:commit] == I18n.t('general.close') || @tracks.none? ? nil : @tracks.last.id
29
-
30
- if params[:commit] != I18n.t('general.close') && params[:year_in_review_music_tracks].present?
31
- params[:year_in_review_music_tracks].each do |track_id, checked|
32
- next unless checked == '1'
33
-
34
- @year_in_review_track = @year_in_review.tracks.create(track_id: track_id)
22
+ if params[:commit].present?
23
+ @user = current_user
24
+ find_year_in_review
25
+ @tracks = current_user.music_tracks.for_year_in_review(@year_in_review)
26
+ @release_ids = []
27
+
28
+ if params[:only_tracks_of_top_releases] == 'true'
29
+ @release_ids = @year_in_review.releases.map(&:release_id)
30
+ @tracks = @tracks.where('music_tracks.release_id IN(?)', @release_ids) if @release_ids.any?
31
+ end
32
+
33
+ if params[:only_tracks_of_top_releases] == 'true' && @release_ids.none?
34
+ @message = I18n.t('year_in_review_music_tracks.multiple_new.no_top_releases_available')
35
+ else
36
+ @tracks = @tracks.where('music_tracks.id > ?', params[:last_id]) if params[:last_id].present?
37
+ @tracks_left = @tracks.count
38
+ @tracks = @tracks.order('music_tracks.id ASC').limit(10)
39
+ params[:last_id] = params[:commit] == I18n.t('general.close') || @tracks.none? ? nil : @tracks.last.id
35
40
 
36
- next unless @year_in_review_track.persisted?
41
+ if params[:commit] != I18n.t('general.close') && params[:year_in_review_music_tracks].present?
42
+ params[:year_in_review_music_tracks].each do |track_id, checked|
43
+ next unless checked == '1'
44
+
45
+ @year_in_review_track = @year_in_review.tracks.create(track_id: track_id)
46
+
47
+ next unless @year_in_review_track.persisted?
48
+
49
+ MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track.artist_id)
50
+ end
51
+ end
37
52
 
38
- MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track.artist_id)
53
+ if params[:commit] == I18n.t('general.close') || @tracks.none?
54
+ get_year_in_review_tracks
55
+ params[:user_id] = current_user.id
56
+ end
39
57
  end
40
58
  end
41
59
 
42
- if params[:commit] == I18n.t('general.close') || @tracks.none?
43
- get_year_in_review_tracks
44
- params[:user_id] = current_user.id
45
- end
46
-
47
60
  render layout: false
48
61
  end
49
62
 
@@ -51,6 +64,7 @@ class Library::Music::YearInReviewTracksController < ::MusicMetadataEnrichment::
51
64
  build_resource
52
65
 
53
66
  if @year_in_review_track.save
67
+ @year_in_review.flop_tracks.where(track_id: @year_in_review_track.track_id).delete_all
54
68
  MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track.artist_id)
55
69
  @notice = I18n.t('year_in_review_music_tracks.create.successful')
56
70
  get_year_in_review_tracks
@@ -60,13 +74,28 @@ class Library::Music::YearInReviewTracksController < ::MusicMetadataEnrichment::
60
74
  end
61
75
 
62
76
  def move
63
- @year_in_review_track.insert_at(params[:position].to_i)
77
+ year_in_review_tracks = current_user.years_in_review_music_tracks.where('year_in_review_music_tracks.id IN(?)', params[:positions].values).index_by(&:id)
78
+
79
+ params[:positions].keys.map(&:to_i).sort.each do |position|
80
+ id = params[:positions][position.to_s]
81
+ year_in_review_tracks[id.to_i].reload
82
+ year_in_review_tracks[id.to_i].insert_at(position.to_i)
83
+ end
84
+
85
+ render nothing: true
86
+ end
87
+
88
+ def update_all_positions
89
+ @user = current_user
90
+ find_year_in_review
91
+
92
+ @year_in_review.update_all_positions_of_users_top_list(@user, :tracks, params[:matches], params[:positions])
64
93
 
65
94
  render nothing: true
66
95
  end
67
96
 
68
97
  def destroy
69
- @year_in_review_track.destroy!
98
+ @year_in_review_track.destroy
70
99
  @user = current_user
71
100
  params[:user_id], params[:year] = current_user.id, @year_in_review_track.year
72
101
  find_year_in_review
@@ -90,7 +119,9 @@ class Library::Music::YearInReviewTracksController < ::MusicMetadataEnrichment::
90
119
  private
91
120
 
92
121
  def find_year_in_review
93
- @year_in_review = @user.years_in_review_music.where(year: params[:year]).first
122
+ @year_in_review = @user.years_in_review_music
123
+ @year_in_review = @year_in_review.published unless current_user.try(:id) == @user.id
124
+ @year_in_review = @year_in_review.where(year: params[:year]).first
94
125
  end
95
126
 
96
127
  def build_resource
@@ -20,7 +20,27 @@ class Library::Music::YearsInReviewController < ::MusicMetadataEnrichment::Appli
20
20
 
21
21
  def show
22
22
  @user = User.find(params[:user_id])
23
- @year_in_review = @user.years_in_review_music.where(year: params[:year]).first
23
+ @year_in_review = @user.years_in_review_music
24
+ @year_in_review = @year_in_review.published unless current_user.try(:id) == @user.id
25
+ @year_in_review = @year_in_review.where(year: params[:year]).first
26
+ end
27
+
28
+ def publish
29
+ @year_in_review = current_user.years_in_review_music.where(id: params[:id]).first
30
+ @year_in_review.publish
31
+
32
+ render layout: false
33
+ end
34
+
35
+ def destroy
36
+ @year_in_review = current_user.years_in_review_music.where(id: params[:id]).first
37
+ @year_in_review.destroy
38
+ @user = current_user
39
+ params[:user_id] = current_user.id
40
+ get_years_in_review
41
+ build_year_in_review if user_signed_in?
42
+
43
+ render layout: false
24
44
  end
25
45
 
26
46
  def resource
@@ -35,7 +55,9 @@ class Library::Music::YearsInReviewController < ::MusicMetadataEnrichment::Appli
35
55
  end
36
56
 
37
57
  def get_years_in_review
38
- @user = User.find(params[:user_id])
39
- @years_in_review = @user.years_in_review_music.order('year DESC').paginate(per_page: 10, page: params[:page] || 1)
58
+ @user ||= User.find(params[:user_id])
59
+ @years_in_review = @user.years_in_review_music
60
+ @years_in_review = @years_in_review.published unless current_user.try(:id) == @user.id
61
+ @years_in_review = @years_in_review.order('year DESC').paginate(per_page: 10, page: params[:page] || 1)
40
62
  end
41
63
  end
@@ -8,4 +8,8 @@ class MusicMetadataEnrichment::ApplicationController < ::ApplicationController
8
8
  def voluntary_application_javascripts
9
9
  ['voluntary/application', 'voluntary_music_metadata_enrichment/application', 'application']
10
10
  end
11
+
12
+ def voluntary_application_repository_path
13
+ 'volontariat/voluntary_music_metadata_enrichment'
14
+ end
11
15
  end
@@ -9,20 +9,21 @@ class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::Ap
9
9
 
10
10
  def index
11
11
  if request.xhr?
12
- if request.original_url.match('/groups/') && params[:id]
13
- @group = MusicMetadataEnrichment::Group.find(params[:id])
12
+ if params[:group_id].present? || request.original_url.match('/groups/') && params[:id]
13
+ @group = MusicMetadataEnrichment::Group.find(params[:group_id] || params[:id])
14
14
  @artists = @group.artists
15
+ @pagination_params = { group_id: (params[:group_id] || params[:id]) }
15
16
  elsif params[:user_id].present?
16
17
  @artists = User.find(params[:user_id]).music_artists
17
18
  end
18
19
 
19
20
  @artists = @artists.order('name ASC').paginate(per_page: 10, page: params[:page] || 1)
20
21
 
21
- if request.original_url.match('/groups/') && params[:id] && @artists.any?
22
+ if @group && @artists.any?
22
23
  @group_artist_connections = @group.artist_connections.where('music_metadata_enrichment_group_artist_connections.artist_id IN(?)', @artists.map(&:id))
23
24
 
24
25
  if user_signed_in?
25
- @group_artist_connection_likes = current_user.likes_or_dislikes.for_targets('MusicMetadataEnrichment::GroupArtistConnection', @group_artist_connections.map(&:id)).index_by(&:target_id)
26
+ @group_artist_connection_likes = MusicMetadataEnrichment::GroupArtistConnection.likes_or_dislikes_for(current_user, @group_artist_connections.map(&:id))
26
27
  end
27
28
 
28
29
  @group_artist_connections = @group_artist_connections.index_by(&:artist_id)
@@ -36,7 +37,7 @@ class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::Ap
36
37
 
37
38
  def autocomplete
38
39
  render json: (
39
- MusicArtist.select('id, name').where("name LIKE ?", "#{params[:term]}%").order(:name).limit(10).map{|a| { id: a.id, value: a.name } }
40
+ MusicArtist.select('id, name, disambiguation').where("LOWER(name) LIKE ?", "#{params[:term].to_s.strip.downcase}%").order(:name).limit(10).map{|a| { id: a.id, value: a.name + (a.disambiguation.present? ? " (#{a.disambiguation})" : '') } }
40
41
  ), root: false
41
42
  end
42
43
 
@@ -52,6 +53,7 @@ class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::Ap
52
53
  params[:music_artist] ||= {}
53
54
  name_and_mbid = params[:music_artist].delete(:name_and_mbid)
54
55
  create_artist('new_artist', name_and_mbid)
56
+ redirect_after_artist_available(from)
55
57
  end
56
58
 
57
59
  def show
@@ -60,13 +62,13 @@ class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::Ap
60
62
  end
61
63
 
62
64
  def by_name
63
- if params[:name].blank?
64
- flash[:alert] = I18n.t('music_artists.by_name.name_blank')
65
- redirect_to music_artists_path and return
66
- end
65
+ if params[:name].blank?
66
+ flash[:alert] = I18n.t('music_artists.by_name.name_blank')
67
+ redirect_to music_artists_path and return
68
+ end
67
69
 
68
- @artists = MusicArtist.where("LOWER(name) = ?", params[:name].downcase.strip)
69
- @artist = @artists.first if params[:page].blank? && @artists.count == 1
70
+ @artists = MusicArtist.where("LOWER(name) = ?", params[:name].downcase.strip)
71
+ @artist = @artists.first if params[:page].blank? && @artists.count == 1
70
72
 
71
73
  if @artist
72
74
  get_variables_for_show
@@ -90,4 +92,4 @@ class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::Ap
90
92
  def get_variables_for_show
91
93
  @releases = @artist.releases.order('released_at ASC')
92
94
  end
93
- end
95
+ end