def datetime_decorator(func, datetime_format=None, time_format=None, compare_date=None): compare_date = compare_date or TODAY() datetime_format = \ datetime_format or conf('DATETIME_FORMAT', 'F d, H:i') time_format = time_format or conf('TIME_FORMAT', 'H:i') @wraps(func) def wrapper(*args, **kwargs): value = func(*args, **kwargs) if not hasattr(value, 'date'): return value if value.date() == compare_date: format = time_format else: format = datetime_format return date_filter(value, format) return wrapper
def to_python(self, value): if not isinstance(value, basestring): return value if value == '': return value try: return simplejson.loads(value, encoding=conf('DEFAULT_CHARSET')) except ValueError, e: # If string could not parse as JSON it's means that it's Python # string saved to JSONField. return value
def test_conf(self): self.assertFalse(conf('DEBUG')) self.assertRaises(AttributeError, conf, 'DEBUGIOUS') self.assertTrue(conf('DEBUGIOUS', True))
import datetime import re from django import VERSION from django.core.serializers.json import DjangoJSONEncoder from django.db import models from django.utils import simplejson from django.utils.encoding import smart_str from django.utils.translation import ugettext_lazy as _ from kikola import forms from kikola.shortcuts import conf from kikola.utils import str_to_timedelta, timedelta_seconds if conf('USE_CPICKLE', False): import cPickle as pickle else: import pickle # Try to add custom fields to ``south`` app try: from south.modelsinspector import add_introspection_rules except ImportError: add_introspection_rules = lambda *args, **kwargs: None __all__ = ('JSONField', 'MonthField', 'PickleField', 'TimeDeltaField', 'URLField')
from django.core.serializers.json import DjangoJSONEncoder from django.template.defaultfilters import pluralize from django.utils.translation import ugettext, ungettext from kikola.shortcuts import conf from kikola.utils.digits import force_int __all__ = ('TimedeltaJSONEncoder', 'str_to_timedelta', 'timedelta_average', 'timedelta_div', 'timedelta_seconds', 'timedelta_to_str') SECONDS_PER_DAY = 86400 SECONDS_PER_WEEK = 604800 TIMEDELTA_FORMAT = conf('TIMEDELTA_FORMAT', 'G:i') TIMEDELTA_FORMATS = { 'd': (u'%(days)02d', r'(?P<days>\d{2,})'), 'f': (u'%(weeks)d%(short_weeks_label)s ' \ u'%(week_days)d%(short_week_days_label)s ' \ u'%(day_hours)d:%(hour_minutes)02d:%(minute_seconds)02d', r'((?P<weeks>\d+)%(short_weeks_label)s )?' \ r'((?P<week_days>\d{1,})%(short_week_days_label)s )?' \ r'(?P<hours>\d{1,2})\:(?P<minutes>\d{2})(\:(?P<seconds>\d{2}))?'), 'F': (u'%(weeks)d %(weeks_label)s, %(week_days)d %(week_days_label)s, ' \ u'%(day_hours)d:%(hour_minutes)02d:%(minute_seconds)02d', r'((?P<weeks>\d+) %(weeks_label)s, )?' \ r'((?P<week_days>\d{1,}) %(week_days_label)s, )?' \ r'(?P<hours>\d{1,2})\:(?P<minutes>\d{2})(\:(?P<seconds>\d{2}))?'), 'g': (u'%(day_hours)d', r'(?P<day_hours>\d{1,2})'), 'G': (u'%(hours)d', r'(?P<hours>\d+)'),
import datetime from django.core.urlresolvers import reverse from django.contrib.sites.models import Site from django.http import HttpRequest from django.template.defaultfilters import date from django.test import TestCase from kikola.core.context_processors import path from kikola.core.decorators import memoized, smart_datetime from kikola.shortcuts import conf DATETIME_FORMAT = conf('DATETIME_FORMAT', 'F d, H:i') DAY = datetime.timedelta(days=1) DEFAULT_CHARSET = conf('DEFAULT_CHARSET') NOW = datetime.datetime.now() TIME_FORMAT = conf('TIME_FORMAT', 'H:i') TODAY = datetime.date.today() YESTERDAY = TODAY - DAY TEST_DATETIME_FORMAT = 'Y-m-d H:i:s' TEST_SITE_DOMAIN = 'www.google.com' TEST_SITE_NAME = 'Google' TEST_TIME_FORMAT = 'G:i:s' class TestContextProcesors(TestCase): def test_path(self): # Test work with empty or corrupted HttpRequest instance
import datetime from django.core.urlresolvers import reverse from django.contrib.sites.models import Site from django.http import HttpRequest from django.template.defaultfilters import date from django.test import TestCase from kikola.core.context_processors import path from kikola.core.decorators import memoized, smart_datetime from kikola.shortcuts import conf DATETIME_FORMAT = conf('DATETIME_FORMAT', 'F d, H:i') DAY = datetime.timedelta(days=1) DEFAULT_CHARSET = conf('DEFAULT_CHARSET') NOW = datetime.datetime.now() TIME_FORMAT = conf('TIME_FORMAT', 'H:i') TODAY = datetime.date.today() YESTERDAY = TODAY - DAY TEST_DATETIME_FORMAT = 'Y-m-d H:i:s' TEST_SITE_DOMAIN = 'www.google.com' TEST_SITE_NAME = 'Google' TEST_TIME_FORMAT = 'G:i:s' class TestContextProcesors(TestCase): def test_path(self): # Test work with empty or corrupted HttpRequest instance request = HttpRequest() request.META = {'SERVER_NAME': 'www.google.com', 'SERVER_PORT': 80}
from django.core.serializers.json import DjangoJSONEncoder from django.db import models from django.utils import simplejson from django.utils.encoding import smart_str from django.utils.translation import ugettext_lazy as _ from kikola import forms from kikola.shortcuts import conf from kikola.utils import str_to_timedelta, timedelta_seconds __all__ = ('JSONField', 'MonthField', 'PickleField', 'TimeDeltaField', 'URLField') if conf('USE_CPICKLE', False): import cPickle as pickle else: import pickle class JSONField(models.TextField): """ Model field that stores all Python object as JSON string. You should set custom encoder class for dumps Python object to JSON data via ``encoder_cls`` keyword argument. By default, ``DjangoJSONEncoder`` would be used. """ __metaclass__ = models.SubfieldBase