def my_dashboard(request): """ Show a member dashboard. """ profile = get_object_or_404(Profile, user__pk=request.user.id) borrowings = Lending.objects.filter(actual_lending(), borrower__id=profile.user.id) lendings = Lending.objects.filter(actual_lending(), book_copy__owner__id=profile.user.id) books = Book.objects.filter(owners__id=profile.user.id) return render(request, "sharing/dashboard.html", locals())
def profile_show(request, profile_id): """ Show a member profile and his sharing history. """ profile = get_object_or_404(Profile, user__pk=profile_id) borrowings = Lending.objects.filter(actual_lending(), borrower__id=profile.user.id) lendings = Lending.objects.filter(actual_lending(), book_copy__owner__id=profile.user.id) books = Book.objects.filter(owners__id=profile.user.id) return render(request, "sharing/profile_show.html", locals())
def book_detail(request, book_id): """ Shows book details. """ book = get_object_or_404(Book, pk=book_id, on_shelf=True) ownerships = Ownership.objects.filter(book__id=book_id) queues = Queue.objects.filter(book_copy__book__id=book_id,fulfilled=False).order_by('added_date') lendings = Lending.objects.filter(actual_lending(),book_copy__book__id=book_id) try: opinion = Opinion.objects.get(book__id=book_id,author=request.user) rating_user = opinion.value query = Opinion.objects.filter(book__id=book_id) rating_number = query.count() rating_average = query.aggregate(Avg('value'))['value__avg'] if int(rating_average) == rating_average: rating_average = int(rating_average) except Opinion.DoesNotExist: rating_user = None rating_average = None except: rating_average = None queues_ordered = {ownership.id:[] for ownership in ownerships} # copy is not enough here, because of lists probably lendings_ordered = {ownership.id:[] for ownership in ownerships} # group them by ownership id for queue in queues.all(): queues_ordered[queue.book_copy.id].append(queue) for lending in lendings.all(): lendings_ordered[lending.book_copy.id].append(lending) return render(request, 'library/book_detail.html', {'book':book,'lendings':lendings,'lendings_ordered':lendings_ordered,'queues_ordered':queues_ordered,'ownerships':ownerships,'rating_user':rating_user, 'opinion_notation_values':OPINION_NOTATION_VALUES, 'rating_average':rating_average, 'rating_number':rating_number})