X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/3204e4303148302d278036eebcfc8cb105cc97d7..ad2f309daa381e9a7a2b7a8a17ef494b60f838b2:/src/catalogue/views.py diff --git a/src/catalogue/views.py b/src/catalogue/views.py index 1497be08..019d25a7 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -1,4 +1,6 @@ -# -*- coding: utf-8 -*- +# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# from collections import defaultdict from datetime import datetime, date, timedelta import logging @@ -9,7 +11,7 @@ from django.conf import settings from django.contrib import auth from django.contrib.auth.models import User from django.contrib.auth.decorators import login_required, permission_required -from django.core.urlresolvers import reverse +from django.urls import reverse from django.db.models import Count, Q from django.db import transaction from django import http @@ -112,7 +114,7 @@ def create_missing(request, slug=None): form = forms.DocumentCreateForm(request.POST, request.FILES) if form.is_valid(): - if request.user.is_authenticated(): + if request.user.is_authenticated: creator = request.user else: creator = None @@ -148,7 +150,7 @@ def upload(request): if form.is_valid(): from slugify import slugify - if request.user.is_authenticated(): + if request.user.is_authenticated: creator = request.user else: creator = None @@ -248,7 +250,7 @@ def book_html(request, slug): doc = book.wldocument(parse_dublincore=False) html = doc.as_html(options={'gallery': "'%s'" % book.gallery_url()}) - html = html.get_bytes() if html is not None else '' + html = html.get_bytes().decode('utf-8') if html is not None else '' # response = http.HttpResponse(html, content_type='text/html') # return response # book_themes = {} @@ -395,7 +397,7 @@ def chunk_add(request, slug, chunk): if request.method == "POST": form = forms.ChunkAddForm(request.POST, instance=doc) if form.is_valid(): - if request.user.is_authenticated(): + if request.user.is_authenticated: creator = request.user else: creator = None @@ -461,8 +463,8 @@ def chunk_edit(request, slug, chunk): @login_required @require_POST def chunk_mass_edit(request): - ids = map(int, filter(lambda i: i.strip()!='', request.POST.get('ids').split(','))) - chunks = map(lambda i: Chunk.objects.get(id=i), ids) + ids = [int(i) for i in request.POST.get('ids').split(',') if i.strip()] + chunks = list(Chunk.objects.filter(id__in=ids)) stage = request.POST.get('stage') if stage: @@ -624,13 +626,13 @@ class GalleryView(UploadView): def active_users_list(request): - since = date(date.today().year, 1, 1) + year = int(request.GET.get('y', date.today().year)) by_user = defaultdict(lambda: 0) by_email = defaultdict(lambda: 0) names_by_email = defaultdict(set) for change_model in (Chunk.change_model, Image.change_model): for c in change_model.objects.filter( - created_at__gte=since).order_by( + created_at__year=year).order_by( 'author', 'author_email', 'author_name').values( 'author', 'author_name', 'author_email').annotate( c=Count('author'), ce=Count('author_email')).distinct(): @@ -638,7 +640,7 @@ def active_users_list(request): by_user[c['author']] += c['c'] else: by_email[c['author_email']] += c['ce'] - if c['author_name'].strip(): + if (c['author_name'] or '').strip(): names_by_email[c['author_email']].add(c['author_name']) for user in User.objects.filter(pk__in=by_user): by_email[user.email] += by_user[user.pk] @@ -650,7 +652,7 @@ def active_users_list(request): active_users.sort(key=lambda x: -x[2]) return render(request, 'catalogue/active_users_list.html', { 'users': active_users, - 'since': since, + 'year': year, })