Models refactoring, artist page draft

This commit is contained in:
magnolia-fan
2011-04-06 02:58:11 +04:00
parent d3d0f993c5
commit e14303c044
14 changed files with 18065 additions and 329 deletions
@@ -1,3 +1,5 @@
class ApplicationController < ActionController::Base
protect_from_forgery
require 'pp'
#require 'cobravsmongoose'
end
+3 -7
View File
@@ -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
+5
View File
@@ -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
+2
View File
@@ -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
+2 -20
View File
@@ -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
-6
View File
@@ -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
+4 -51
View File
@@ -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
+22 -1
View File
@@ -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 %>
+6 -4
View File
@@ -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>