Models refactoring, artist page draft
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
class ApplicationController < ActionController::Base
|
||||
protect_from_forgery
|
||||
require 'pp'
|
||||
#require 'cobravsmongoose'
|
||||
end
|
||||
|
||||
@@ -1,11 +1,7 @@
|
||||
# encoding: utf-8
|
||||
class ArtistController < ApplicationController
|
||||
require 'open-uri'
|
||||
def view
|
||||
@artist = Artist.getByName(params[:name])
|
||||
@albums = ReleaseGroup.getArtistAlbums(@artist.id)
|
||||
rg_ids = []
|
||||
@albums.each do |a|
|
||||
rg_ids << a.id
|
||||
end
|
||||
@releases = Release.getReleases(rg_ids, true, true);
|
||||
@artist = Artist.getByName(params[:name].gsub('+', ' ').gsub('%20', ' '))
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
class Album < ActiveRecord::Base
|
||||
set_table_name 'musicbrainz.bh_release_group'
|
||||
belongs_to :artist
|
||||
has_many :releases, :conditions => "release_type = 1", :order => 'date ASC, id ASC'
|
||||
end
|
||||
@@ -1,5 +1,7 @@
|
||||
class Artist < ActiveRecord::Base
|
||||
set_table_name 'musicbrainz.bh_artist'
|
||||
has_many :albums, :conditions => "release_type = 1", :order => 'year ASC, id ASC'
|
||||
|
||||
def self.getByName(name)
|
||||
Artist.first(:conditions => ['name = ? AND id=credit_id', name], :order => 'rating DESC')
|
||||
end
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
class Release < ActiveRecord::Base
|
||||
set_table_name 'musicbrainz.bh_release'
|
||||
def self.getReleases(release_groups, group_by_release = false, only_official = false)
|
||||
releases = Release.all(
|
||||
:conditions => [
|
||||
'release_group IN(?) AND '+
|
||||
(only_official ? 'release_type=1' : 'release_type IS NOT NULL'), release_groups
|
||||
],
|
||||
:order => 'date ASC, id ASC'
|
||||
)
|
||||
if group_by_release
|
||||
g_releases = {}
|
||||
releases.each do |release|
|
||||
if g_releases[release.release_group].nil?
|
||||
g_releases[release.release_group] = {}
|
||||
end
|
||||
g_releases[release.release_group] << release
|
||||
end
|
||||
return g_releases
|
||||
end
|
||||
return releases
|
||||
end
|
||||
belongs_to :album
|
||||
has_many :tracks, :order => 'position ASC'
|
||||
end
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
class ReleaseGroup < ActiveRecord::Base
|
||||
set_table_name 'musicbrainz.bh_release_group'
|
||||
def self.getArtistAlbums(artist_id)
|
||||
ReleaseGroup.all(:conditions => ['artist_id = ? AND release_type=1', artist_id], :order => 'year ASC, id ASC')
|
||||
end
|
||||
end
|
||||
@@ -1,59 +1,12 @@
|
||||
class Track < ActiveRecord::Base
|
||||
set_table_name 'musicbrainz.bh_track'
|
||||
belongs_to :release
|
||||
|
||||
@@bad_names = [
|
||||
'[silence]'
|
||||
]
|
||||
|
||||
def self.getReleaseTracks(release_ids, group_by_release = false)
|
||||
|
||||
tracks = Track
|
||||
.all(:conditions => ['release_id IN(?)', release_ids], :order => 'release_id ASC, position ASC')
|
||||
.map{|track| track.length = (track.length /= 1000).round; track}
|
||||
|
||||
if group_by_release
|
||||
g_tracks = {}
|
||||
tracks.each do |track|
|
||||
if g_tracks[track.release_id].nil?
|
||||
g_tracks[track.release_id] = {}
|
||||
end
|
||||
g_tracks[track.release_id][track.id] = track
|
||||
end
|
||||
return g_tracks
|
||||
end
|
||||
|
||||
tracks
|
||||
def convertLength
|
||||
(length /= 1000).round!
|
||||
end
|
||||
|
||||
def self.getUniqueReleaseTracks(release_ids)
|
||||
tracks = self.getReleaseTracks(release_ids, true)
|
||||
|
||||
unique_tracks = []
|
||||
track_list = {
|
||||
'album' => [],
|
||||
'bonus' => []
|
||||
}
|
||||
|
||||
tracks.shift[1].each do |track|
|
||||
unless @@bad_names.include?(track[1].name)
|
||||
track_list['album'] << track[1]
|
||||
unique_tracks << self.clearName(track[1].name)
|
||||
end
|
||||
end
|
||||
|
||||
tracks.each do |group|
|
||||
group.each do |track|
|
||||
unless @@bad_names.include?(track[1].name) && unique_tracks.include?(self.clearName(track[1].name))
|
||||
track_list['bonus'] << track[1]
|
||||
unique_tracks << self.clearName(track[1].name)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
track_list
|
||||
end
|
||||
|
||||
def self.clearName(name)
|
||||
def clearName
|
||||
name.gsub('&', 'and').gsub(/[^a-z0-9]/, '').downcase
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1 +1,22 @@
|
||||
<h1><%= @artist.name %></h1>
|
||||
<h1 class="artist"><%= @artist.name %></h1>
|
||||
<% @artist.albums.each do |album| %>
|
||||
<% if album.releases.length > 0 %>
|
||||
<div class="album">
|
||||
<div class="pic"></div>
|
||||
<h3 class="name"><%= album.name %> (<%= album.year %>)</h3>
|
||||
<%
|
||||
releases = album.releases
|
||||
first_release = releases.first
|
||||
%>
|
||||
<ul class="tracks">
|
||||
<% first_release.tracks.each do |track| %>
|
||||
<li>
|
||||
<span class="play"></span>
|
||||
<span class="track-name"><%= track.name %></span>
|
||||
<span class="duration"><%= track.length %></span>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
@@ -1,14 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Beathaven</title>
|
||||
<title>BeatHaven</title>
|
||||
<%= stylesheet_link_tag :all %>
|
||||
<%= javascript_include_tag :defaults %>
|
||||
<%= csrf_meta_tag %>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<%= yield %>
|
||||
|
||||
<div id="contents">
|
||||
<div class="inner-1">
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user