misc: use django implementation of safe strftime (#19845)
This commit is contained in:
parent
eee2b42761
commit
f3bd582542
|
@ -1,6 +1,6 @@
|
|||
import datetime
|
||||
|
||||
from wcs.qommon.strftime import strftime
|
||||
from wcs.qommon.misc import strftime
|
||||
|
||||
def test():
|
||||
# Make sure that the day names are in order
|
||||
|
|
|
@ -84,13 +84,13 @@ def get_formdata_dict(formdata, user, consider_status_visibility=True):
|
|||
d = {'title': title,
|
||||
'name': formdata.formdef.name,
|
||||
'url': formdata.get_url(),
|
||||
'datetime': misc.strftime.strftime('%Y-%m-%d %H:%M:%S', formdata.receipt_time),
|
||||
'datetime': misc.strftime('%Y-%m-%d %H:%M:%S', formdata.receipt_time),
|
||||
'status': status.name,
|
||||
'status_css_class': status.extra_css_class,
|
||||
'keywords': formdata.formdef.keywords_list,
|
||||
}
|
||||
if formdata.last_update_time:
|
||||
d['last_update_time'] = misc.strftime.strftime('%Y-%m-%d %H:%M:%S', formdata.last_update_time)
|
||||
d['last_update_time'] = misc.strftime('%Y-%m-%d %H:%M:%S', formdata.last_update_time)
|
||||
d.update(formdata.get_substitution_variables(minimal=True))
|
||||
if get_request().form.get('full') == 'on':
|
||||
d.update(formdata.get_json_export_dict(include_files=False))
|
||||
|
@ -540,7 +540,7 @@ class ApiUserDirectory(Directory):
|
|||
d = {'title': title,
|
||||
'name': form.formdef.name,
|
||||
'url': url,
|
||||
'datetime': misc.strftime.strftime('%Y-%m-%d %H:%M:%S', form.receipt_time),
|
||||
'datetime': misc.strftime('%Y-%m-%d %H:%M:%S', form.receipt_time),
|
||||
'keywords': form.formdef.keywords_list,
|
||||
}
|
||||
if get_request().form.get('full') == 'on':
|
||||
|
|
|
@ -275,7 +275,7 @@ class UserViewDirectory(Directory):
|
|||
r += htmltext('<ul class="biglist c-360-user-view">')
|
||||
for formdata in cat_formdatas:
|
||||
status_label = formdata.get_status_label()
|
||||
submit_date = misc.strftime.strftime(
|
||||
submit_date = misc.strftime(
|
||||
misc.date_format(), formdata.receipt_time)
|
||||
formdata_key_id = (formdata.formdef.id, formdata.id)
|
||||
if formdata_key_id in viewable_formdatas_ids:
|
||||
|
@ -2095,7 +2095,7 @@ class FormBackOfficeStatusPage(FormStatusPage):
|
|||
status_label = status.name
|
||||
else:
|
||||
status_label = _('Unknown')
|
||||
submit_date = misc.strftime.strftime(
|
||||
submit_date = misc.strftime(
|
||||
misc.date_format(), formdata.receipt_time)
|
||||
if str(formdata.formdef_id) == str(self.formdef.id) and (
|
||||
str(formdata.id) == str(self.filled.id)):
|
||||
|
|
|
@ -29,11 +29,9 @@ from quixote.html import htmltext, TemplateIO
|
|||
from qommon import _
|
||||
from qommon import evalutils
|
||||
from qommon.form import *
|
||||
from qommon.misc import localstrftime, date_format, ellipsize
|
||||
from qommon.misc import localstrftime, strftime, date_format, ellipsize
|
||||
from qommon import get_cfg, get_logger
|
||||
|
||||
from qommon.strftime import strftime
|
||||
|
||||
import data_sources
|
||||
import portfolio
|
||||
|
||||
|
|
|
@ -611,8 +611,8 @@ class FormData(StorableObject):
|
|||
|
||||
if self.id:
|
||||
d.update({
|
||||
'form_receipt_date': qommon.strftime.strftime(qommon.misc.date_format(), self.receipt_time),
|
||||
'form_receipt_time': qommon.strftime.strftime('%H:%M', self.receipt_time),
|
||||
'form_receipt_date': qommon.misc.strftime(qommon.misc.date_format(), self.receipt_time),
|
||||
'form_receipt_time': qommon.misc.strftime('%H:%M', self.receipt_time),
|
||||
'form_number': str(self.get_display_id()),
|
||||
'form_number_raw': '%s' % self.id,
|
||||
'form_url': self.get_url(),
|
||||
|
|
|
@ -31,7 +31,6 @@ from qommon import _
|
|||
from qommon import template
|
||||
from qommon import get_logger
|
||||
from qommon.form import *
|
||||
from qommon.strftime import strftime
|
||||
|
||||
from qommon.admin.texts import TextsDirectory
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ from wcs.portfolio import has_portfolio
|
|||
|
||||
from qommon import _, ngettext
|
||||
import misc
|
||||
from strftime import strftime
|
||||
from .misc import strftime
|
||||
from publisher import get_cfg
|
||||
from . import ezt
|
||||
|
||||
|
|
|
@ -31,6 +31,8 @@ import tempfile
|
|||
import unicodedata
|
||||
import hashlib
|
||||
|
||||
from django.utils import datetime_safe
|
||||
|
||||
from quixote import get_publisher, get_response, get_request
|
||||
from quixote.html import htmltext
|
||||
|
||||
|
@ -38,8 +40,6 @@ from qommon import _
|
|||
from qommon import get_cfg, get_logger, ezt
|
||||
from qommon.errors import ConnectionError
|
||||
|
||||
import strftime
|
||||
|
||||
from urllib import urlencode, quote
|
||||
from urllib2 import urlparse
|
||||
from cStringIO import StringIO
|
||||
|
@ -156,10 +156,20 @@ def get_datetime_language():
|
|||
lang = os.environ.get('LC_ALL')[:2]
|
||||
return lang
|
||||
|
||||
def strftime(fmt, dt):
|
||||
if not dt:
|
||||
return ''
|
||||
if isinstance(dt, datetime.date):
|
||||
dt = datetime.datetime(dt.year, dt.month, dt.day)
|
||||
if not isinstance(dt, datetime.datetime):
|
||||
# consider it a 9 elements tuple
|
||||
dt = datetime.datetime(*dt[:6])
|
||||
return datetime_safe.strftime(dt, fmt)
|
||||
|
||||
def localstrftime(t):
|
||||
if not t:
|
||||
return ''
|
||||
return strftime.strftime(datetime_format(), t)
|
||||
return strftime(datetime_format(), t)
|
||||
|
||||
DATE_FORMATS = {
|
||||
'C': ['%Y-%m-%d'],
|
||||
|
|
|
@ -20,9 +20,8 @@ import re
|
|||
import xml.etree.ElementTree as ET
|
||||
import zipfile
|
||||
|
||||
from .misc import date_format, datetime_format
|
||||
from .misc import date_format, datetime_format, strftime
|
||||
from .evalutils import make_date, make_datetime
|
||||
from .strftime import strftime
|
||||
|
||||
NS = {
|
||||
'fo': 'urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0',
|
||||
|
|
|
@ -58,7 +58,6 @@ import logging
|
|||
import logging.handlers
|
||||
import logger
|
||||
import storage
|
||||
import strftime
|
||||
import urllib
|
||||
|
||||
class ImmediateRedirectException(Exception):
|
||||
|
@ -988,7 +987,7 @@ class QommonPublisher(Publisher, object):
|
|||
'site_url': self.get_frontoffice_url(),
|
||||
'site_url_backoffice': self.get_backoffice_url(),
|
||||
'site_lang': (get_request() and hasattr(get_request(), 'language') and get_request().language) or 'en',
|
||||
'today': strftime.strftime(misc.date_format(), time.localtime()),
|
||||
'today': misc.strftime(misc.date_format(), time.localtime()),
|
||||
'now': misc.localstrftime(time.localtime()),
|
||||
'is_in_backoffice': (self.get_request() and self.get_request().is_in_backoffice()),
|
||||
}
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
# Format a datetime.date using the proleptic Gregorian calendar
|
||||
## http://coding.derkeiler.com/Archive/Python/comp.lang.python/2004-09/5281.html
|
||||
## edited to support 9-value tuple as entry
|
||||
|
||||
import datetime
|
||||
import time
|
||||
|
||||
def _findall(text, substr):
|
||||
# Also finds overlaps
|
||||
sites = []
|
||||
i = 0
|
||||
while 1:
|
||||
j = text.find(substr, i)
|
||||
if j == -1:
|
||||
break
|
||||
sites.append(j)
|
||||
i=j+1
|
||||
return sites
|
||||
|
||||
# I hope I did this math right. Every 28 years the
|
||||
# calendar repeats, except through century leap years
|
||||
# excepting the 400 year leap years. But only if
|
||||
# you're using the Gregorian calendar.
|
||||
|
||||
def strftime(fmt, dt):
|
||||
if not dt:
|
||||
return ''
|
||||
if not isinstance(dt, datetime.datetime) and not isinstance(dt, datetime.date):
|
||||
# consider it a 9 elements tuple
|
||||
dt = datetime.datetime(*dt[:6])
|
||||
# WARNING: known bug with "%s", which is the number
|
||||
# of seconds since the epoch. This is too harsh
|
||||
# of a check. It should allow "%%s".
|
||||
fmt = fmt.replace("%s", "s")
|
||||
if dt.year > 1900:
|
||||
return time.strftime(fmt, dt.timetuple())
|
||||
|
||||
year = dt.year
|
||||
# For every non-leap year century, advance by
|
||||
# 6 years to get into the 28-year repeat cycle
|
||||
delta = 2000 - year
|
||||
off = 6*(delta // 100 + delta // 400)
|
||||
year = year + off
|
||||
|
||||
# Move to around the year 2000
|
||||
year = year + ((2000 - year)//28)*28
|
||||
timetuple = dt.timetuple()
|
||||
s1 = time.strftime(fmt, (year,) + timetuple[1:])
|
||||
sites1 = _findall(s1, str(year))
|
||||
|
||||
s2 = time.strftime(fmt, (year+28,) + timetuple[1:])
|
||||
sites2 = _findall(s2, str(year+28))
|
||||
|
||||
sites = []
|
||||
for site in sites1:
|
||||
if site in sites2:
|
||||
sites.append(site)
|
||||
|
||||
s = s1
|
||||
syear = "%4d" % (dt.year,)
|
||||
for site in sites:
|
||||
s = s[:site] + syear + s[site+4:]
|
||||
return s
|
Loading…
Reference in New Issue