From 222dd060b1cbd26b0a2660db5383b343aa511b80 Mon Sep 17 00:00:00 2001 From: Christian Berg Date: Fri, 14 Oct 2016 21:27:58 +0200 Subject: [PATCH] Added Datefields for creation and last modied metadata. It's currently used for the sitemap.xml. --- .../migrations/0007_auto_20161012_2224.py | 49 +++++++++++++ src/events/models.py | 72 +++++++++++++++---- src/events/sitemaps.py | 3 +- src/events/templates/events/event_detail.html | 51 +++---------- .../templates/events/eventseries_form.html | 2 +- 5 files changed, 120 insertions(+), 57 deletions(-) create mode 100644 src/events/migrations/0007_auto_20161012_2224.py diff --git a/src/events/migrations/0007_auto_20161012_2224.py b/src/events/migrations/0007_auto_20161012_2224.py new file mode 100644 index 0000000..1d9d4be --- /dev/null +++ b/src/events/migrations/0007_auto_20161012_2224.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import datetime +from django.utils.timezone import utc + + +class Migration(migrations.Migration): + + dependencies = [ + ('events', '0006_auto_20160916_1800'), + ] + + operations = [ + migrations.AddField( + model_name='event', + name='date_created', + field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='first created at', db_index=True), + ), + migrations.AddField( + model_name='event', + name='date_modified', + field=models.DateTimeField(default=datetime.datetime(2016, 10, 12, 20, 24, 39, 910492, tzinfo=utc), verbose_name='latest updated at', auto_now=True), + preserve_default=False, + ), + migrations.AddField( + model_name='location', + name='date_created', + field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='first created at', db_index=True), + ), + migrations.AddField( + model_name='location', + name='date_modified', + field=models.DateTimeField(default=datetime.datetime(2016, 10, 12, 20, 24, 44, 566305, tzinfo=utc), verbose_name='latest updated at', auto_now=True), + preserve_default=False, + ), + migrations.AddField( + model_name='photo', + name='date_created', + field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='first created at', db_index=True), + ), + migrations.AddField( + model_name='photo', + name='date_modified', + field=models.DateTimeField(default=datetime.datetime(2016, 10, 12, 20, 24, 50, 509970, tzinfo=utc), verbose_name='latest updated at', auto_now=True), + preserve_default=False, + ), + ] diff --git a/src/events/models.py b/src/events/models.py index 3ca2f93..0f629e2 100644 --- a/src/events/models.py +++ b/src/events/models.py @@ -1,16 +1,18 @@ # -'- Encoding: utf-8 -*- import os + +from ckeditor.fields import RichTextField from django.conf import settings -from django.core.urlresolvers import reverse from django.core.exceptions import ValidationError +from django.core.urlresolvers import reverse from django.db import models from django.db.models import Q from django.template.defaultfilters import slugify from django.utils.timezone import now from django.utils.translation import ugettext as _ -from ckeditor.fields import RichTextField from easy_thumbnails.fields import ThumbnailerImageField + from utils import COUNTRIES, OverwriteStorage @@ -46,9 +48,9 @@ def get_upload_path(instance, filename): class EventManager(models.Manager): - def get_queryset(self): - return super(EventManager, self).get_queryset().select_related('location') + return super(EventManager, self).get_queryset().select_related( + 'location') def current_event(self): try: @@ -104,13 +106,28 @@ class Event(models.Model): null=True ) photo_count = models.PositiveIntegerField(default=0, editable=False) - event_series = models.ForeignKey('Event', blank=True, null=True, - on_delete=models.SET_NULL, editable=True, - verbose_name=_('Event Series'), - help_text=_(u'Wenn dieser Event zu einer Veranstaltungsreihe gehört \ + event_series = models.ForeignKey( + 'Event', + blank=True, + null=True, + on_delete=models.SET_NULL, editable=True, + verbose_name=_('Event Series'), + help_text=_(u'Wenn dieser Event zu einer Veranstaltungsreihe gehört \ werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen \ Event übernommen.') - ) + ) + date_created = models.DateTimeField( + auto_now_add=True, + null=True, + db_index=True, + editable=False, + verbose_name=_('first created at'), + ) + date_modified = models.DateTimeField( + auto_now=True, + editable=False, + verbose_name=_('latest updated at'), + ) objects = EventManager() class Meta(object): @@ -165,6 +182,10 @@ class Event(models.Model): else: return None + @property + def is_future_event(self): + return self.start > now() + def save(self, **kwargs): # Fülle fehlende Felder mit den Angaben der Hauptveranstaltung aus. if self.event_series: @@ -197,6 +218,18 @@ class Location(models.Model): street_address = models.CharField(_('Street Address'), max_length=127) locality = models.CharField(_('Locality'), max_length=127) country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES) + date_created = models.DateTimeField( + auto_now_add=True, + db_index=True, + editable=False, + null=True, + verbose_name=_('first created at'), + ) + date_modified = models.DateTimeField( + auto_now=True, + editable=False, + verbose_name=_('latest updated at'), + ) class Meta(object): verbose_name = _('Venue') @@ -212,7 +245,6 @@ class Location(models.Model): class PhotoManager(models.Manager): - def get_random(self, startpage=True): if startpage: queryset = self.filter(on_startpage=True) @@ -226,8 +258,11 @@ class PhotoManager(models.Manager): class Photo(models.Model): name = models.CharField(_("Name"), max_length=100, blank=True) - image = ThumbnailerImageField(_("Image"), upload_to=get_upload_path, - storage=OverwriteStorage()) + image = ThumbnailerImageField( + _("Image"), + upload_to=get_upload_path, + storage=OverwriteStorage() + ) event = models.ForeignKey('events.Event') description = models.TextField( _("Description"), @@ -247,6 +282,19 @@ class Photo(models.Model): editable=False, default=0 ) + date_created = models.DateTimeField( + auto_now_add=True, + db_index=True, + editable=False, + null=True, + verbose_name=_('first created at'), + ) + date_modified = models.DateTimeField( + auto_now=True, + editable=False, + verbose_name=_('latest updated at'), + ) + objects = PhotoManager() metadata = None orientation = 1 diff --git a/src/events/sitemaps.py b/src/events/sitemaps.py index e7203ad..b6c91e4 100644 --- a/src/events/sitemaps.py +++ b/src/events/sitemaps.py @@ -17,6 +17,5 @@ class EventSitemap(Sitemap): return max(1 - delta, 0.1) def lastmod(self, event): - return event.end - return min(event.end, timezone.now()) + return event.date_modified diff --git a/src/events/templates/events/event_detail.html b/src/events/templates/events/event_detail.html index de03b0d..eca342a 100644 --- a/src/events/templates/events/event_detail.html +++ b/src/events/templates/events/event_detail.html @@ -106,53 +106,20 @@


-{% block event_content %} {% endblock %} - {% endblock %} - {% block comments %} {% render_comment_list for event %} {% render_comment_form for event %} {% endblock %} {% block buttonbar %} - {% if perms.events.change_event %} - {% trans "Edit Event" %} - {% endif %} - {% if perms.events.add_event %} - {% trans "Add Dates" %} - {% endif %} -{% endblock %} - -{% block javascript %} - var geocoder; - var map; - function codeAddress() { - var address = "{{ event.location.address }}"; - geocoder.geocode( { 'address': address}, function(results, status) { - if (status == google.maps.GeocoderStatus.OK) { - map.setCenter(results[0].geometry.location); - var marker = new google.maps.Marker({ - map: map, - position: results[0].geometry.location - }); - } else { - alert("Geocode was not successful for the following reason: " + status); - } - }); - } - - function initialize() { - geocoder = new google.maps.Geocoder(); - var latlng = new google.maps.LatLng(-34.397, 150.644); - var mapOptions = { - zoom: 16, - center: latlng, - mapTypeId: google.maps.MapTypeId.ROADMAP - } - map = new google.maps.Map(document.getElementById("google_maps"), mapOptions); - codeAddress(); - } - initialize(); -{% endblock %} +{% if perms.events.change_event %} + {% trans "Edit Event" %} +{% endif %} +{% if perms.events.add_event %} + {% trans "Add Dates" %} +{% endif %} +{% endblock %} \ No newline at end of file diff --git a/src/events/templates/events/eventseries_form.html b/src/events/templates/events/eventseries_form.html index d454af4..b917691 100644 --- a/src/events/templates/events/eventseries_form.html +++ b/src/events/templates/events/eventseries_form.html @@ -3,7 +3,7 @@ {% block title %}{{ event.name }}{% endblock %} -{% block event_content %} +{% block main_content %}

Hier kommt eine Tabelle rein!

{% csrf_token %}