Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
 def test_conf(self):
     self.assertFalse(conf('DEBUG'))
     self.assertRaises(AttributeError, conf, 'DEBUGIOUS')
     self.assertTrue(conf('DEBUGIOUS', True))
Esempio n. 5
0
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')

Esempio n. 6
0
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+)'),
Esempio n. 7
0
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
Esempio n. 8
0
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}
Esempio n. 9
0
 def test_conf(self):
     self.assertFalse(conf('DEBUG'))
     self.assertRaises(AttributeError, conf, 'DEBUGIOUS')
     self.assertTrue(conf('DEBUGIOUS', True))
Esempio n. 10
0
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