Source code for annotations.views.main_views
"""
Top-level views.
"""
from django.http import HttpResponse
from django.template import RequestContext, loader
from django.db.models.expressions import DateTime
from annotations.models import Relation, Appellation, VogonUser, Text
from annotations.display_helpers import get_recent_annotations
import pytz
[docs]def home(request):
    """
    Provides a landing page containing information about the application
    for user who are not authenticated
    LoggedIn users are redirected to the dashboard view
    ----------
    request : HTTPRequest
        The request for application landing page.
    Returns
    ----------
    :template:
        Renders landing page for non-loggedin user and
        dashboard view for loggedin users.
    """
    template = loader.get_template('annotations/home.html')
    user_count = VogonUser.objects.filter(is_active=True).count()
    text_count = Text.objects.all().count()
    appellation_count = Appellation.objects.count()
    relation_count = Relation.objects.count()
    context = RequestContext(request, {
        'user_count': user_count,
        'text_count': text_count,
        'relation_count': relation_count,
        'appellation_count': appellation_count,
        'recent_combination': get_recent_annotations(last=10),
        'title': 'Build the epistemic web'
    })
    return HttpResponse(template.render(context)) 
[docs]def about(request):
    """
    Provides information about Vogon-Web
    Parameters
    ----------
    request : `django.http.requests.HttpRequest`
    Returns
    ----------
    :class:`django.http.response.HttpResponse`
    """
    template = loader.get_template('annotations/about.html')
    context = RequestContext(request)
    context.update({
        'title': 'About VogonWeb'
    })
    return HttpResponse(template.render(context)) 
[docs]def recent_activity(request):
    """
    Provides summary of activities performed on the system.
    Currently on text addition, Appellation additions are shown.
    Parameters
    ----------
    request : `django.http.requests.HttpRequest`
    Returns
    ----------
    :class:`django.http.response.HttpResponse`
    """
    template = loader.get_template('annotations/recent_activity.html')
    recent_texts = Text.objects.annotate(hour=DateTime("added", "hour", pytz.timezone("UTC")))\
                               
.values("hour", "addedBy__username")\
                               
.annotate(created_count=Count('id'))\
                               
.order_by("-hour", "addedBy")
    context = {
        'recent_texts': recent_texts,
        'recent_combination': get_recent_annotations()
    }
    return HttpResponse(template.render(context))