Add way to flag organic products within lookup dialog

This commit is contained in:
Lance Edgar 2024-05-29 15:47:04 -05:00
parent f8ab8d462c
commit 4ccdf99a43
4 changed files with 25 additions and 7 deletions

View file

@ -171,7 +171,9 @@
% endif
</%def>
<%def name="extra_styles()"></%def>
<%def name="extra_styles()">
${base_meta.extra_styles()}
</%def>
<%def name="head_tags()"></%def>

View file

@ -4,6 +4,8 @@
<%def name="global_title()">${"[STAGE] " if not request.rattail_config.production() else ''}${self.app_title()}</%def>
<%def name="extra_styles()"></%def>
<%def name="favicon()">
<link rel="icon" type="image/x-icon" href="${request.rattail_config.get('tailbone', 'favicon_url', default=request.static_url('tailbone:static/img/rattail.ico'))}" />
</%def>

View file

@ -109,8 +109,10 @@
<b-table-column label="Description"
field="description"
v-slot="props">
{{ props.row.description }}
{{ props.row.size }}
<span :class="{organic: props.row.organic}">
{{ props.row.description }}
{{ props.row.size }}
</span>
</b-table-column>
<b-table-column label="Unit Price"

View file

@ -33,7 +33,8 @@ from sqlalchemy import orm
import sqlalchemy_continuum as continuum
from rattail import enum, pod, sil
from rattail.db import model, api, auth, Session as RattailSession
from rattail.db import api, auth, Session as RattailSession
from rattail.db.model import Product, PendingProduct, CustomerOrderItem
from rattail.gpc import GPC
from rattail.threads import Thread
from rattail.exceptions import LabelPrintingError
@ -74,7 +75,7 @@ class ProductView(MasterView):
"""
Master view for the Product class.
"""
model_class = model.Product
model_class = Product
has_versions = True
results_downloadable_xlsx = True
supports_autocomplete = True
@ -173,6 +174,7 @@ class ProductView(MasterView):
def query(self, session):
query = super().query(session)
model = self.model
if not self.has_perm('view_deleted'):
query = query.filter(model.Product.deleted == False)
@ -685,6 +687,7 @@ class ProductView(MasterView):
return data
def get_instance(self):
model = self.model
key = self.request.matchdict['uuid']
product = self.Session.get(model.Product, key)
if product:
@ -696,6 +699,7 @@ class ProductView(MasterView):
def configure_form(self, f):
super().configure_form(f)
model = self.model
product = f.model_instance
# unit_size
@ -1396,6 +1400,7 @@ class ProductView(MasterView):
product's regular price history.
"""
app = self.get_rattail_app()
model = self.model
Transaction = continuum.transaction_class(model.Product)
ProductVersion = continuum.version_class(model.Product)
ProductPriceVersion = continuum.version_class(model.ProductPrice)
@ -1466,6 +1471,7 @@ class ProductView(MasterView):
product's current price history.
"""
app = self.get_rattail_app()
model = self.model
Transaction = continuum.transaction_class(model.Product)
ProductVersion = continuum.version_class(model.Product)
ProductPriceVersion = continuum.version_class(model.ProductPrice)
@ -1609,6 +1615,7 @@ class ProductView(MasterView):
product's SRP history.
"""
app = self.get_rattail_app()
model = self.model
Transaction = continuum.transaction_class(model.Product)
ProductVersion = continuum.version_class(model.Product)
ProductPriceVersion = continuum.version_class(model.ProductPrice)
@ -1679,6 +1686,7 @@ class ProductView(MasterView):
product's cost history.
"""
app = self.get_rattail_app()
model = self.model
Transaction = continuum.transaction_class(model.Product)
ProductVersion = continuum.version_class(model.Product)
ProductCostVersion = continuum.version_class(model.ProductCost)
@ -1746,6 +1754,7 @@ class ProductView(MasterView):
'form': form})
def get_version_child_classes(self):
model = self.model
return [
(model.ProductCode, 'product_uuid'),
(model.ProductCost, 'product_uuid'),
@ -1893,6 +1902,7 @@ class ProductView(MasterView):
'case_price',
'case_price_display',
'uom_choices',
'organic',
])
# TODO: deprecate / remove this? not sure if/where it is used
@ -1904,6 +1914,7 @@ class ProductView(MasterView):
Eventually this should be more generic, or at least offer more fields for
search. For now it operates only on the ``Product.upc`` field.
"""
model = self.model
data = None
upc = self.request.GET.get('upc', '').strip()
upc = re.sub(r'\D', '', upc)
@ -2091,6 +2102,7 @@ class ProductView(MasterView):
"""
Threat target for making a batch from current products query.
"""
model = self.model
session = RattailSession()
user = session.get(model.User, user_uuid)
assert user
@ -2231,7 +2243,7 @@ class PendingProductView(MasterView):
"""
Master view for the Pending Product class.
"""
model_class = model.PendingProduct
model_class = PendingProduct
route_prefix = 'pending_products'
url_prefix = '/products/pending'
bulk_deletable = True
@ -2278,7 +2290,7 @@ class PendingProductView(MasterView):
]
has_rows = True
model_row_class = model.CustomerOrderItem
model_row_class = CustomerOrderItem
rows_title = "Customer Orders"
# TODO: add support for this someday
rows_viewable = False