Class: MusicMetadataEnrichment::ReleasesController
Instance Method Summary
collapse
#artist_selection, #build_artist, #confirm_artist, #create_artist, #redirect_after_artist_available, #render_modal_javascript_response, #set_template_name_for_xhr_or_render
#application_navigation, #navigation_product_name, #navigation_product_path
Instance Method Details
#announce ⇒ Object
114
115
116
117
118
119
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 114
def announce
build_release
set_template_name_for_xhr_or_render
render_modal_javascript_response if request.xhr?
end
|
#artist_confirmation ⇒ Object
44
45
46
47
48
49
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 44
def artist_confirmation
confirm_artist('new_release')
set_template_name_for_xhr_or_render
render_modal_javascript_response if request.xhr?
end
|
#autocomplete ⇒ Object
27
28
29
30
31
32
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 27
def autocomplete
artist = MusicArtist.find(params[:artist_id])
render json: (
artist.releases.select('id, is_lp, name').where("LOWER(name) LIKE ?", "#{params[:term].to_s.strip.downcase}%").order(:name).limit(10).map{|r| { id: r.id, value: "#{r.name} (#{r.is_lp ? 'LP' : 'EP'})" } }
), root: false
end
|
#by_name ⇒ Object
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 149
def by_name
if params[:artist_name].blank? || params[:name].blank?
flash[:alert] = I18n.t('music_releases.by_name.artist_name_or_name_blank')
redirect_to music_releases_path(artist_name: params[:artist_name], name: params[:name]) and return
end
@releases = MusicRelease.by_artist_and_name([params[:artist_name], params[:name]])
@release = @releases.first if params[:page].blank? && @releases.count == 1
if @release
get_variables_for_show
render :show
else
@releases = MusicRelease.artist_and_name_like(params[:artist_name], params[:name]) if @releases.nil? || @releases.count == 0
@releases = @releases.paginate(per_page: 10, page: params[:page] || 1)
end
end
|
#create ⇒ Object
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 85
def create
params[:music_release] ||= {}
name_and_mbid = params[:music_release].delete(:name_and_mbid).split(';')
artist = MusicArtist.find(params[:music_release][:artist_id])
musicbrainz_release_group = MusicBrainz::ReleaseGroup.find(name_and_mbid.last)
is_lp = musicbrainz_release_group.type == 'Album'
@release = MusicRelease.where(artist_id: artist.id, name: name_and_mbid.first, is_lp: is_lp).first
if @release
flash[:alert] = I18n.t('music_releases.create.release_already_imported')
else
@release = MusicRelease.create(
artist_id: params[:music_release][:artist_id], artist_name: artist.name, name: name_and_mbid.first, is_lp: is_lp
)
if @release.persisted?
flash[:notice] = I18n.t('music_releases.create.scheduled_release_for_import')
else
flash[:alert] = release.errors.full_messages.join('. ')
end
end
add_to_year_in_review_music_top_releases if @release.persisted? && params[:year_in_review_music_id].present?
@path = (params[:group_id].present? ? music_group_path(params[:group_id]) : music_path) unless params[:year_in_review_music_id].present?
redirect_to @path unless @path.blank? || request.xhr?
render_modal_javascript_response if request.xhr?
end
|
#create_announcement ⇒ Object
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 121
def create_announcement
build_release
if @release.future_release_date.blank? || !@release.valid?
if @release.future_release_date.blank?
@release.errors[:future_release_date] << I18n.t('errors.messages.blank')
end
@template = :announce
else
@release.save!
flash[:notice] = I18n.t('music_releases.create_announcement.success')
@path = params[:group_id].present? ? music_group_path(params[:group_id]) : music_path
end
add_to_year_in_review_music_top_releases if @release.persisted? && params[:year_in_review_music_id].present?
render @template if @template.present? && !request.xhr?
redirect_to @path unless @path.blank? || request.xhr?
render_modal_javascript_response if request.xhr?
end
|
#export ⇒ Object
167
168
169
170
171
172
173
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 167
def export
@group = MusicMetadataEnrichment::Group.find(params[:id])
@current_releases = @group.releases.released_in_year(Time.now.strftime('%Y')).order('released_at ASC')
@future_releases = @group.releases.released_in_year(Time.now.strftime('%Y').to_i + 1).order('released_at ASC')
render layout: false
end
|
#index ⇒ Object
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 9
def index
if request.xhr?
@year = params[:year]
if request.original_url.match('/groups/') && params[:id]
@group = MusicMetadataEnrichment::Group.find(params[:id])
@releases = @group.releases
elsif params[:user_id].present?
@user = User.by_slug_or_id(params[:user_id])
@releases = @user.music_releases
end
@releases = @releases.released_in_year(params[:year]).order('released_at DESC').paginate(per_page: 25, page: params[:page] || 1)
render partial: 'music_metadata_enrichment/releases/collection', locals: { paginate: true, with_artist: true }, layout: false
end
end
|
#name ⇒ Object
58
59
60
61
62
63
64
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 58
def name
build_release
set_template_name_for_xhr_or_render
render_modal_javascript_response if request.xhr?
end
|
#name_confirmation ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 66
def name_confirmation
build_release
@release_groups = @release.groups(true)
if @release_groups.none?
flash[:notice] = I18n.t('music_releases.name_confirmation.release_not_found')
@path = announce_music_releases_path(
(params[:group_id].present? ? {group_id: params[:group_id]} : {}).merge(
music_release: { artist_id: params[:music_release][:artist_id], name: params[:music_release][:name] }
)
)
end
set_template_name_for_xhr_or_render
redirect_to @path unless @path.blank? || request.xhr?
render_modal_javascript_response if request.xhr?
end
|
#new ⇒ Object
34
35
36
37
38
39
40
41
42
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 34
def new
if params[:artist_id].present?
redirect_to name_music_releases_path(music_release: { artist_id: params[:artist_id]})
else
build_artist
end
set_template_name_for_xhr_or_render
end
|
#resource ⇒ Object
175
176
177
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 175
def resource
@release
end
|
#select_artist ⇒ Object
51
52
53
54
55
56
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 51
def select_artist
artist_selection('new_release')
set_template_name_for_xhr_or_render
render_modal_javascript_response if request.xhr?
end
|
#show ⇒ Object
144
145
146
147
|
# File 'app/controllers/music_metadata_enrichment/releases_controller.rb', line 144
def show
@release = MusicRelease.find(params[:id])
get_variables_for_show
end
|