From a341acb4f04cf238bee4f0b454506b8744eb3bf2 Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Sun, 14 Feb 2016 16:34:39 -0600 Subject: [PATCH] Make our `DateTimeFieldRenderer` the default for datetime fields. --- tailbone/app.py | 4 +--- tailbone/forms/renderers/common.py | 9 +-------- tailbone/views/batches/core.py | 5 ++--- tailbone/views/bouncer.py | 3 --- tailbone/views/continuum.py | 2 -- tailbone/views/datasync.py | 2 -- tailbone/views/messages.py | 4 ++-- tailbone/views/products.py | 8 +++----- 8 files changed, 9 insertions(+), 28 deletions(-) diff --git a/tailbone/app.py b/tailbone/app.py index d598fe7c..a0273acd 100644 --- a/tailbone/app.py +++ b/tailbone/app.py @@ -136,9 +136,7 @@ def make_pyramid_config(settings): formalchemy.config.engine = TemplateEngine() formalchemy.FieldSet.default_renderers[sa.Boolean] = renderers.YesNoFieldRenderer formalchemy.FieldSet.default_renderers[sa.Date] = renderers.DateFieldRenderer - # TODO: Maybe implement our own some day, but for now we must include this - # DateTime fix to work around a bug in edbob code. - formalchemy.FieldSet.default_renderers[sa.DateTime] = formalchemy.DateTimeFieldRenderer + formalchemy.FieldSet.default_renderers[sa.DateTime] = renderers.DateTimeFieldRenderer formalchemy.FieldSet.default_renderers[GPCType] = renderers.GPCFieldRenderer return config diff --git a/tailbone/forms/renderers/common.py b/tailbone/forms/renderers/common.py index 5d2aa330..b8c3831d 100644 --- a/tailbone/forms/renderers/common.py +++ b/tailbone/forms/renderers/common.py @@ -82,18 +82,11 @@ class DateTimeFieldRenderer(formalchemy.DateTimeFieldRenderer): read-only mode, leveraging config to show the correct timezone. """ - def __init__(self, config): - self.config = config - - def __call__(self, field): - super(DateTimeFieldRenderer, self).__init__(field) - return self - def render_readonly(self, **kwargs): value = self.raw_value if not value: return '' - return pretty_datetime(self.config, value) + return pretty_datetime(self.request.rattail_config, value) class EnumFieldRenderer(SelectFieldRenderer): diff --git a/tailbone/views/batches/core.py b/tailbone/views/batches/core.py index 2e98dd85..a6c6de8f 100644 --- a/tailbone/views/batches/core.py +++ b/tailbone/views/batches/core.py @@ -31,7 +31,7 @@ from pyramid.renderers import render_to_response from webhelpers.html import tags -from tailbone.forms import DateTimeFieldRenderer, EnumFieldRenderer +from tailbone.forms import EnumFieldRenderer from ...grids.search import BooleanSearchFilter from .. import SearchableAlchemyGridView, CrudView, View from ...progress import SessionProgress @@ -92,7 +92,6 @@ class BatchesGrid(SearchableAlchemyGridView): g.destination, g.description, g.rowcount.label("Row Count"), - g.executed.with_renderer(DateTimeFieldRenderer(self.request.rattail_config)), ], readonly=True) if self.request.has_perm('batches.read'): @@ -127,7 +126,7 @@ class BatchCrud(CrudView): fs.action_type, fs.description, fs.rowcount.label("Row Count").readonly(), - fs.executed.with_renderer(DateTimeFieldRenderer(self.request.rattail_config)).readonly(), + fs.executed.readonly(), ]) return fs diff --git a/tailbone/views/bouncer.py b/tailbone/views/bouncer.py index ac48399e..6950fb09 100644 --- a/tailbone/views/bouncer.py +++ b/tailbone/views/bouncer.py @@ -104,7 +104,6 @@ class EmailBouncesGrid(SearchableAlchemyGridView): def grid(self): g = self.make_grid() - g.bounced.set(renderer=renderers.DateTimeFieldRenderer(self.rattail_config)) g.configure( include=[ g.config_key.label("Source"), @@ -152,8 +151,6 @@ class EmailBounceCrud(CrudView): assert isinstance(bounce, model.EmailBounce) handler = self.get_handler(bounce) fs = self.make_fieldset(bounce) - fs.bounced.set(renderer=renderers.DateTimeFieldRenderer(self.rattail_config)) - fs.processed.set(renderer=renderers.DateTimeFieldRenderer(self.rattail_config)) fs.append(formalchemy.Field('message', value=handler.msgpath(bounce), renderer=BounceMessageFieldRenderer.new(self.request, handler))) diff --git a/tailbone/views/continuum.py b/tailbone/views/continuum.py index 3c915f27..9fa95706 100644 --- a/tailbone/views/continuum.py +++ b/tailbone/views/continuum.py @@ -37,7 +37,6 @@ from pyramid.httpexceptions import HTTPNotFound from tailbone.db import Session from tailbone.views import PagedAlchemyGridView, View -from tailbone.forms import DateTimeFieldRenderer class VersionView(PagedAlchemyGridView): @@ -125,7 +124,6 @@ class VersionView(PagedAlchemyGridView): def grid(self): g = self.make_grid() - g.issued_at.set(renderer=DateTimeFieldRenderer(self.request.rattail_config)) g.configure( include=[ g.issued_at.label("When"), diff --git a/tailbone/views/datasync.py b/tailbone/views/datasync.py index db30dd23..876ac08d 100644 --- a/tailbone/views/datasync.py +++ b/tailbone/views/datasync.py @@ -32,7 +32,6 @@ import logging from rattail.db import model from rattail.config import parse_list -from tailbone import forms from tailbone.views import MasterView @@ -55,7 +54,6 @@ class DataSyncChangeView(MasterView): def configure_grid(self, g): g.default_sortkey = 'obtained' - g.obtained.set(renderer=forms.DateTimeFieldRenderer(self.rattail_config)) g.configure( include=[ g.source, diff --git a/tailbone/views/messages.py b/tailbone/views/messages.py index 3b357902..82d8f375 100644 --- a/tailbone/views/messages.py +++ b/tailbone/views/messages.py @@ -176,7 +176,7 @@ class MessagesView(MasterView): g.subject.with_renderer(SubjectFieldRenderer), g.sender.with_renderer(SenderFieldRenderer).label("From"), g.recipients.with_renderer(TerseRecipientsFieldRenderer).label("To"), - g.sent.with_renderer(forms.renderers.DateTimeFieldRenderer(self.rattail_config)), + g.sent, ], readonly=True) @@ -256,7 +256,7 @@ class MessagesView(MasterView): fs.configure(include=[ fs.sender.with_renderer(SenderFieldRenderer).label("From"), fs.recipients.with_renderer(RecipientsFieldRenderer).label("To"), - fs.sent.with_renderer(forms.renderers.DateTimeFieldRenderer(self.rattail_config)), + fs.sent, fs.subject, ]) diff --git a/tailbone/views/products.py b/tailbone/views/products.py index 21b95b1d..717c8782 100644 --- a/tailbone/views/products.py +++ b/tailbone/views/products.py @@ -38,7 +38,7 @@ from rattail.gpc import GPC from rattail.threads import Thread from rattail.exceptions import LabelPrintingError -import formalchemy +import formalchemy as fa from pyramid import httpexceptions from pyramid.renderers import render_to_response from webhelpers.html import tags @@ -227,11 +227,9 @@ class ProductsView(MasterView): fs.unit_of_measure.set(renderer=forms.renderers.EnumFieldRenderer(enum.UNIT_OF_MEASURE)) fs.regular_price.set(renderer=forms.renderers.PriceFieldRenderer) fs.current_price.set(renderer=forms.renderers.PriceFieldRenderer) - fs.last_sold.set(renderer=forms.renderers.DateTimeFieldRenderer(self.rattail_config)) - fs.append(formalchemy.Field('current_price_ends', - value=lambda p: p.current_price.ends if p.current_price else None, - renderer=forms.renderers.DateTimeFieldRenderer(self.rattail_config))) + fs.append(fa.Field('current_price_ends', type=fa.types.DateTime, + value=lambda p: p.current_price.ends if p.current_price else None)) fs.configure( include=[