49 lines
1.5 KiB
Python
49 lines
1.5 KiB
Python
import models
|
|
import forums.models
|
|
from django.contrib.auth.forms import AuthenticationForm
|
|
from django.db.models import Sum
|
|
from donate.models import Donation
|
|
from datetime import datetime
|
|
from django.conf import settings
|
|
from notification.models import Notice
|
|
from django.core.urlresolvers import reverse
|
|
|
|
def random_quote(request):
|
|
quote = models.Quote.objects.order_by('?')
|
|
if len(quote) > 0:
|
|
return {'quote': quote[0]}
|
|
return {}
|
|
|
|
def forum_activity(request):
|
|
latestPosts = forums.models.Post.objects.all().order_by('-updated')[0:5]
|
|
return {'latestForumPosts': latestPosts}
|
|
|
|
def login_form(request):
|
|
return {'login_form': AuthenticationForm()}
|
|
|
|
def donation_info(request):
|
|
now = datetime.now()
|
|
monthStart = datetime(now.year, now.month, 1)
|
|
donations = Donation.objects.filter(created__gt=monthStart).aggregate(Sum('quantity'))
|
|
goal = getattr(settings, 'CAMINUS_DONATION_GOAL', 0)
|
|
donationTotal = donations['quantity__sum']
|
|
if donationTotal is None:
|
|
progress = 0
|
|
donationTotal = 0
|
|
if donationTotal > goal or goal == 0:
|
|
progress = 100
|
|
else:
|
|
progress = donationTotal/goal*100
|
|
return {'donation_month_total': donationTotal, 'donation_month_goal': goal, 'donation_goal_progress': progress}
|
|
|
|
def notifications(request):
|
|
if request.user.is_authenticated():
|
|
return {'notices': Notice.objects.filter(unseen=True, recipient=request.user, on_site=True)}
|
|
return {}
|
|
|
|
def javascript_uris(request):
|
|
|
|
return {'js_uris': (
|
|
'local.views.mark_notifications_read',
|
|
)}
|