From: yomguy Date: Wed, 13 Mar 2013 21:58:04 +0000 (+0100) Subject: add sound_public query for full access items, X-Git-Tag: 1.4.5~2^2~4^2~2^2~32 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=c7c92d808fcdba7ca8dbd973af9e190fe0773409;p=telemeta.git add sound_public query for full access items, optimize random items query in home, debug new access workflow --- diff --git a/telemeta/models/query.py b/telemeta/models/query.py index c5f1d991..7a078819 100644 --- a/telemeta/models/query.py +++ b/telemeta/models/query.py @@ -200,6 +200,9 @@ class MediaItemQuerySet(CoreQuerySet): def sound(self): return self.filter(file__contains='/') + def sound_public(self): + return self.filter(file__contains='/', public_access='full', collection__public_access='full') + def by_instrument(self, instrument): "Find items by instrument" return self.filter(instruments__in=instrument) @@ -248,6 +251,10 @@ class MediaItemManager(CoreManager): return self.get_query_set().sound(*args, **kwargs) sound.__doc__ = MediaItemQuerySet.sound.__doc__ + def sound_public(self, *args, **kwargs): + return self.get_query_set().sound_public(*args, **kwargs) + sound_public.__doc__ = MediaItemQuerySet.sound_public.__doc__ + def by_instrument(self, *args, **kwargs): return self.get_query_set().by_instrument(*args, **kwargs) by_instrument.__doc__ = MediaItemQuerySet.by_instrument.__doc__ diff --git a/telemeta/templates/telemeta/mediaitem_player.html b/telemeta/templates/telemeta/mediaitem_player.html index 0c4149ee..01bfab08 100644 --- a/telemeta/templates/telemeta/mediaitem_player.html +++ b/telemeta/templates/telemeta/mediaitem_player.html @@ -22,7 +22,7 @@ {% block content %}
{% if item.file %} - {% if public_access or user.is_staff %} + {% if access or user.is_staff %}
diff --git a/telemeta/templates/telemeta/mediaitem_player_contour.html b/telemeta/templates/telemeta/mediaitem_player_contour.html index aeb3bd80..5d6f1045 100644 --- a/telemeta/templates/telemeta/mediaitem_player_contour.html +++ b/telemeta/templates/telemeta/mediaitem_player_contour.html @@ -35,7 +35,7 @@ {% block content %}
{% if item.file %} - {% if public_access or user.is_staff %} + {% if access or user.is_staff %}
diff --git a/telemeta/templates/telemeta/mediaitem_player_simple.html b/telemeta/templates/telemeta/mediaitem_player_simple.html index f7a3cee9..3f84687c 100644 --- a/telemeta/templates/telemeta/mediaitem_player_simple.html +++ b/telemeta/templates/telemeta/mediaitem_player_simple.html @@ -30,7 +30,7 @@ {% block content %}
{% if item.file %} - {% if public_access or user.is_staff %} + {% if access or user.is_staff %}
diff --git a/telemeta/views/core.py b/telemeta/views/core.py index 46b1c546..4c672dd5 100644 --- a/telemeta/views/core.py +++ b/telemeta/views/core.py @@ -102,7 +102,6 @@ def send_file(request, filename, content_type='image/jpeg'): response['Content-Length'] = os.path.getsize(filename) return response -<<<<<<< HEAD def nginx_media_accel(request, filename): """Send a protected medie file through nginx with X-Accel-Redirect""" @@ -113,8 +112,6 @@ def nginx_media_accel(request, filename): response['X-Accel-Redirect'] = url return response -======= ->>>>>>> crem def render(request, template, data = None, mimetype = None): return render_to_response(template, data, context_instance=RequestContext(request), mimetype=mimetype) @@ -148,24 +145,31 @@ def get_item_access(item, user): if user.is_staff or user.is_superuser or user.has_perm('telemeta.can_play_all_items'): access = 'full' + print '1' elif user.is_authenticated() and item.collection.public_access != 'mixed': if item.collection.public_access == 'metadata' and item.auto_period_access: access = 'full' + print '2' else: access = item.collection.public_access + print '3' elif user.is_authenticated() and item.collection.public_access == 'mixed': if item.public_access == 'metadata' and item.auto_period_access: access = 'full' + print '4' else: access = item.public_access + print '5' elif not user.is_authenticated() and item.collection.public_access != 'mixed': access = item.collection.public_access + print '6' elif not user.is_authenticated() and item.collection.public_access == 'mixed': access = item.public_access + print '7' # Auto publish after a period given at settings.TELEMETA_PUBLIC_ACCESS_PERIOD if access != 'full' and item.auto_period_access: @@ -183,6 +187,7 @@ def get_item_access(item, user): year_now = datetime.datetime.now().strftime("%Y") if int(year_now) - int(year) >= settings.TELEMETA_PUBLIC_ACCESS_PERIOD: access = 'full' + print '8' return access diff --git a/telemeta/views/home.py b/telemeta/views/home.py index 2c6f9209..c0b0051d 100644 --- a/telemeta/views/home.py +++ b/telemeta/views/home.py @@ -45,24 +45,28 @@ class HomeView(object): template = loader.get_template('telemeta/home.html') - sound_items = MediaItem.objects.sound() - _sound_pub_items = [] - for item in sound_items: - if get_item_access(item, request.user) == 'full': - _sound_pub_items.append(item) - - random.shuffle(_sound_pub_items) - if len(_sound_pub_items) != 0: - sound_pub_item = _sound_pub_items[0] - else: + N = 3 # max number of pub items + + sound_items = MediaItem.objects.sound_public() + count = sound_items.count() + + if count == 0: sound_pub_item = None - if len(_sound_pub_items) == 2: - sound_pub_items = [_sound_pub_items[1]] - elif len(_sound_pub_items) > 2: - sound_pub_items = _sound_pub_items[1:3] - else: sound_pub_items = None + elif count == 1: + sound_pub_item = sound_items[0] + sound_pub_items = [sound_items[0], sound_items[0]] + + elif count == 2: + sound_pub_item = sound_items[0] + sound_pub_items = [sound_items[0], sound_items[1]] + + elif count > 2: + indexes = random.sample(range(count-1), N) + sound_pub_item = sound_items[indexes[0]] + sound_pub_items = [sound_items[indexes[i]] for i in range(0, N-1)] + revisions = get_revisions(25) context = RequestContext(request, { 'page_content': pages.get_page_content(request, 'home', ignore_slash_issue=True),