voluntary_music_metadata_enrichment 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +23 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/application.js +5 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/groups/show.js.coffee +14 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/index.js.coffee +19 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_releases/index_view.js.coffee +32 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_releases/new_view.js.coffee +31 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_tracks/index_view.js.coffee +32 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/year_in_review_tracks/new_view.js.coffee +31 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/library/years_in_review/index_view.js.coffee +36 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/tracks/show.js.coffee +2 -0
- data/app/assets/javascripts/voluntary_music_metadata_enrichment/videos/metadata.js.coffee +6 -0
- data/app/controllers/concerns/music_metadata_enrichment/artist_confirmation.rb +207 -0
- data/app/controllers/concerns/music_metadata_enrichment/base_controller.rb +17 -0
- data/app/controllers/concerns/music_metadata_enrichment/track_confirmation.rb +57 -0
- data/app/controllers/library/music/artists_controller.rb +26 -0
- data/app/controllers/library/music/year_in_review_releases_controller.rb +110 -0
- data/app/controllers/library/music/year_in_review_tracks_controller.rb +110 -0
- data/app/controllers/library/music/years_in_review_controller.rb +41 -0
- data/app/controllers/library/music_controller.rb +14 -0
- data/app/controllers/music_metadata_enrichment/application_controller.rb +11 -0
- data/app/controllers/music_metadata_enrichment/artists_controller.rb +93 -0
- data/app/controllers/music_metadata_enrichment/group_artist_connections_controller.rb +63 -0
- data/app/controllers/music_metadata_enrichment/groups_controller.rb +40 -0
- data/app/controllers/music_metadata_enrichment/releases_controller.rb +207 -0
- data/app/controllers/music_metadata_enrichment/tracks_controller.rb +82 -0
- data/app/controllers/music_metadata_enrichment/videos_controller.rb +133 -0
- data/app/controllers/product/music_metadata_enrichment_controller.rb +6 -0
- data/app/models/concerns/year_in_review_music_entry.rb +12 -0
- data/app/models/music_artist.rb +155 -0
- data/app/models/music_library_artist.rb +10 -0
- data/app/models/music_metadata_enrichment/group.rb +136 -0
- data/app/models/music_metadata_enrichment/group_artist_connection.rb +15 -0
- data/app/models/music_release.rb +278 -0
- data/app/models/music_track.rb +255 -0
- data/app/models/music_video.rb +87 -0
- data/app/models/product/music_metadata_enrichment.rb +2 -0
- data/app/models/year_in_review_music.rb +233 -0
- data/app/models/year_in_review_music_release.rb +24 -0
- data/app/models/year_in_review_music_track.rb +28 -0
- data/app/views/library/music/artists/destroy.js.erb +1 -0
- data/app/views/library/music/index.html.erb +46 -0
- data/app/views/library/music/year_in_review_releases/_collection.html.erb +51 -0
- data/app/views/library/music/year_in_review_releases/_form.html.erb +18 -0
- data/app/views/library/music/year_in_review_releases/_multiple_form.html.erb +44 -0
- data/app/views/library/music/year_in_review_releases/create.js.erb +11 -0
- data/app/views/library/music/year_in_review_releases/destroy.js.erb +2 -0
- data/app/views/library/music/year_in_review_releases/export.html.erb +13 -0
- data/app/views/library/music/year_in_review_releases/index.html.erb +22 -0
- data/app/views/library/music/year_in_review_releases/multiple_new.html.erb +1 -0
- data/app/views/library/music/year_in_review_releases/multiple_new.js.erb +7 -0
- data/app/views/library/music/year_in_review_releases/new.html.erb +1 -0
- data/app/views/library/music/year_in_review_tracks/_collection.html.erb +52 -0
- data/app/views/library/music/year_in_review_tracks/_form.html.erb +18 -0
- data/app/views/library/music/year_in_review_tracks/_multiple_form.html.erb +46 -0
- data/app/views/library/music/year_in_review_tracks/create.js.erb +11 -0
- data/app/views/library/music/year_in_review_tracks/destroy.js.erb +2 -0
- data/app/views/library/music/year_in_review_tracks/export.html.erb +13 -0
- data/app/views/library/music/year_in_review_tracks/index.html.erb +22 -0
- data/app/views/library/music/year_in_review_tracks/multiple_new.html.erb +1 -0
- data/app/views/library/music/year_in_review_tracks/multiple_new.js.erb +7 -0
- data/app/views/library/music/year_in_review_tracks/new.html.erb +1 -0
- data/app/views/library/music/years_in_review/_collection.html.erb +52 -0
- data/app/views/library/music/years_in_review/create.js.erb +6 -0
- data/app/views/library/music/years_in_review/index.html.erb +18 -0
- data/app/views/library/music/years_in_review/show.html.erb +20 -0
- data/app/views/music_metadata_enrichment/artists/_collection.html.erb +68 -0
- data/app/views/music_metadata_enrichment/artists/by_name.html.erb +3 -0
- data/app/views/music_metadata_enrichment/artists/index.html.erb +7 -0
- data/app/views/music_metadata_enrichment/artists/name_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/artists/new.html.erb +1 -0
- data/app/views/music_metadata_enrichment/artists/show.html.erb +24 -0
- data/app/views/music_metadata_enrichment/group_artist_connections/import.html.erb +6 -0
- data/app/views/music_metadata_enrichment/group_artist_connections/index.html.erb +0 -0
- data/app/views/music_metadata_enrichment/group_artist_connections/name_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/group_artist_connections/new.html.erb +1 -0
- data/app/views/music_metadata_enrichment/groups/index.html.erb +0 -0
- data/app/views/music_metadata_enrichment/groups/new.html.erb +7 -0
- data/app/views/music_metadata_enrichment/groups/show.html.erb +31 -0
- data/app/views/music_metadata_enrichment/releases/_collection.html.erb +53 -0
- data/app/views/music_metadata_enrichment/releases/announce.html.erb +10 -0
- data/app/views/music_metadata_enrichment/releases/artist_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/releases/by_name.html.erb +24 -0
- data/app/views/music_metadata_enrichment/releases/export.html.erb +17 -0
- data/app/views/music_metadata_enrichment/releases/index.html.erb +8 -0
- data/app/views/music_metadata_enrichment/releases/name.html.erb +9 -0
- data/app/views/music_metadata_enrichment/releases/name_confirmation.html.erb +33 -0
- data/app/views/music_metadata_enrichment/releases/new.html.erb +1 -0
- data/app/views/music_metadata_enrichment/releases/show.html.erb +50 -0
- data/app/views/music_metadata_enrichment/shared/_artist_confirmation_form.html.erb +41 -0
- data/app/views/music_metadata_enrichment/shared/_new_artist_form.html.erb +10 -0
- data/app/views/music_metadata_enrichment/shared/_new_track_form.html.erb +9 -0
- data/app/views/music_metadata_enrichment/shared/_track_confirmation_form.html.erb +29 -0
- data/app/views/music_metadata_enrichment/tracks/_spotify_track_player.html.erb +3 -0
- data/app/views/music_metadata_enrichment/tracks/artist_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/tracks/by_name.html.erb +26 -0
- data/app/views/music_metadata_enrichment/tracks/index.html.erb +8 -0
- data/app/views/music_metadata_enrichment/tracks/name.html.erb +1 -0
- data/app/views/music_metadata_enrichment/tracks/name_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/tracks/new.html.erb +1 -0
- data/app/views/music_metadata_enrichment/tracks/show.html.erb +21 -0
- data/app/views/music_metadata_enrichment/videos/_collection.html.erb +25 -0
- data/app/views/music_metadata_enrichment/videos/artist_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/videos/by_name.html.erb +3 -0
- data/app/views/music_metadata_enrichment/videos/index.html.erb +8 -0
- data/app/views/music_metadata_enrichment/videos/metadata.html.erb +25 -0
- data/app/views/music_metadata_enrichment/videos/new.html.erb +1 -0
- data/app/views/music_metadata_enrichment/videos/show.html.erb +9 -0
- data/app/views/music_metadata_enrichment/videos/track_confirmation.html.erb +1 -0
- data/app/views/music_metadata_enrichment/videos/track_name.html.erb +1 -0
- data/app/views/product/music_metadata_enrichment/index.html.erb +6 -0
- data/config/locales/en.yml +16 -0
- data/config/locales/resources/music_artists/en.yml +43 -0
- data/config/locales/resources/music_library/en.yml +8 -0
- data/config/locales/resources/music_metadata_enrichment_group_artist_connections/en.yml +19 -0
- data/config/locales/resources/music_metadata_enrichment_groups/en.yml +25 -0
- data/config/locales/resources/music_releases/en.yml +67 -0
- data/config/locales/resources/music_tracks/en.yml +45 -0
- data/config/locales/resources/music_videos/en.yml +56 -0
- data/config/locales/resources/year_in_review_music_releases/en.yml +19 -0
- data/config/locales/resources/year_in_review_music_tracks/en.yml +19 -0
- data/config/locales/resources/years_in_review_music/en.yml +21 -0
- data/config/main_music_metadata_enrichment_navigation.rb +3 -0
- data/config/routes.rb +121 -0
- data/db/migrate/20150106183434_add_product_music_metadata_enrichment.rb +96 -0
- data/db/migrate/20150120091801_create_music_metadata_enrichment_groups.rb +28 -0
- data/db/migrate/20150120221419_create_music_library_artists.rb +12 -0
- data/db/migrate/20150123082224_year_in_review_music_entries.rb +53 -0
- data/lib/tasks/voluntary_music_metadata_enrichment_tasks.rake +4 -0
- data/lib/voluntary_music_metadata_enrichment/ability.rb +27 -0
- data/lib/voluntary_music_metadata_enrichment/concerns/model/user/has_music_library.rb +101 -0
- data/lib/voluntary_music_metadata_enrichment/engine.rb +20 -0
- data/lib/voluntary_music_metadata_enrichment/navigation.rb +49 -0
- data/lib/voluntary_music_metadata_enrichment/version.rb +3 -0
- data/lib/voluntary_music_metadata_enrichment.rb +13 -0
- metadata +525 -0
@@ -0,0 +1,110 @@
|
|
1
|
+
class Library::Music::YearInReviewReleasesController < ::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: 'YearInReviewMusicRelease'
|
7
|
+
|
8
|
+
def index
|
9
|
+
@user = User.find(params[:user_id])
|
10
|
+
find_year_in_review
|
11
|
+
get_year_in_review_releases
|
12
|
+
|
13
|
+
render partial: 'library/music/year_in_review_releases/collection' if request.xhr?
|
14
|
+
end
|
15
|
+
|
16
|
+
def new
|
17
|
+
build_resource
|
18
|
+
render layout: false
|
19
|
+
end
|
20
|
+
|
21
|
+
def multiple_new
|
22
|
+
@user = current_user
|
23
|
+
find_year_in_review
|
24
|
+
@releases = current_user.music_releases.for_year_in_review(@year_in_review)
|
25
|
+
@releases = @releases.where('music_releases.id > ?', params[:last_id]) if params[:last_id].present?
|
26
|
+
@releases_left = @releases.count
|
27
|
+
@releases = @releases.order('music_releases.id ASC').limit(10)
|
28
|
+
params[:last_id] = params[:commit] == I18n.t('general.close') || @releases.none? ? nil : @releases.last.id
|
29
|
+
|
30
|
+
if params[:commit] != I18n.t('general.close') && params[:year_in_review_music_releases].present?
|
31
|
+
params[:year_in_review_music_releases].each do |release_id, checked|
|
32
|
+
next unless checked == '1'
|
33
|
+
|
34
|
+
@year_in_review_release = @year_in_review.releases.create(release_id: release_id)
|
35
|
+
|
36
|
+
next unless @year_in_review_release.persisted?
|
37
|
+
|
38
|
+
MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_release.artist_id)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
if params[:commit] == I18n.t('general.close') || @releases.none?
|
43
|
+
get_year_in_review_releases
|
44
|
+
params[:user_id] = current_user.id
|
45
|
+
end
|
46
|
+
|
47
|
+
render layout: false
|
48
|
+
end
|
49
|
+
|
50
|
+
def create
|
51
|
+
build_resource
|
52
|
+
|
53
|
+
if @year_in_review_release.save
|
54
|
+
MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_release.artist_id)
|
55
|
+
@notice = I18n.t('year_in_review_music_releases.create.successful')
|
56
|
+
get_year_in_review_releases
|
57
|
+
end
|
58
|
+
|
59
|
+
render layout: false
|
60
|
+
end
|
61
|
+
|
62
|
+
def move
|
63
|
+
@year_in_review_release.insert_at(params[:position].to_i)
|
64
|
+
|
65
|
+
render nothing: true
|
66
|
+
end
|
67
|
+
|
68
|
+
def destroy
|
69
|
+
@year_in_review_release.destroy!
|
70
|
+
@user = current_user
|
71
|
+
params[:user_id], params[:year] = current_user.id, @year_in_review_release.year
|
72
|
+
find_year_in_review
|
73
|
+
get_year_in_review_releases
|
74
|
+
|
75
|
+
render layout: false
|
76
|
+
end
|
77
|
+
|
78
|
+
def export
|
79
|
+
@user = current_user
|
80
|
+
find_year_in_review
|
81
|
+
get_year_in_review_releases
|
82
|
+
|
83
|
+
render layout: false
|
84
|
+
end
|
85
|
+
|
86
|
+
def resource
|
87
|
+
@year_in_review_release
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
|
92
|
+
def find_year_in_review
|
93
|
+
@year_in_review = @user.years_in_review_music.where(year: params[:year]).first
|
94
|
+
end
|
95
|
+
|
96
|
+
def build_resource
|
97
|
+
@user = current_user
|
98
|
+
find_year_in_review
|
99
|
+
params[:year_in_review_music_release] ||= {}
|
100
|
+
@year_in_review_release = @year_in_review.releases.new(release_id: params[:year_in_review_music_release][:release_id])
|
101
|
+
end
|
102
|
+
|
103
|
+
def find_resource
|
104
|
+
@year_in_review_release = YearInReviewMusicRelease.find(params[:id])
|
105
|
+
end
|
106
|
+
|
107
|
+
def get_year_in_review_releases
|
108
|
+
@year_in_review_releases = @year_in_review.releases.order('position ASC')
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
class Library::Music::YearInReviewTracksController < ::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: 'YearInReviewMusicTrack'
|
7
|
+
|
8
|
+
def index
|
9
|
+
@user = User.find(params[:user_id])
|
10
|
+
find_year_in_review
|
11
|
+
get_year_in_review_tracks
|
12
|
+
|
13
|
+
render partial: 'library/music/year_in_review_tracks/collection' if request.xhr?
|
14
|
+
end
|
15
|
+
|
16
|
+
def new
|
17
|
+
build_resource
|
18
|
+
render layout: false
|
19
|
+
end
|
20
|
+
|
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)
|
35
|
+
|
36
|
+
next unless @year_in_review_track.persisted?
|
37
|
+
|
38
|
+
MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track.artist_id)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
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
|
+
render layout: false
|
48
|
+
end
|
49
|
+
|
50
|
+
def create
|
51
|
+
build_resource
|
52
|
+
|
53
|
+
if @year_in_review_track.save
|
54
|
+
MusicLibraryArtist.create(user_id: current_user.id, artist_id: @year_in_review_track.artist_id)
|
55
|
+
@notice = I18n.t('year_in_review_music_tracks.create.successful')
|
56
|
+
get_year_in_review_tracks
|
57
|
+
end
|
58
|
+
|
59
|
+
render layout: false
|
60
|
+
end
|
61
|
+
|
62
|
+
def move
|
63
|
+
@year_in_review_track.insert_at(params[:position].to_i)
|
64
|
+
|
65
|
+
render nothing: true
|
66
|
+
end
|
67
|
+
|
68
|
+
def destroy
|
69
|
+
@year_in_review_track.destroy!
|
70
|
+
@user = current_user
|
71
|
+
params[:user_id], params[:year] = current_user.id, @year_in_review_track.year
|
72
|
+
find_year_in_review
|
73
|
+
get_year_in_review_tracks
|
74
|
+
|
75
|
+
render layout: false
|
76
|
+
end
|
77
|
+
|
78
|
+
def export
|
79
|
+
@user = current_user
|
80
|
+
find_year_in_review
|
81
|
+
get_year_in_review_tracks
|
82
|
+
|
83
|
+
render layout: false
|
84
|
+
end
|
85
|
+
|
86
|
+
def resource
|
87
|
+
@year_in_review_track
|
88
|
+
end
|
89
|
+
|
90
|
+
private
|
91
|
+
|
92
|
+
def find_year_in_review
|
93
|
+
@year_in_review = @user.years_in_review_music.where(year: params[:year]).first
|
94
|
+
end
|
95
|
+
|
96
|
+
def build_resource
|
97
|
+
@user = current_user
|
98
|
+
find_year_in_review
|
99
|
+
params[:year_in_review_music_track] ||= {}
|
100
|
+
@year_in_review_track = @year_in_review.tracks.new(track_id: params[:year_in_review_music_track][:track_id])
|
101
|
+
end
|
102
|
+
|
103
|
+
def find_resource
|
104
|
+
@year_in_review_track = YearInReviewMusicTrack.find(params[:id])
|
105
|
+
end
|
106
|
+
|
107
|
+
def get_year_in_review_tracks
|
108
|
+
@year_in_review_tracks = @year_in_review.tracks.order('position ASC')
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Library::Music::YearsInReviewController < ::MusicMetadataEnrichment::ApplicationController
|
2
|
+
include ::MusicMetadataEnrichment::BaseController
|
3
|
+
include Applicat::Mvc::Controller::Resource
|
4
|
+
|
5
|
+
authorize_resource class: 'YearInReviewMusic'
|
6
|
+
|
7
|
+
def index
|
8
|
+
get_years_in_review
|
9
|
+
build_year_in_review if user_signed_in?
|
10
|
+
|
11
|
+
render layout: false if request.xhr?
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
build_year_in_review
|
16
|
+
get_years_in_review
|
17
|
+
@notice = I18n.t('years_in_review_music.create.successful') if @year_in_review.save
|
18
|
+
render layout: false
|
19
|
+
end
|
20
|
+
|
21
|
+
def show
|
22
|
+
@user = User.find(params[:user_id])
|
23
|
+
@year_in_review = @user.years_in_review_music.where(year: params[:year]).first
|
24
|
+
end
|
25
|
+
|
26
|
+
def resource
|
27
|
+
@year_in_review
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def build_year_in_review
|
33
|
+
params[:year_in_review] ||= {}
|
34
|
+
@year_in_review = current_user.years_in_review_music.new(year: params[:year_in_review][:year])
|
35
|
+
end
|
36
|
+
|
37
|
+
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)
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class Library::MusicController < ::MusicMetadataEnrichment::ApplicationController
|
2
|
+
include ::MusicMetadataEnrichment::BaseController
|
3
|
+
include Applicat::Mvc::Controller::Resource
|
4
|
+
|
5
|
+
def index
|
6
|
+
@year = Time.now.strftime('%Y')
|
7
|
+
@user = User.find(params[:user_id])
|
8
|
+
@releases = @user.music_releases.released_in_year(@year).order('released_at DESC')
|
9
|
+
end
|
10
|
+
|
11
|
+
def resource
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class MusicMetadataEnrichment::ApplicationController < ::ApplicationController
|
2
|
+
protected
|
3
|
+
|
4
|
+
def voluntary_application_stylesheets
|
5
|
+
['voluntary/application', 'application']
|
6
|
+
end
|
7
|
+
|
8
|
+
def voluntary_application_javascripts
|
9
|
+
['voluntary/application', 'voluntary_music_metadata_enrichment/application', 'application']
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
class MusicMetadataEnrichment::ArtistsController < ::MusicMetadataEnrichment::ApplicationController
|
2
|
+
include ::MusicMetadataEnrichment::BaseController
|
3
|
+
include Applicat::Mvc::Controller::Resource
|
4
|
+
include ::MusicMetadataEnrichment::ArtistConfirmation
|
5
|
+
|
6
|
+
authorize_resource class: 'MusicArtist', except: [:by_name]
|
7
|
+
|
8
|
+
before_action :delete_user_id_which_is_not_from_current_user
|
9
|
+
|
10
|
+
def index
|
11
|
+
if request.xhr?
|
12
|
+
if request.original_url.match('/groups/') && params[:id]
|
13
|
+
@group = MusicMetadataEnrichment::Group.find(params[:id])
|
14
|
+
@artists = @group.artists
|
15
|
+
elsif params[:user_id].present?
|
16
|
+
@artists = User.find(params[:user_id]).music_artists
|
17
|
+
end
|
18
|
+
|
19
|
+
@artists = @artists.order('name ASC').paginate(per_page: 10, page: params[:page] || 1)
|
20
|
+
|
21
|
+
if request.original_url.match('/groups/') && params[:id] && @artists.any?
|
22
|
+
@group_artist_connections = @group.artist_connections.where('music_metadata_enrichment_group_artist_connections.artist_id IN(?)', @artists.map(&:id))
|
23
|
+
|
24
|
+
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
|
+
end
|
27
|
+
|
28
|
+
@group_artist_connections = @group_artist_connections.index_by(&:artist_id)
|
29
|
+
elsif params[:user_id].present? && current_user.try(:id) == params[:user_id].to_i && @artists.any?
|
30
|
+
@music_library_artists = current_user.music_library_artists.where('music_library_artists.artist_id IN(?)', @artists.map(&:id)).index_by(&:artist_id)
|
31
|
+
end
|
32
|
+
|
33
|
+
render partial: 'music_metadata_enrichment/artists/collection', layout: false, locals: { title: I18n.t("music_metadata_enrichment_group_artist_connections.index.empty_collection"), paginate: true }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def autocomplete
|
38
|
+
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
|
+
), root: false
|
41
|
+
end
|
42
|
+
|
43
|
+
def new
|
44
|
+
build_artist
|
45
|
+
end
|
46
|
+
|
47
|
+
def name_confirmation
|
48
|
+
confirm_artist('new_artist')
|
49
|
+
end
|
50
|
+
|
51
|
+
def create
|
52
|
+
params[:music_artist] ||= {}
|
53
|
+
name_and_mbid = params[:music_artist].delete(:name_and_mbid)
|
54
|
+
create_artist('new_artist', name_and_mbid)
|
55
|
+
end
|
56
|
+
|
57
|
+
def show
|
58
|
+
@artist = MusicArtist.find(params[:id])
|
59
|
+
get_variables_for_show
|
60
|
+
end
|
61
|
+
|
62
|
+
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
|
67
|
+
|
68
|
+
@artists = MusicArtist.where("LOWER(name) = ?", params[:name].downcase.strip)
|
69
|
+
@artist = @artists.first if params[:page].blank? && @artists.count == 1
|
70
|
+
|
71
|
+
if @artist
|
72
|
+
get_variables_for_show
|
73
|
+
render :show
|
74
|
+
else
|
75
|
+
@artists = MusicArtist.name_like(params[:name]) if @artists.nil? || @artists.count == 0
|
76
|
+
@artists = @artists.paginate(per_page: 10, page: params[:page] || 1)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
def resource
|
81
|
+
@artist
|
82
|
+
end
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
def delete_user_id_which_is_not_from_current_user
|
87
|
+
params.delete(:user_id) if action_name != 'index' && params[:user_id].present? && params[:user_id].to_i != current_user.try(:id)
|
88
|
+
end
|
89
|
+
|
90
|
+
def get_variables_for_show
|
91
|
+
@releases = @artist.releases.order('released_at ASC')
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
class MusicMetadataEnrichment::GroupArtistConnectionsController < ::MusicMetadataEnrichment::ApplicationController
|
2
|
+
include ::MusicMetadataEnrichment::BaseController
|
3
|
+
include Applicat::Mvc::Controller::Resource
|
4
|
+
include ::MusicMetadataEnrichment::ArtistConfirmation
|
5
|
+
|
6
|
+
authorize_resource class: 'MusicMetadataEnrichment::GroupArtistConnection'
|
7
|
+
|
8
|
+
def import
|
9
|
+
@group = MusicMetadataEnrichment::Group.find(params[:group_id])
|
10
|
+
|
11
|
+
if params[:music_metadata_enrichment_group].present?
|
12
|
+
@group.artist_connections_text = params[:music_metadata_enrichment_group][:artist_connections_text]
|
13
|
+
artist_names_without_mbid = @group.import_artist_connections
|
14
|
+
|
15
|
+
if artist_names_without_mbid.any?
|
16
|
+
flash[:notice] = I18n.t(
|
17
|
+
'music_metadata_enrichment_group_artist_connections.import.success_with_missing_artist_mbids', artist_names: artist_names_without_mbid.join(', ')
|
18
|
+
)
|
19
|
+
else
|
20
|
+
flash[:notice] = I18n.t('music_metadata_enrichment_group_artist_connections.import.success')
|
21
|
+
end
|
22
|
+
|
23
|
+
redirect_to music_group_path(@group.id)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def new
|
28
|
+
build_artist
|
29
|
+
end
|
30
|
+
|
31
|
+
def name_confirmation
|
32
|
+
confirm_artist('new_group_artist_connection')
|
33
|
+
end
|
34
|
+
|
35
|
+
def select_artist
|
36
|
+
artist_selection('new_group_artist_connection')
|
37
|
+
end
|
38
|
+
|
39
|
+
def creation
|
40
|
+
if MusicMetadataEnrichment::GroupArtistConnection.where(
|
41
|
+
group_id: params[:group_artist_connection][:group_id], artist_id: params[:group_artist_connection][:artist_id]
|
42
|
+
).any?
|
43
|
+
flash[:alert] = I18n.t('music_metadata_enrichment_group_artist_connections.creation.already_created')
|
44
|
+
redirect_to music_group_path(params[:group_artist_connection][:group_id])
|
45
|
+
else
|
46
|
+
@group_artist_connection = MusicMetadataEnrichment::GroupArtistConnection.new(
|
47
|
+
group_id: params[:group_artist_connection][:group_id], artist_id: params[:group_artist_connection][:artist_id]
|
48
|
+
)
|
49
|
+
|
50
|
+
if @group_artist_connection.save
|
51
|
+
flash[:notice] = I18n.t('music_metadata_enrichment_group_artist_connections.creation.success')
|
52
|
+
else
|
53
|
+
flash[:alert] = @group_artist_connection.errors.full_messages.join('. ')
|
54
|
+
end
|
55
|
+
|
56
|
+
redirect_to music_group_path(@group_artist_connection.group_id)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def resource
|
61
|
+
@group_artist_connection
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class MusicMetadataEnrichment::GroupsController < ::MusicMetadataEnrichment::ApplicationController
|
2
|
+
include ::MusicMetadataEnrichment::BaseController
|
3
|
+
include Applicat::Mvc::Controller::Resource
|
4
|
+
|
5
|
+
authorize_resource
|
6
|
+
|
7
|
+
def index
|
8
|
+
end
|
9
|
+
|
10
|
+
def new
|
11
|
+
build_group
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
build_group
|
16
|
+
|
17
|
+
if @group.save
|
18
|
+
flash[:notice] = I18n.t('music_metadata_enrichment_groups.create.successful')
|
19
|
+
redirect_to music_group_path(@group)
|
20
|
+
else
|
21
|
+
render :new
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def show
|
26
|
+
@group = MusicMetadataEnrichment::Group.find(params[:id])
|
27
|
+
@year = Time.now.strftime('%Y')
|
28
|
+
@releases = @group.releases.released_in_year(@year).order('released_at DESC')
|
29
|
+
end
|
30
|
+
|
31
|
+
def resource
|
32
|
+
@group
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def build_group
|
38
|
+
@group = MusicMetadataEnrichment::Group.new(params[:music_metadata_enrichment_group])
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
class MusicMetadataEnrichment::ReleasesController < ::MusicMetadataEnrichment::ApplicationController
|
3
|
+
include ::MusicMetadataEnrichment::BaseController
|
4
|
+
include Applicat::Mvc::Controller::Resource
|
5
|
+
include ::MusicMetadataEnrichment::ArtistConfirmation
|
6
|
+
|
7
|
+
authorize_resource class: 'MusicRelease', except: [:by_name, :export]
|
8
|
+
|
9
|
+
def index
|
10
|
+
if request.xhr?
|
11
|
+
@year = params[:year]
|
12
|
+
|
13
|
+
if request.original_url.match('/groups/') && params[:id]
|
14
|
+
@group = MusicMetadataEnrichment::Group.find(params[:id])
|
15
|
+
@releases = @group.releases
|
16
|
+
elsif params[:user_id].present?
|
17
|
+
@user = User.find(params[:user_id])
|
18
|
+
@releases = @user.music_releases
|
19
|
+
end
|
20
|
+
|
21
|
+
@releases = @releases.released_in_year(params[:year]).order('released_at DESC').paginate(per_page: 25, page: params[:page] || 1)
|
22
|
+
|
23
|
+
render partial: 'music_metadata_enrichment/releases/collection', locals: { paginate: true, with_artist: true }, layout: false
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def autocomplete
|
28
|
+
artist = MusicArtist.find(params[:artist_id])
|
29
|
+
render json: (
|
30
|
+
artist.releases.select('id, name').where("name LIKE ?", "#{params[:term]}%").order(:name).limit(10).map{|r| { id: r.id, value: r.name } }
|
31
|
+
), root: false
|
32
|
+
end
|
33
|
+
|
34
|
+
def new
|
35
|
+
if params[:artist_id].present?
|
36
|
+
redirect_to name_music_releases_path(music_release: { artist_id: params[:artist_id]})
|
37
|
+
else
|
38
|
+
build_artist
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def artist_confirmation
|
43
|
+
confirm_artist('new_release')
|
44
|
+
end
|
45
|
+
|
46
|
+
def select_artist
|
47
|
+
artist_selection('new_release')
|
48
|
+
end
|
49
|
+
|
50
|
+
def name
|
51
|
+
build_release
|
52
|
+
end
|
53
|
+
|
54
|
+
def name_confirmation
|
55
|
+
build_release
|
56
|
+
@release_groups = @release.groups
|
57
|
+
|
58
|
+
if @release_groups.none? && @release.groups_without_limitation.none?
|
59
|
+
flash[:notice] = I18n.t('music_releases.name_confirmation.release_not_found')
|
60
|
+
redirect_to announce_music_releases_path(
|
61
|
+
(params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(
|
62
|
+
music_release: { artist_id: params[:music_release][:artist_id], name: params[:music_release][:name] }
|
63
|
+
)
|
64
|
+
)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def create
|
69
|
+
params[:music_release] ||= {}
|
70
|
+
name_and_mbid = params[:music_release].delete(:name_and_mbid)
|
71
|
+
artist = MusicArtist.find(params[:music_release][:artist_id])
|
72
|
+
release = MusicRelease.where(artist_id: artist.id, name: name_and_mbid.split(';').first).first
|
73
|
+
|
74
|
+
if release
|
75
|
+
flash[:alert] = I18n.t('music_releases.create.release_already_imported')
|
76
|
+
else
|
77
|
+
release = MusicRelease.create(
|
78
|
+
artist_id: params[:music_release][:artist_id], artist_name: artist.name,
|
79
|
+
name: name_and_mbid.split(';').first
|
80
|
+
)
|
81
|
+
|
82
|
+
if release.valid?
|
83
|
+
flash[:notice] = I18n.t('music_releases.create.scheduled_release_for_import')
|
84
|
+
else
|
85
|
+
flash[:alert] = release.errors.full_messages.join('. ')
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
if params[:group_id].present?
|
90
|
+
redirect_to music_group_path(params[:group_id])
|
91
|
+
else
|
92
|
+
redirect_to music_path
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def announce
|
97
|
+
build_release
|
98
|
+
|
99
|
+
if MusicRelease.where(artist_id: @release.artist_id, name: @release.name).first
|
100
|
+
flash[:alert] = I18n.t('music_releases.create.release_already_imported')
|
101
|
+
|
102
|
+
if params[:group_id].present?
|
103
|
+
redirect_to music_group_path(params[:group_id])
|
104
|
+
else
|
105
|
+
redirect_to music_path
|
106
|
+
end
|
107
|
+
elsif @release.groups.any?
|
108
|
+
flash[:notice] = I18n.t('music_releases.announce.please_select_existing_release')
|
109
|
+
redirect_to name_confirmation_music_releases_path(
|
110
|
+
(params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(
|
111
|
+
music_release: { artist_id: params[:music_release][:artist_id], name: params[:music_release][:name] }
|
112
|
+
)
|
113
|
+
)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def create_announcement
|
118
|
+
build_release
|
119
|
+
|
120
|
+
if MusicRelease.where(artist_id: @release.artist_id, name: @release.name).first
|
121
|
+
flash[:alert] = I18n.t('music_releases.create.release_already_imported')
|
122
|
+
|
123
|
+
if params[:group_id].present?
|
124
|
+
redirect_to music_group_path(params[:group_id])
|
125
|
+
else
|
126
|
+
redirect_to music_path
|
127
|
+
end
|
128
|
+
elsif @release.groups.any?
|
129
|
+
flash[:notice] = I18n.t('music_releases.announce.please_select_existing_release')
|
130
|
+
redirect_to name_confirmation_music_releases_path(
|
131
|
+
(params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(
|
132
|
+
music_release: { artist_id: params[:music_release][:artist_id], name: params[:music_release][:name] }
|
133
|
+
)
|
134
|
+
)
|
135
|
+
elsif @release.future_release_date.blank? || !@release.valid?
|
136
|
+
if @release.future_release_date.blank?
|
137
|
+
@release.errors[:future_release_date] << I18n.t('errors.messages.blank')
|
138
|
+
end
|
139
|
+
|
140
|
+
render :announce
|
141
|
+
else
|
142
|
+
@release.save!
|
143
|
+
flash[:notice] = I18n.t('music_releases.create_announcement.success')
|
144
|
+
|
145
|
+
if params[:group_id].present?
|
146
|
+
redirect_to music_group_path(params[:group_id])
|
147
|
+
else
|
148
|
+
redirect_to music_path
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def show
|
154
|
+
@release = MusicRelease.find(params[:id])
|
155
|
+
get_variables_for_show
|
156
|
+
end
|
157
|
+
|
158
|
+
def by_name
|
159
|
+
if params[:artist_name].blank? || params[:name].blank?
|
160
|
+
flash[:alert] = I18n.t('music_releases.by_name.artist_name_or_name_blank')
|
161
|
+
redirect_to music_releases_path(artist_name: params[:artist_name], name: params[:name]) and return
|
162
|
+
end
|
163
|
+
|
164
|
+
@releases = MusicRelease.by_artist_and_name(params[:artist_name], params[:name])
|
165
|
+
@release = @releases.first if params[:page].blank? && @releases.count == 1
|
166
|
+
|
167
|
+
if @release
|
168
|
+
get_variables_for_show
|
169
|
+
render :show
|
170
|
+
else
|
171
|
+
@releases = MusicRelease.artist_and_name_like(params[:artist_name], params[:name]) if @releases.nil? || @releases.count == 0
|
172
|
+
@releases = @releases.paginate(per_page: 10, page: params[:page] || 1)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def export
|
177
|
+
@group = MusicMetadataEnrichment::Group.find(params[:id])
|
178
|
+
@current_releases = @group.releases.released_in_year(Time.now.strftime('%Y')).order('released_at ASC')
|
179
|
+
@future_releases = @group.releases.released_in_year(Time.now.strftime('%Y').to_i + 1).order('released_at ASC')
|
180
|
+
|
181
|
+
render layout: false
|
182
|
+
end
|
183
|
+
|
184
|
+
def resource
|
185
|
+
@release
|
186
|
+
end
|
187
|
+
|
188
|
+
private
|
189
|
+
|
190
|
+
def build_release
|
191
|
+
params[:music_release] ||= {}
|
192
|
+
@release = MusicRelease.new
|
193
|
+
@release.name = params[:music_release][:name]
|
194
|
+
@release.mbid = params[:music_release][:mbid] unless ['announce', 'create_announcement'].include? action_name
|
195
|
+
@release.artist_id = params[:music_release][:artist_id]
|
196
|
+
@release.future_release_date = params[:music_release][:future_release_date] if ['announce', 'create_announcement'].include? action_name
|
197
|
+
@release.user_id = current_user.id
|
198
|
+
end
|
199
|
+
|
200
|
+
def get_variables_for_show
|
201
|
+
if @release.name == '[Bonus Tracks]'
|
202
|
+
@tracks = @release.tracks.order('released_at ASC')
|
203
|
+
else
|
204
|
+
@tracks = @release.tracks.order('nr ASC')
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|