Changeset 224

Show
Ignore:
Timestamp:
06/14/07 14:36:38 (2 years ago)
Author:
seighin
Message:

Added display option to use album artist rather than track artist

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/djedna/accounts/user_settings.py

    r197 r224  
    5555    url_query_dict = {'setting_name': setting_name, setting_name: setting_value,} 
    5656    if redirect: 
    57         url_qurl_query_dict['redirect'] = redirect   
     57        url_query_dict['redirect'] = redirect   
    5858    url_query = urllib.urlencode(url_query_dict) 
    5959     
  • trunk/djedna/catalog/models.py

    r219 r224  
    638638    def get_query_set(self): 
    639639        return super(DisplayArtistManager, self).get_query_set().extra(select={ 
    640             'latest_trackfile_file_modified' : 'SELECT MAX("file_modified") FROM "catalog_trackfile", "catalog_track" WHERE "catalog_track"."artist_id" = "catalog_artist"."id" AND "catalog_trackfile"."track_id" = "catalog_track"."id"', 
     640            'latest_trackfile_file_modified' : 'SELECT MAX("file_modified") FROM "catalog_trackfile", "catalog_track", "catalog_album" WHERE "catalog_track"."artist_id" = "catalog_artist"."id" AND "catalog_trackfile"."track_id" = "catalog_track"."id"', 
    641641            'track_count' : 'SELECT COUNT(*) FROM "catalog_track" WHERE "catalog_track"."artist_id" = "catalog_artist"."id"', 
    642642            'album_count' : 'SELECT COUNT(DISTINCT("catalog_album"."id")) FROM "catalog_album" INNER JOIN "catalog_track" AS "catalog_album__tracks" ON "catalog_album"."id" = "catalog_album__tracks"."album_id" WHERE ("catalog_album__tracks"."artist_id" = "catalog_artist"."id")' 
     
    692692    albums_via_tracks = property(_get_albums_via_tracks) 
    693693     
     694    def _get_tracks_via_albums(self): 
     695        try: return Track.objects.filter(album__artist=self).distinct().order_by('-year', 'title') 
     696        except: return None 
     697    tracks_via_albums = property(_get_tracks_via_albums) 
     698 
    694699    # for admin list_display 
    695700    def album_count(self): 
  • trunk/djedna/catalog/templatetags/album_display.py

    r194 r224  
    88from djedna.catalog.urls import album_absolute_slug_url, cover_file_url, album_xspf_url 
    99from djedna.catalog.models import Track 
     10from djedna.accounts.user_settings import get_user_setting 
    1011 
    1112import util 
     
    2526    for attribute, field in album_fields.items(): 
    2627        if attribute == 'tracks': 
    27             if artist
     28            if artist and get_user_setting(context['request'], 'artist_type', settings.DEFAULT_ARTIST_TYPE) == 'track'
    2829                field['tracks'] = Track.display_objects.filter(album=album, artist=artist) 
    2930            else: 
  • trunk/djedna/catalog/templatetags/artist_display.py

    r195 r224  
    2121            field['url'] = util.attribute_value(obj, field['url_source']) 
    2222     
    23     return {'user' : context['user'], 
     23    return {'request': context['request'], 
     24            'user' : context['user'], 
    2425            'artist' : obj, 
    2526            'albums': context.get('albums', ()), 
  • trunk/djedna/catalog/templatetags/artist_row.py

    r204 r224  
    11from django.template import Library 
     2from django.conf import settings 
     3from djedna.accounts.user_settings import get_user_setting 
    24 
    35import util 
     
    1416    for attribute, field in artist_fields.items(): 
    1517        if attribute == 'albums': 
    16             field['albums'] = obj.albums_via_tracks.order_by('-year', 'title') 
     18            artist_type = get_user_setting(context['request'], 'artist_type', settings.DEFAULT_ARTIST_TYPE) 
     19            if artist_type == 'album': 
     20                field['albums'] = obj.albums.order_by('-year', 'title') 
     21            else: 
     22                field['albums'] = obj.albums_via_tracks.order_by('-year', 'title') 
    1723        else: 
    1824            field['display'] = '' 
     
    2632                field['url'] = util.attribute_value(obj, field['url_source']) 
    2733     
    28     return {'user' : context['user'], 
     34    return {'request': context['request'], 
     35            'user' : context['user'], 
    2936            'artist' : obj, 
    3037            'artist_fields' : artist_fields, 
  • trunk/djedna/catalog/templatetags/artist_table.py

    r191 r224  
    1818    util.calc_field_order_info(artist_fields, order_by, 'artist_order_by') 
    1919     
    20     return {'user' : context['user'], 
     20    return {'request': context['request'], 
     21            'user' : context['user'], 
    2122            'artists' : artists, 
    2223            'artist_fields' : artist_fields, 
  • trunk/djedna/catalog/views.py

    r223 r224  
    3535def get_user_results_per_page(request): 
    3636    return int(get_user_setting(request, 'results_per_page', settings.DEFAULT_RESULTS_PER_PAGE)) 
    37          
     37 
     38def get_user_artist_type(request): 
     39    return get_user_setting(request, 'artist_type', settings.DEFAULT_ARTIST_TYPE) 
     40 
    3841#### 
    3942# root view 
     
    294297        query_set = Artist.display_objects.all() 
    295298         
    296     # filter query so that only artist with tracks show up (until we hook up album artists) 
    297     query_set = query_set.filter(tracks__isnull=False).distinct() 
     299    # filter query so that only the proper artists show up 
     300    if get_user_artist_type(request) == 'track': 
     301        query_set = query_set.filter(tracks__isnull=False).distinct() 
     302    elif get_user_artist_type(request) == 'album': 
     303        query_set = query_set.filter(albums__isnull=False).distinct() 
    298304     
    299305    alpha_selector = ObjectAlphaSelector(query_set, 
     
    331337def artist_detail(request, artist_id): 
    332338    artist = get_object_or_404(Artist, pk=artist_id) 
    333     albums = artist.albums_via_tracks.order_by('-year', 'title') 
     339    artist_type = get_user_artist_type(request) 
     340    if artist_type == 'album': 
     341        albums = artist.albums.order_by('-year', 'title') 
     342    else: 
     343        albums = artist.albums_via_tracks.order_by('-year', 'title') 
    334344    query_set = Artist.display_objects.all() 
    335345 
     
    400410def artist_xspf(request, artist_id): 
    401411    artist = get_object_or_404(Artist, pk=artist_id) 
    402     artist_tracks = artist.tracks.select_related().order_by('-catalog_album.year', 'catalog_album.title', 'number') 
     412    artist_type = get_user_artist_type(request) 
     413    if artist_type == 'album': 
     414        artist_tracks = artist.tracks_via_albums.select_related().order_by('-catalog_album.year', 'catalog_album.title', 'number') 
     415    else: 
     416        artist_tracks = artist.tracks.select_related().order_by('-catalog_album.year', 'catalog_album.title', 'number') 
    403417    filename = artist.file_safe_name 
    404418    return urls2xspf(request, filename, artist_xspf_url(artist), artist_tracks) 
  • trunk/djedna/media/css/djedna_main.css

    r221 r224  
    2828    .search {} 
    2929    .all_button {} 
     30     
     31.artist_type_selector {} 
    3032 
    3133.actions {} 
     
    274276    color: white; 
    275277} 
     278 
     279/* artist type selector */ 
     280div.artist_type_selector { 
     281    padding: 3px 6px; 
     282    background-color: #ddddff; 
     283    vertical-align:middle; 
     284    display: inline; 
     285} 
     286 
     287div.artist_type_selector .current { 
     288    font-weight: bold; 
     289} 
  • trunk/djedna/settings.py

    r209 r224  
    9999DEFAULT_ALBUM_ORDER_BY = 'title' 
    100100DEFAULT_TRACK_ORDER_BY = 'title' 
     101DEFAULT_ARTIST_TYPE = 'track' 
    101102 
    102103 
  • trunk/djedna/templates/catalog/artist_detail.html

    r194 r224  
    11{% extends "base.html" %} 
    22{% load artist_display %} 
     3{% load artist_type_selector %} 
    34 
    45{% block title %}djedna: Artist [{{ artist.name }}]{% endblock %} 
     
    89{% if artist %} 
    910    {% artist_display artist %} 
     11    {% artist_type_selector %}     
    1012{% else %} 
    1113    <span class='message'>Invalid Artist</span> 
     
    1315</div></div> 
    1416{% endblock %} 
     17file:///home/seighin/projects/djedna/djedna/templates/catalog/artist_detail.html 
  • trunk/djedna/templates/catalog/artist_list.html

    r195 r224  
    33{% load alphaselector %} 
    44{% load paginator %} 
     5{% load artist_type_selector %} 
    56{% load artist_table %} 
    67 
     
    1617    {% paginator 5 %} 
    1718    {% artist_table artist_list %} 
     19    {% artist_type_selector %} 
    1820    {% paginator 5 %} 
    1921{% else %} 
  • trunk/djedna/templates/catalog/tag/album_display.html

    r195 r224  
    1212                    <span id="play_album_{{ album.id }}"> 
    1313                        {% if album_fields.cover.link %}<a href="{{ album_fields.cover.link }}">{% endif %} 
    14                         <img src="{{ album_fields.cover.url }}" alt="Cover" align="left" border="0" {% if album_fields.cover.width %}width="{{ album_fields.cover.width }}"{% endif %} {% if album_fields.cover.height %}height="{{ album_fields.cover.height }}"{% endif %}/> 
     14                        <img src="{{ album_fields.cover.url }}" title="{{album.title}}" alt="{{album.title}}" align="left" border="0" {% if album_fields.cover.width %}width="{{ album_fields.cover.width }}"{% endif %} {% if album_fields.cover.height %}height="{{ album_fields.cover.height }}"{% endif %}/> 
    1515                        {% if album_fields.cover.link %}</a>{% endif %} 
    1616                    </span>