From 00fc38ede1c3f1a8a6cbccc8a334a7cdc21cc302 Mon Sep 17 00:00:00 2001 From: "Martin J. Laubach" Date: Wed, 13 Apr 2016 13:13:45 +0200 Subject: [PATCH 1/2] [a764a9c] Adjust dev status on .pre versions too [3ead0ab] Add on_delete=PROTECT to media file reference, so deleting a media file won't silently delete all ContentWithMediaFile. [9b279fb] Allow navigationgroup to be blank --- feincms/module/medialibrary/fields.py | 4 +++- feincms/module/page/extensions/navigationgroups.py | 1 + setup.py | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/feincms/module/medialibrary/fields.py b/feincms/module/medialibrary/fields.py index 17ffb373a..e37728a81 100644 --- a/feincms/module/medialibrary/fields.py +++ b/feincms/module/medialibrary/fields.py @@ -69,7 +69,9 @@ class feincms_item_editor_inline(FeinCMSInline): raw_id_fields = ('mediafile',) mediafile = MediaFileForeignKey( - MediaFile, verbose_name=_('media file'), related_name='+') + MediaFile, verbose_name=_('media file'), related_name='+', + on_delete=models.PROTECT + ) class Meta: abstract = True diff --git a/feincms/module/page/extensions/navigationgroups.py b/feincms/module/page/extensions/navigationgroups.py index fb07eb582..fc47ec033 100644 --- a/feincms/module/page/extensions/navigationgroups.py +++ b/feincms/module/page/extensions/navigationgroups.py @@ -26,6 +26,7 @@ def handle_model(self): choices=self.groups, default=self.groups[0][0], max_length=20, + blank=True, db_index=True)) def handle_modeladmin(self, modeladmin): diff --git a/setup.py b/setup.py index 5320bc2c8..0ce2192b5 100755 --- a/setup.py +++ b/setup.py @@ -14,6 +14,8 @@ def read(filename): devstatus = 'Development Status :: 5 - Production/Stable' if '.dev' in version: devstatus = 'Development Status :: 3 - Alpha' +elif '.pre' in version: + devstatus = 'Development Status :: 4 - Beta' setup( name='FeinCMS', From 99cdbe8cf076ec6978313adccd716e5770a79248 Mon Sep 17 00:00:00 2001 From: "Martin J. Laubach" Date: Mon, 31 Oct 2016 09:42:05 +0100 Subject: [PATCH 2/2] Version of 01bd084 for this branch. --- feincms/module/extensions/datepublisher.py | 30 +++++++++++++++++----- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/feincms/module/extensions/datepublisher.py b/feincms/module/extensions/datepublisher.py index f3276c96b..9d0ea9f94 100644 --- a/feincms/module/extensions/datepublisher.py +++ b/feincms/module/extensions/datepublisher.py @@ -11,6 +11,7 @@ from __future__ import absolute_import, unicode_literals from datetime import datetime +from pytz import AmbiguousTimeError from django.db import models from django.db.models import Q @@ -47,7 +48,7 @@ def latest_children(self): # ------------------------------------------------------------------------ -def granular_now(n=None): +def granular_now(n=None, default_tz=None): """ A datetime.now look-alike that returns times rounded to a five minute boundary. This helps the backend database to optimize/reuse/cache its @@ -57,12 +58,27 @@ def granular_now(n=None): """ if n is None: n = timezone.now() - # WARNING/TODO: make_aware can raise a pytz NonExistentTimeError or - # AmbiguousTimeError if the resultant time is invalid in n.tzinfo - # -- see https://github.com/feincms/feincms/commit/5d0363df - return timezone.make_aware( - datetime(n.year, n.month, n.day, n.hour, (n.minute // 5) * 5), - n.tzinfo) + if default_tz is None: + default_tz = n.tzinfo + + # Django 1.9: + # The correct way to resolve the AmbiguousTimeError every dst + # transition is... the is_dst parameter appeared with 1.9 + # make_aware(some_datetime, get_current_timezone(), is_dst=True) + + rounded_minute = (n.minute // 5) * 5 + d = datetime(n.year, n.month, n.day, n.hour, rounded_minute) + try: + retval = timezone.make_aware(d, default_tz) + except AmbiguousTimeError: + try: + retval = timezone.make_aware(d, default_tz, is_dst=False) + except TypeError: # Pre-Django 1.9 + retval = timezone.make_aware( + datetime(n.year, n.month, n.day, n.hour + 1, rounded_minute), + default_tz) + + return retval # ------------------------------------------------------------------------