Changeset 224
- Timestamp:
- 06/14/07 14:36:38 (2 years ago)
- Files:
-
- trunk/djedna/accounts/user_settings.py (modified) (1 diff)
- trunk/djedna/catalog/models.py (modified) (2 diffs)
- trunk/djedna/catalog/templatetags/album_display.py (modified) (2 diffs)
- trunk/djedna/catalog/templatetags/artist_display.py (modified) (1 diff)
- trunk/djedna/catalog/templatetags/artist_row.py (modified) (3 diffs)
- trunk/djedna/catalog/templatetags/artist_table.py (modified) (1 diff)
- trunk/djedna/catalog/templatetags/artist_type_selector.py (added)
- trunk/djedna/catalog/views.py (modified) (4 diffs)
- trunk/djedna/media/css/djedna_main.css (modified) (2 diffs)
- trunk/djedna/settings.py (modified) (1 diff)
- trunk/djedna/templates/catalog/artist_detail.html (modified) (3 diffs)
- trunk/djedna/templates/catalog/artist_list.html (modified) (2 diffs)
- trunk/djedna/templates/catalog/tag/album_display.html (modified) (1 diff)
- trunk/djedna/templates/catalog/tag/artist_type_selector.html (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/djedna/accounts/user_settings.py
r197 r224 55 55 url_query_dict = {'setting_name': setting_name, setting_name: setting_value,} 56 56 if redirect: 57 url_qu rl_query_dict['redirect'] = redirect57 url_query_dict['redirect'] = redirect 58 58 url_query = urllib.urlencode(url_query_dict) 59 59 trunk/djedna/catalog/models.py
r219 r224 638 638 def get_query_set(self): 639 639 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"', 641 641 'track_count' : 'SELECT COUNT(*) FROM "catalog_track" WHERE "catalog_track"."artist_id" = "catalog_artist"."id"', 642 642 '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")' … … 692 692 albums_via_tracks = property(_get_albums_via_tracks) 693 693 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 694 699 # for admin list_display 695 700 def album_count(self): trunk/djedna/catalog/templatetags/album_display.py
r194 r224 8 8 from djedna.catalog.urls import album_absolute_slug_url, cover_file_url, album_xspf_url 9 9 from djedna.catalog.models import Track 10 from djedna.accounts.user_settings import get_user_setting 10 11 11 12 import util … … 25 26 for attribute, field in album_fields.items(): 26 27 if attribute == 'tracks': 27 if artist :28 if artist and get_user_setting(context['request'], 'artist_type', settings.DEFAULT_ARTIST_TYPE) == 'track': 28 29 field['tracks'] = Track.display_objects.filter(album=album, artist=artist) 29 30 else: trunk/djedna/catalog/templatetags/artist_display.py
r195 r224 21 21 field['url'] = util.attribute_value(obj, field['url_source']) 22 22 23 return {'user' : context['user'], 23 return {'request': context['request'], 24 'user' : context['user'], 24 25 'artist' : obj, 25 26 'albums': context.get('albums', ()), trunk/djedna/catalog/templatetags/artist_row.py
r204 r224 1 1 from django.template import Library 2 from django.conf import settings 3 from djedna.accounts.user_settings import get_user_setting 2 4 3 5 import util … … 14 16 for attribute, field in artist_fields.items(): 15 17 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') 17 23 else: 18 24 field['display'] = '' … … 26 32 field['url'] = util.attribute_value(obj, field['url_source']) 27 33 28 return {'user' : context['user'], 34 return {'request': context['request'], 35 'user' : context['user'], 29 36 'artist' : obj, 30 37 'artist_fields' : artist_fields, trunk/djedna/catalog/templatetags/artist_table.py
r191 r224 18 18 util.calc_field_order_info(artist_fields, order_by, 'artist_order_by') 19 19 20 return {'user' : context['user'], 20 return {'request': context['request'], 21 'user' : context['user'], 21 22 'artists' : artists, 22 23 'artist_fields' : artist_fields, trunk/djedna/catalog/views.py
r223 r224 35 35 def get_user_results_per_page(request): 36 36 return int(get_user_setting(request, 'results_per_page', settings.DEFAULT_RESULTS_PER_PAGE)) 37 37 38 def get_user_artist_type(request): 39 return get_user_setting(request, 'artist_type', settings.DEFAULT_ARTIST_TYPE) 40 38 41 #### 39 42 # root view … … 294 297 query_set = Artist.display_objects.all() 295 298 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() 298 304 299 305 alpha_selector = ObjectAlphaSelector(query_set, … … 331 337 def artist_detail(request, artist_id): 332 338 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') 334 344 query_set = Artist.display_objects.all() 335 345 … … 400 410 def artist_xspf(request, artist_id): 401 411 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') 403 417 filename = artist.file_safe_name 404 418 return urls2xspf(request, filename, artist_xspf_url(artist), artist_tracks) trunk/djedna/media/css/djedna_main.css
r221 r224 28 28 .search {} 29 29 .all_button {} 30 31 .artist_type_selector {} 30 32 31 33 .actions {} … … 274 276 color: white; 275 277 } 278 279 /* artist type selector */ 280 div.artist_type_selector { 281 padding: 3px 6px; 282 background-color: #ddddff; 283 vertical-align:middle; 284 display: inline; 285 } 286 287 div.artist_type_selector .current { 288 font-weight: bold; 289 } trunk/djedna/settings.py
r209 r224 99 99 DEFAULT_ALBUM_ORDER_BY = 'title' 100 100 DEFAULT_TRACK_ORDER_BY = 'title' 101 DEFAULT_ARTIST_TYPE = 'track' 101 102 102 103 trunk/djedna/templates/catalog/artist_detail.html
r194 r224 1 1 {% extends "base.html" %} 2 2 {% load artist_display %} 3 {% load artist_type_selector %} 3 4 4 5 {% block title %}djedna: Artist [{{ artist.name }}]{% endblock %} … … 8 9 {% if artist %} 9 10 {% artist_display artist %} 11 {% artist_type_selector %} 10 12 {% else %} 11 13 <span class='message'>Invalid Artist</span> … … 13 15 </div></div> 14 16 {% endblock %} 17 file:///home/seighin/projects/djedna/djedna/templates/catalog/artist_detail.html trunk/djedna/templates/catalog/artist_list.html
r195 r224 3 3 {% load alphaselector %} 4 4 {% load paginator %} 5 {% load artist_type_selector %} 5 6 {% load artist_table %} 6 7 … … 16 17 {% paginator 5 %} 17 18 {% artist_table artist_list %} 19 {% artist_type_selector %} 18 20 {% paginator 5 %} 19 21 {% else %} trunk/djedna/templates/catalog/tag/album_display.html
r195 r224 12 12 <span id="play_album_{{ album.id }}"> 13 13 {% 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 %}/> 15 15 {% if album_fields.cover.link %}</a>{% endif %} 16 16 </span>
