Ejemplo n.º 1
0
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())
Ejemplo n.º 2
0
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())
Ejemplo n.º 3
0
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})