X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/80d3980873a2c07121f466c187de92be1cea8415..120d1af7c84eba0f9b31315bfcf7c9a0dc544269:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index aedc4caa1..2237af862 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -15,9 +15,9 @@ from datetime import datetime from django.conf import settings from django.template import RequestContext from django.shortcuts import render_to_response, get_object_or_404 -from django.http import HttpResponse, HttpResponseRedirect, Http404 +from django.http import HttpResponse, HttpResponseRedirect, Http404, HttpResponsePermanentRedirect from django.core.urlresolvers import reverse -from django.db.models import Q +from django.db.models import Count, Sum, Q from django.contrib.auth.decorators import login_required, user_passes_test from django.utils.datastructures import SortedDict from django.views.decorators.http import require_POST @@ -38,6 +38,7 @@ from catalogue.utils import split_tags from newtagging import views as newtagging_views from pdcounter import models as pdcounter_models from pdcounter import views as pdcounter_views +from suggest.forms import PublishingSuggestForm from slughifi import slughifi @@ -119,12 +120,12 @@ def book_list(request, filter=None, template_name='catalogue/book_list.html'): def audiobook_list(request): - return book_list(request, Q(medias__type='mp3') | Q(medias__type='ogg'), + return book_list(request, Q(media__type='mp3') | Q(media__type='ogg'), template_name='catalogue/audiobook_list.html') def daisy_list(request): - return book_list(request, Q(medias__type='daisy'), + return book_list(request, Q(media__type='daisy'), template_name='catalogue/daisy_list.html') @@ -153,6 +154,8 @@ def tagged_object_list(request, tags=''): raise Http404 except models.Tag.MultipleObjectsReturned, e: return differentiate_tags(request, e.tags, e.ambiguous_slugs) + except models.Tag.UrlDeprecationWarning, e: + return HttpResponsePermanentRedirect(reverse('tagged_object_list', args=['/'.join(tag.url_chunk for tag in e.tags)])) try: if len(tags) > settings.MAX_TAG_LIST: @@ -270,6 +273,18 @@ def book_detail(request, slug): extra_info = book.get_extra_info_value() + projects = set() + for m in book.media.filter(type='mp3'): + # ogg files are always from the same project + meta = m.get_extra_info_value() + project = meta.get('project') + if not project: + # temporary fallback + project = u'CzytamySłuchając' + + projects.add((project, meta.get('funded_by', ''))) + projects = sorted(projects) + form = forms.SearchForm() return render_to_response('catalogue/book_detail.html', locals(), context_instance=RequestContext(request)) @@ -462,7 +477,9 @@ def search(request): {'tags':tag_list, 'prefix':prefix, 'results':((x, _get_result_link(x, tag_list), _get_result_type(x)) for x in result)}, context_instance=RequestContext(request)) else: - return render_to_response('catalogue/search_no_hits.html', {'tags':tag_list, 'prefix':prefix}, + form = PublishingSuggestForm(initial={"books": prefix + ", "}) + return render_to_response('catalogue/search_no_hits.html', + {'tags':tag_list, 'prefix':prefix, "pubsuggest_form": form}, context_instance=RequestContext(request)) @@ -676,27 +693,6 @@ def delete_shelf(request, slug): # ================== # = Authentication = # ================== - -@cache.never_cache -def simple_login(request): - if request.method == "GET": - #next = request.REQUEST.get('next', '') - #if next == '': - form = AuthenticationForm(prefix='login') - return render_to_response('auth/login.html', locals(), - context_instance=RequestContext(request)) - #else: - # return HttpResponseRedirect("/"+next) - - elif request.method == "POST": - form = AuthenticationForm(data=request.POST, prefix='login') - if form.is_valid(): - auth.login(request, form.get_user()) - url = request.META['HTTP_REFERER'].split("next=")[1] - url = url.replace("%3F","?").replace("%3D","=") - return HttpResponseRedirect(url) - - @require_POST @cache.never_cache def login(request): @@ -762,29 +758,6 @@ def clock(request): return HttpResponse(datetime.now().strftime('%Y/%m/%d %H:%M:%S')) -@cache.never_cache -def xmls(request): - """" - Create a zip archive with all XML files. - This should be removed when we have real API. - """ - temp = tempfile.TemporaryFile() - archive = zipfile.ZipFile(temp, 'w') - - for book in models.Book.objects.all(): - archive.write(book.xml_file.path, str('%s.xml' % book.slug)) - archive.close() - - response = HttpResponse(content_type='application/zip', mimetype='application/x-zip-compressed') - response['Content-Disposition'] = 'attachment; filename=xmls.zip' - response['Content-Length'] = temp.tell() - - temp.seek(0) - response.write(temp.read()) - return response - - - # info views for API def book_info(request, id, lang='pl'):