Remove some more edbob cruft.
This commit is contained in:
parent
9806c7a0a2
commit
8bf292ebac
|
@ -26,15 +26,11 @@ Common Field Renderers
|
||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import pytz
|
|
||||||
import humanize
|
|
||||||
|
|
||||||
import formalchemy
|
import formalchemy
|
||||||
from formalchemy.fields import FieldRenderer, SelectFieldRenderer, CheckBoxFieldRenderer
|
from formalchemy.fields import FieldRenderer, SelectFieldRenderer, CheckBoxFieldRenderer
|
||||||
from pyramid.renderers import render
|
from pyramid.renderers import render
|
||||||
from webhelpers.html import HTML
|
|
||||||
|
|
||||||
from rattail.time import timezone
|
from tailbone.util import pretty_datetime
|
||||||
|
|
||||||
|
|
||||||
class AutocompleteFieldRenderer(FieldRenderer):
|
class AutocompleteFieldRenderer(FieldRenderer):
|
||||||
|
@ -80,34 +76,6 @@ class AutocompleteFieldRenderer(FieldRenderer):
|
||||||
return unicode(value)
|
return unicode(value)
|
||||||
|
|
||||||
|
|
||||||
def pretty_datetime(config, value):
|
|
||||||
"""
|
|
||||||
Formats a datetime as a "pretty" human-readable string, with a tooltip
|
|
||||||
showing the ISO string value.
|
|
||||||
|
|
||||||
:param config: Reference to a config object.
|
|
||||||
|
|
||||||
:param value: A ``datetime.datetime`` instance. Note that if this instance
|
|
||||||
is not timezone-aware, its timezone is assumed to be UTC.
|
|
||||||
"""
|
|
||||||
if not value:
|
|
||||||
return ''
|
|
||||||
|
|
||||||
# Make sure we're dealing with a tz-aware value. If we're given a naive
|
|
||||||
# value, we assume it to be local to the UTC timezone.
|
|
||||||
if not value.tzinfo:
|
|
||||||
value = pytz.utc.localize(value)
|
|
||||||
|
|
||||||
# Convert value to local timezone, and make a naive copy.
|
|
||||||
local = timezone(config)
|
|
||||||
value = local.normalize(value.astimezone(local))
|
|
||||||
naive_value = value.replace(tzinfo=None)
|
|
||||||
|
|
||||||
return HTML.tag('span',
|
|
||||||
title=value.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
|
|
||||||
c=humanize.naturaltime(naive_value))
|
|
||||||
|
|
||||||
|
|
||||||
class DateTimeFieldRenderer(formalchemy.DateTimeFieldRenderer):
|
class DateTimeFieldRenderer(formalchemy.DateTimeFieldRenderer):
|
||||||
"""
|
"""
|
||||||
Custom date/time field renderer, which displays a "pretty" value in
|
Custom date/time field renderer, which displays a "pretty" value in
|
||||||
|
|
|
@ -30,7 +30,8 @@ from formalchemy import TextFieldRenderer
|
||||||
from rattail.gpc import GPC
|
from rattail.gpc import GPC
|
||||||
from .common import AutocompleteFieldRenderer
|
from .common import AutocompleteFieldRenderer
|
||||||
from webhelpers.html import literal
|
from webhelpers.html import literal
|
||||||
from edbob.pyramid.forms import pretty_datetime
|
|
||||||
|
from tailbone.util import pretty_datetime
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['ProductFieldRenderer', 'GPCFieldRenderer',
|
__all__ = ['ProductFieldRenderer', 'GPCFieldRenderer',
|
||||||
|
@ -122,5 +123,6 @@ class PriceWithExpirationFieldRenderer(PriceFieldRenderer):
|
||||||
if result:
|
if result:
|
||||||
price = self.field.raw_value
|
price = self.field.raw_value
|
||||||
if price.ends:
|
if price.ends:
|
||||||
result += ' (%s)' % pretty_datetime(price.ends, from_='utc')
|
result = '{0} ({1})'.format(
|
||||||
|
result, pretty_datetime(self.request.rattail_config, price.ends))
|
||||||
return result
|
return result
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#!/usr/bin/env python
|
# -*- coding: utf-8 -*-
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2012 Lance Edgar
|
# Copyright © 2010-2014 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -21,18 +20,19 @@
|
||||||
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Template Context Helpers
|
Template Context Helpers
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
from webhelpers.html import *
|
from webhelpers.html import *
|
||||||
from webhelpers.html.tags import *
|
from webhelpers.html.tags import *
|
||||||
|
|
||||||
from edbob.pyramid.forms import pretty_datetime
|
from tailbone.util import pretty_datetime
|
||||||
|
|
||||||
|
|
||||||
def pretty_date(date):
|
def pretty_date(date):
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#!/usr/bin/env python
|
# -*- coding: utf-8 -*-
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2012 Lance Edgar
|
# Copyright © 2010-2014 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -21,13 +20,12 @@
|
||||||
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Static Assets
|
Static Assets
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
||||||
def includeme(config):
|
def includeme(config):
|
||||||
# TODO: Remove edbob.
|
|
||||||
config.include('edbob.pyramid.static')
|
|
||||||
config.add_static_view('tailbone', 'tailbone:static')
|
config.add_static_view('tailbone', 'tailbone:static')
|
||||||
|
|
32
tailbone/static/css/perms.css
Normal file
32
tailbone/static/css/perms.css
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
|
||||||
|
/******************************
|
||||||
|
* Permission Lists
|
||||||
|
******************************/
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field div.group {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field div.group p {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field label {
|
||||||
|
float: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field label input {
|
||||||
|
margin-left: 15px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field div.group p.perm {
|
||||||
|
font-weight: normal;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.field-wrapper.permissions div.field div.group p.perm span {
|
||||||
|
font-family: monospace;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
|
@ -4,10 +4,10 @@
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
||||||
<title>Working...</title>
|
<title>Working...</title>
|
||||||
${h.javascript_link(request.static_url('edbob.pyramid:static/js/jquery.js'))}
|
${h.javascript_link(request.static_url('tailbone:static/js/lib/jquery-1.9.1.min.js'))}
|
||||||
${h.javascript_link(request.static_url('edbob.pyramid:static/js/edbob.js'))}
|
${h.javascript_link(request.static_url('tailbone:static/js/tailbone.js'))}
|
||||||
${h.stylesheet_link(request.static_url('edbob.pyramid:static/css/base.css'))}
|
${h.stylesheet_link(request.static_url('tailbone:static/css/base.css'))}
|
||||||
${h.stylesheet_link(request.static_url('edbob.pyramid:static/css/layout.css'))}
|
${h.stylesheet_link(request.static_url('tailbone:static/css/layout.css'))}
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
|
||||||
#container {
|
#container {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
## -*- coding: utf-8 -*-
|
## -*- coding: utf-8 -*-
|
||||||
<%inherit file="edbob.pyramid:templates/crud.mako" />
|
<%inherit file="/crud.mako" />
|
||||||
|
|
||||||
<%def name="head_tags()">
|
<%def name="head_tags()">
|
||||||
${parent.head_tags()}
|
${parent.head_tags()}
|
||||||
${h.stylesheet_link(request.static_url('edbob.pyramid:static/css/perms.css'))}
|
${h.stylesheet_link(request.static_url('tailbone:static/css/perms.css'))}
|
||||||
</%def>
|
</%def>
|
||||||
|
|
||||||
<%def name="context_menu_items()">
|
<%def name="context_menu_items()">
|
||||||
|
|
62
tailbone/util.py
Normal file
62
tailbone/util.py
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# Rattail -- Retail Software Framework
|
||||||
|
# Copyright © 2010-2014 Lance Edgar
|
||||||
|
#
|
||||||
|
# This file is part of Rattail.
|
||||||
|
#
|
||||||
|
# Rattail is free software: you can redistribute it and/or modify it under the
|
||||||
|
# terms of the GNU Affero General Public License as published by the Free
|
||||||
|
# Software Foundation, either version 3 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||||
|
# FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
|
||||||
|
# more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
"""
|
||||||
|
Utilities
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import pytz
|
||||||
|
import humanize
|
||||||
|
|
||||||
|
from webhelpers.html import HTML
|
||||||
|
|
||||||
|
from rattail.time import timezone
|
||||||
|
|
||||||
|
|
||||||
|
def pretty_datetime(config, value):
|
||||||
|
"""
|
||||||
|
Formats a datetime as a "pretty" human-readable string, with a tooltip
|
||||||
|
showing the ISO string value.
|
||||||
|
|
||||||
|
:param config: Reference to a config object.
|
||||||
|
|
||||||
|
:param value: A ``datetime.datetime`` instance. Note that if this instance
|
||||||
|
is not timezone-aware, its timezone is assumed to be UTC.
|
||||||
|
"""
|
||||||
|
if not value:
|
||||||
|
return ''
|
||||||
|
|
||||||
|
# Make sure we're dealing with a tz-aware value. If we're given a naive
|
||||||
|
# value, we assume it to be local to the UTC timezone.
|
||||||
|
if not value.tzinfo:
|
||||||
|
value = pytz.utc.localize(value)
|
||||||
|
|
||||||
|
# Convert value to local timezone, and make a naive copy.
|
||||||
|
local = timezone(config)
|
||||||
|
value = local.normalize(value.astimezone(local))
|
||||||
|
naive_value = value.replace(tzinfo=None)
|
||||||
|
|
||||||
|
return HTML.tag('span',
|
||||||
|
title=value.strftime('%Y-%m-%d %H:%M:%S %Z%z'),
|
||||||
|
c=humanize.naturaltime(naive_value))
|
|
@ -1,9 +1,8 @@
|
||||||
#!/usr/bin/env python
|
# -*- coding: utf-8 -*-
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2012 Lance Edgar
|
# Copyright © 2010-2014 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -21,11 +20,12 @@
|
||||||
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Auth Views
|
Auth Views
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from pyramid.httpexceptions import HTTPFound
|
from pyramid.httpexceptions import HTTPFound
|
||||||
from pyramid.security import remember, forget, authenticated_userid
|
from pyramid.security import remember, forget, authenticated_userid
|
||||||
|
|
||||||
|
@ -36,7 +36,8 @@ import formencode
|
||||||
from pyramid_simpleform import Form
|
from pyramid_simpleform import Form
|
||||||
from ..forms.simpleform import FormRenderer
|
from ..forms.simpleform import FormRenderer
|
||||||
|
|
||||||
import edbob
|
from rattail.time import localtime
|
||||||
|
|
||||||
from ..db import Session
|
from ..db import Session
|
||||||
from rattail.db.auth import authenticate_user, set_user_password
|
from rattail.db.auth import authenticate_user, set_user_password
|
||||||
|
|
||||||
|
@ -85,20 +86,13 @@ def login(request):
|
||||||
form.data['username'],
|
form.data['username'],
|
||||||
form.data['password'])
|
form.data['password'])
|
||||||
if user:
|
if user:
|
||||||
request.session.flash("%s logged in at %s" % (
|
request.session.flash("{0} logged in at {1}".format(
|
||||||
user.display_name,
|
user, localtime(request.rattail_config).strftime('%I:%M %p')))
|
||||||
edbob.local_time().strftime('%I:%M %p')))
|
|
||||||
headers = remember(request, user.uuid)
|
headers = remember(request, user.uuid)
|
||||||
return HTTPFound(location=referrer, headers=headers)
|
return HTTPFound(location=referrer, headers=headers)
|
||||||
request.session.flash("Invalid username or password")
|
request.session.flash("Invalid username or password")
|
||||||
|
|
||||||
url = request.rattail_config.get('edbob.pyramid', 'login.logo_url',
|
return {'form': FormRenderer(form), 'referrer': referrer}
|
||||||
default=request.static_url('edbob.pyramid:static/img/logo.jpg'))
|
|
||||||
kwargs = eval(request.rattail_config.get('edbob.pyramid', 'login.logo_kwargs',
|
|
||||||
default="dict(width=500)"))
|
|
||||||
|
|
||||||
return {'form': FormRenderer(form), 'referrer': referrer,
|
|
||||||
'logo_url': url, 'logo_kwargs': kwargs}
|
|
||||||
|
|
||||||
|
|
||||||
def logout(request):
|
def logout(request):
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
#!/usr/bin/env python
|
# -*- coding: utf-8 -*-
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
################################################################################
|
################################################################################
|
||||||
#
|
#
|
||||||
# Rattail -- Retail Software Framework
|
# Rattail -- Retail Software Framework
|
||||||
# Copyright © 2010-2012 Lance Edgar
|
# Copyright © 2010-2014 Lance Edgar
|
||||||
#
|
#
|
||||||
# This file is part of Rattail.
|
# This file is part of Rattail.
|
||||||
#
|
#
|
||||||
|
@ -21,18 +20,18 @@
|
||||||
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
# along with Rattail. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Core Batch Views
|
Core Batch Views
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from pyramid.httpexceptions import HTTPFound
|
from pyramid.httpexceptions import HTTPFound
|
||||||
from pyramid.renderers import render_to_response
|
from pyramid.renderers import render_to_response
|
||||||
|
|
||||||
from webhelpers.html import tags
|
from webhelpers.html import tags
|
||||||
|
|
||||||
from edbob.pyramid.forms import PrettyDateTimeFieldRenderer
|
from tailbone.forms import DateTimeFieldRenderer, EnumFieldRenderer
|
||||||
from ...forms import EnumFieldRenderer
|
|
||||||
from ...grids.search import BooleanSearchFilter
|
from ...grids.search import BooleanSearchFilter
|
||||||
from .. import SearchableAlchemyGridView, CrudView, View
|
from .. import SearchableAlchemyGridView, CrudView, View
|
||||||
from ...progress import SessionProgress
|
from ...progress import SessionProgress
|
||||||
|
@ -86,7 +85,6 @@ class BatchesGrid(SearchableAlchemyGridView):
|
||||||
|
|
||||||
def grid(self):
|
def grid(self):
|
||||||
g = self.make_grid()
|
g = self.make_grid()
|
||||||
g.executed.set(renderer=PrettyDateTimeFieldRenderer(from_='utc'))
|
|
||||||
g.configure(
|
g.configure(
|
||||||
include=[
|
include=[
|
||||||
g.source,
|
g.source,
|
||||||
|
@ -94,7 +92,7 @@ class BatchesGrid(SearchableAlchemyGridView):
|
||||||
g.destination,
|
g.destination,
|
||||||
g.description,
|
g.description,
|
||||||
g.rowcount.label("Row Count"),
|
g.rowcount.label("Row Count"),
|
||||||
g.executed,
|
g.executed.with_renderer(DateTimeFieldRenderer(self.request.rattail_config)),
|
||||||
],
|
],
|
||||||
readonly=True)
|
readonly=True)
|
||||||
if self.request.has_perm('batches.read'):
|
if self.request.has_perm('batches.read'):
|
||||||
|
@ -121,7 +119,6 @@ class BatchCrud(CrudView):
|
||||||
def fieldset(self, model):
|
def fieldset(self, model):
|
||||||
fs = self.make_fieldset(model)
|
fs = self.make_fieldset(model)
|
||||||
fs.action_type.set(renderer=EnumFieldRenderer(enum.BATCH_ACTION))
|
fs.action_type.set(renderer=EnumFieldRenderer(enum.BATCH_ACTION))
|
||||||
fs.executed.set(renderer=PrettyDateTimeFieldRenderer(from_='utc'))
|
|
||||||
fs.configure(
|
fs.configure(
|
||||||
include=[
|
include=[
|
||||||
fs.source,
|
fs.source,
|
||||||
|
@ -130,7 +127,7 @@ class BatchCrud(CrudView):
|
||||||
fs.action_type,
|
fs.action_type,
|
||||||
fs.description,
|
fs.description,
|
||||||
fs.rowcount.label("Row Count").readonly(),
|
fs.rowcount.label("Row Count").readonly(),
|
||||||
fs.executed.readonly(),
|
fs.executed.with_renderer(DateTimeFieldRenderer(self.request.rattail_config)).readonly(),
|
||||||
])
|
])
|
||||||
return fs
|
return fs
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ from ..forms import AlchemyForm
|
||||||
from formalchemy import FieldSet
|
from formalchemy import FieldSet
|
||||||
from ..db import Session
|
from ..db import Session
|
||||||
|
|
||||||
from edbob.util import requires_impl, prettify
|
from edbob.util import prettify
|
||||||
|
|
||||||
|
|
||||||
__all__ = ['CrudView']
|
__all__ = ['CrudView']
|
||||||
|
@ -46,18 +46,16 @@ class CrudView(View):
|
||||||
update_cancel_route = None
|
update_cancel_route = None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@requires_impl(is_property=True)
|
|
||||||
def mapped_class(self):
|
def mapped_class(self):
|
||||||
pass
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def pretty_name(self):
|
def pretty_name(self):
|
||||||
return self.mapped_class.__name__
|
return self.mapped_class.__name__
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@requires_impl(is_property=True)
|
|
||||||
def home_route(self):
|
def home_route(self):
|
||||||
pass
|
raise NotImplementedError
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def home_url(self):
|
def home_url(self):
|
||||||
|
|
|
@ -37,7 +37,6 @@ from webhelpers.html.tags import link_to
|
||||||
from pyramid.httpexceptions import HTTPFound
|
from pyramid.httpexceptions import HTTPFound
|
||||||
from pyramid.renderers import render_to_response
|
from pyramid.renderers import render_to_response
|
||||||
|
|
||||||
import edbob
|
|
||||||
from . import SearchableAlchemyGridView
|
from . import SearchableAlchemyGridView
|
||||||
|
|
||||||
import rattail.labels
|
import rattail.labels
|
||||||
|
|
|
@ -35,12 +35,11 @@ from pyramid.response import Response
|
||||||
|
|
||||||
from ..db import Session
|
from ..db import Session
|
||||||
|
|
||||||
from edbob.time import local_time
|
|
||||||
|
|
||||||
import rattail
|
import rattail
|
||||||
from rattail import enum
|
from rattail import enum
|
||||||
from rattail.db import model
|
from rattail.db import model
|
||||||
from rattail.files import resource_path
|
from rattail.files import resource_path
|
||||||
|
from rattail.time import localtime
|
||||||
|
|
||||||
|
|
||||||
plu_upc_pattern = re.compile(r'^000000000(\d{5})$')
|
plu_upc_pattern = re.compile(r'^000000000(\d{5})$')
|
||||||
|
@ -112,7 +111,7 @@ class OrderingWorksheet(View):
|
||||||
key = '{0} {1}'.format(brand, product.description)
|
key = '{0} {1}'.format(brand, product.description)
|
||||||
return key
|
return key
|
||||||
|
|
||||||
now = local_time()
|
now = localtime(self.request.rattail_config)
|
||||||
data = dict(
|
data = dict(
|
||||||
vendor=vendor,
|
vendor=vendor,
|
||||||
costs=costs,
|
costs=costs,
|
||||||
|
@ -174,7 +173,7 @@ class InventoryWorksheet(View):
|
||||||
q = q.order_by(model.Brand.name, model.Product.description)
|
q = q.order_by(model.Brand.name, model.Product.description)
|
||||||
return q.all()
|
return q.all()
|
||||||
|
|
||||||
now = local_time()
|
now = localtime(self.request.rattail_config)
|
||||||
data = dict(
|
data = dict(
|
||||||
date=now.strftime('%a %d %b %Y'),
|
date=now.strftime('%a %d %b %Y'),
|
||||||
time=now.strftime('%I:%M %p'),
|
time=now.strftime('%I:%M %p'),
|
||||||
|
|
|
@ -12,12 +12,6 @@ class TestCase(unittest.TestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.config = testing.setUp()
|
self.config = testing.setUp()
|
||||||
# self.config = testing.setUp(settings={
|
|
||||||
# 'mako.directories': [
|
|
||||||
# 'rattail.pyramid:templates',
|
|
||||||
# 'edbob.pyramid:templates',
|
|
||||||
# ],
|
|
||||||
# })
|
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
testing.tearDown()
|
testing.tearDown()
|
||||||
|
@ -36,34 +30,3 @@ def mock_query():
|
||||||
query.distinct.return_value = query
|
query.distinct.return_value = query
|
||||||
query.order_by.return_value = query
|
query.order_by.return_value = query
|
||||||
return query
|
return query
|
||||||
|
|
||||||
|
|
||||||
# class DataTestCase(TestCase):
|
|
||||||
# """
|
|
||||||
# Base class for all test suites which require fixture data.
|
|
||||||
# """
|
|
||||||
|
|
||||||
# def setUp(self):
|
|
||||||
# from sqlalchemy import create_engine
|
|
||||||
# from edbob import db
|
|
||||||
# from rattail.pyramid import Session
|
|
||||||
# from edbob.db.util import install_core_schema
|
|
||||||
# from edbob.db.extensions import activate_extension
|
|
||||||
# from rattail.pyramid.tests.fixtures import load_fixtures
|
|
||||||
|
|
||||||
# engine = create_engine('postgresql://rattail:1pKglVgdHOP1MYGVdUZr@localhost/rattail.test')
|
|
||||||
|
|
||||||
# db.engines = {'default': engine}
|
|
||||||
# db.engine = engine
|
|
||||||
# db.Session.configure(bind=engine)
|
|
||||||
# Session.configure(bind=engine)
|
|
||||||
|
|
||||||
# install_core_schema(engine)
|
|
||||||
# activate_extension('rattail', engine)
|
|
||||||
# load_fixtures(engine)
|
|
||||||
# super(DataTestCase, self).setUp()
|
|
||||||
|
|
||||||
# # def tearDown(self):
|
|
||||||
# # from rattail.pyramid import Session
|
|
||||||
# # super(DataTestCase, self).tearDown()
|
|
||||||
# # Session.configure(bind=None)
|
|
||||||
|
|
Loading…
Reference in a new issue