mirror of
https://github.com/postgres/pgweb.git
synced 2025-08-13 13:12:42 +00:00

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.
55 lines
2.1 KiB
Python
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/')
|