Added Datefields for creation and last modied metadata. It's currently used for the sitemap.xml.

This commit is contained in:
2016-10-14 21:27:58 +02:00
parent bbe16b2d13
commit 222dd060b1
5 changed files with 120 additions and 57 deletions

View File

@@ -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,
),
]

View File

@@ -1,16 +1,18 @@
# -'- Encoding: utf-8 -*- # -'- Encoding: utf-8 -*-
import os import os
from ckeditor.fields import RichTextField
from django.conf import settings from django.conf import settings
from django.core.urlresolvers import reverse
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core.urlresolvers import reverse
from django.db import models from django.db import models
from django.db.models import Q from django.db.models import Q
from django.template.defaultfilters import slugify from django.template.defaultfilters import slugify
from django.utils.timezone import now from django.utils.timezone import now
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from ckeditor.fields import RichTextField
from easy_thumbnails.fields import ThumbnailerImageField from easy_thumbnails.fields import ThumbnailerImageField
from utils import COUNTRIES, OverwriteStorage from utils import COUNTRIES, OverwriteStorage
@@ -46,9 +48,9 @@ def get_upload_path(instance, filename):
class EventManager(models.Manager): class EventManager(models.Manager):
def get_queryset(self): 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): def current_event(self):
try: try:
@@ -104,13 +106,28 @@ class Event(models.Model):
null=True null=True
) )
photo_count = models.PositiveIntegerField(default=0, editable=False) photo_count = models.PositiveIntegerField(default=0, editable=False)
event_series = models.ForeignKey('Event', blank=True, null=True, event_series = models.ForeignKey(
'Event',
blank=True,
null=True,
on_delete=models.SET_NULL, editable=True, on_delete=models.SET_NULL, editable=True,
verbose_name=_('Event Series'), verbose_name=_('Event Series'),
help_text=_(u'Wenn dieser Event zu einer Veranstaltungsreihe gehört \ help_text=_(u'Wenn dieser Event zu einer Veranstaltungsreihe gehört \
werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen \ werden Ort, Beschreibung, Bild und Homepage von dem hier angegebenen \
Event übernommen.') 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() objects = EventManager()
class Meta(object): class Meta(object):
@@ -165,6 +182,10 @@ class Event(models.Model):
else: else:
return None return None
@property
def is_future_event(self):
return self.start > now()
def save(self, **kwargs): def save(self, **kwargs):
# Fülle fehlende Felder mit den Angaben der Hauptveranstaltung aus. # Fülle fehlende Felder mit den Angaben der Hauptveranstaltung aus.
if self.event_series: if self.event_series:
@@ -197,6 +218,18 @@ class Location(models.Model):
street_address = models.CharField(_('Street Address'), max_length=127) street_address = models.CharField(_('Street Address'), max_length=127)
locality = models.CharField(_('Locality'), max_length=127) locality = models.CharField(_('Locality'), max_length=127)
country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES) 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): class Meta(object):
verbose_name = _('Venue') verbose_name = _('Venue')
@@ -212,7 +245,6 @@ class Location(models.Model):
class PhotoManager(models.Manager): class PhotoManager(models.Manager):
def get_random(self, startpage=True): def get_random(self, startpage=True):
if startpage: if startpage:
queryset = self.filter(on_startpage=True) queryset = self.filter(on_startpage=True)
@@ -226,8 +258,11 @@ class PhotoManager(models.Manager):
class Photo(models.Model): class Photo(models.Model):
name = models.CharField(_("Name"), max_length=100, blank=True) name = models.CharField(_("Name"), max_length=100, blank=True)
image = ThumbnailerImageField(_("Image"), upload_to=get_upload_path, image = ThumbnailerImageField(
storage=OverwriteStorage()) _("Image"),
upload_to=get_upload_path,
storage=OverwriteStorage()
)
event = models.ForeignKey('events.Event') event = models.ForeignKey('events.Event')
description = models.TextField( description = models.TextField(
_("Description"), _("Description"),
@@ -247,6 +282,19 @@ class Photo(models.Model):
editable=False, editable=False,
default=0 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() objects = PhotoManager()
metadata = None metadata = None
orientation = 1 orientation = 1

View File

@@ -17,6 +17,5 @@ class EventSitemap(Sitemap):
return max(1 - delta, 0.1) return max(1 - delta, 0.1)
def lastmod(self, event): def lastmod(self, event):
return event.end return event.date_modified
return min(event.end, timezone.now())

View File

@@ -106,11 +106,8 @@
</p> </p>
</div> </div>
<br class="clear" /> <br class="clear" />
{% block event_content %} {% endblock %}
{% endblock %} {% endblock %}
{% block comments %} {% block comments %}
{% render_comment_list for event %} {% render_comment_list for event %}
{% render_comment_form for event %} {% render_comment_form for event %}
@@ -118,41 +115,11 @@
{% block buttonbar %} {% block buttonbar %}
{% if perms.events.change_event %} {% if perms.events.change_event %}
<a class="button" href="{{ event.get_edit_url }}"><span class="fa fa-pencil"></span> {% trans "Edit Event" %}</a> <a class="button" href="{{ event.get_edit_url }}"><span
class="fa fa-pencil"></span> {% trans "Edit Event" %}</a>
{% endif %} {% endif %}
{% if perms.events.add_event %} {% if perms.events.add_event %}
<a class="button" href="{{ event.get_eventseries_form_url }}"><span class="fa fa-calendar-plus-o"></span> {% trans "Add Dates" %}</a> <a class="button" href="{{ event.get_eventseries_form_url }}"><span
class="fa fa-calendar-plus-o"></span> {% trans "Add Dates" %}</a>
{% endif %} {% endif %}
{% endblock %} {% 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 %}

View File

@@ -3,7 +3,7 @@
{% block title %}{{ event.name }}{% endblock %} {% block title %}{{ event.name }}{% endblock %}
{% block event_content %} {% block main_content %}
<h3>Hier kommt eine Tabelle rein!</h3> <h3>Hier kommt eine Tabelle rein!</h3>
<form class="grid_12" method="post"> <form class="grid_12" method="post">
{% csrf_token %} {% csrf_token %}