Files
postgres-web/pgweb/events/views.py
Jonathan S. Katz e7014d7ecc Enable events to be badged.
Adds the "badged" flag to the Event model in order to distinguish
community badged events from other PostgreSQL oriented events.
Seven total events will be displayed on the homepage, with up to
four community events displayed. If there are no upcoming
community events then, then the header "Events" is shown.

The event submission interface allows a user to opt-in to
listing an event as a "community" event and provide an
explanation for moderators as to why the event should be
considered a community event.

Expands the list of News and Planet PostgreSQL blog entries to 10.
2017-12-06 12:06:37 +09:00

55 lines
2.1 KiB
Python

from django.shortcuts import render_to_response, get_object_or_404
from django.http import Http404
from pgweb.util.decorators import login_required
from datetime import date
from pgweb.util.contexts import NavContext
from pgweb.util.helpers import simple_form
from models import Event
from forms import EventForm
def main(request):
community_events = Event.objects.select_related('country').filter(approved=True, badged=True).filter(training=False, enddate__gt=date.today()).order_by('enddate', 'startdate',)
other_events = Event.objects.select_related('country').filter(approved=True, badged=False).filter(training=False, enddate__gt=date.today()).order_by('enddate', 'startdate',)
training = Event.objects.select_related('country').filter(approved=True).filter(training=True, enddate__gt=date.today()).order_by('enddate', 'startdate',)
return render_to_response('events/archive.html', {
'title': 'Upcoming events',
'eventblocks': (
{ 'name': 'Community Events', 'events': community_events, 'link': '',},
{ 'name': 'Other Events', 'events': other_events, 'link': '',},
{ 'name': 'Training', 'events': training, 'link': 'training/',},
),
}, NavContext(request, 'about'))
def _eventarchive(request, training, title):
# Hardcode to the latest 100 events. Do we need paging too?
events = Event.objects.select_related('country').filter(approved=True).filter(training=training, enddate__lte=date.today()).order_by('-enddate', '-startdate',)[:100]
return render_to_response('events/archive.html', {
'title': '%s Archive' % title,
'archive': True,
'eventblocks': (
{'name': title, 'events': events, },
),
}, NavContext(request, 'about'))
def archive(request):
return _eventarchive(request, False, 'Event')
def trainingarchive(request):
return _eventarchive(request, True, 'Training')
def item(request, itemid, throwaway=None):
event = get_object_or_404(Event, pk=itemid)
if not event.approved:
raise Http404
return render_to_response('events/item.html', {
'obj': event,
}, NavContext(request, 'about'))
@login_required
def form(request, itemid):
return simple_form(Event, itemid, request, EventForm,
redirect='/account/edit/events/')