diff --git a/tailbone/static/css/layout.css b/tailbone/static/css/layout.css index f741951e..9f087952 100644 --- a/tailbone/static/css/layout.css +++ b/tailbone/static/css/layout.css @@ -62,3 +62,28 @@ body > #body-wrapper { display: block; margin: 40px auto; } + + +/****************************** + * Panels + ******************************/ + +.panel { + border-bottom: 1px solid Black; + border-left: 1px solid Black; + border-right: 1px solid Black; + margin-bottom: 15px; + padding: 0px; +} + +.panel h2 { + border-top: 1px solid Black; + border-bottom: 1px solid Black; + margin: 0px; + padding: 5px; +} + +.panel-body { + overflow: auto; + padding: 5px; +} diff --git a/tailbone/templates/forms/fieldset_readonly.mako b/tailbone/templates/forms/fieldset_readonly.mako index b3068b3a..58aef14c 100644 --- a/tailbone/templates/forms/fieldset_readonly.mako +++ b/tailbone/templates/forms/fieldset_readonly.mako @@ -1,13 +1,7 @@ ## -*- coding: utf-8 -*- +<%namespace file="/forms/lib.mako" import="render_field_readonly" />
% for field in fieldset.render_fields.itervalues(): - % if field.requires_label: -
- ${field.label_tag()|n} -
- ${field.render_readonly()} -
-
- % endif + ${render_field_readonly(field)} % endfor
diff --git a/tailbone/templates/forms/lib.mako b/tailbone/templates/forms/lib.mako new file mode 100644 index 00000000..fb6067d9 --- /dev/null +++ b/tailbone/templates/forms/lib.mako @@ -0,0 +1,12 @@ +## -*- coding: utf-8 -*- + +<%def name="render_field_readonly(field)"> + % if field.requires_label: +
+ ${field.label_tag()|n} +
+ ${field.render_readonly()} +
+
+ % endif + diff --git a/tailbone/templates/products/read.mako b/tailbone/templates/products/read.mako index f6353a61..04260832 100644 --- a/tailbone/templates/products/read.mako +++ b/tailbone/templates/products/read.mako @@ -1,81 +1,162 @@ ## -*- coding: utf-8 -*- <%inherit file="/products/crud.mako" /> +<%namespace file="/forms/lib.mako" import="render_field_readonly" /> <%def name="head_tags()"> ${parent.head_tags()} +<% product = form.fieldset.model %> + +<%def name="render_organization_fields(form)"> + ${render_field_readonly(form.fieldset.department)} + ${render_field_readonly(form.fieldset.subdepartment)} + ${render_field_readonly(form.fieldset.category)} + ${render_field_readonly(form.fieldset.family)} + ${render_field_readonly(form.fieldset.report_code)} + + +<%def name="render_price_fields(form)"> + ${render_field_readonly(form.fieldset.regular_price)} + ${render_field_readonly(form.fieldset.current_price)} + ${render_field_readonly(form.fieldset.deposit_link)} + ${render_field_readonly(form.fieldset.tax)} + + +<%def name="render_flag_fields(form)"> + ${render_field_readonly(form.fieldset.weighed)} + ${render_field_readonly(form.fieldset.discountable)} + ${render_field_readonly(form.fieldset.special_order)} + ${render_field_readonly(form.fieldset.organic)} + ${render_field_readonly(form.fieldset.not_for_sale)} + ${render_field_readonly(form.fieldset.deleted)} + +
- ${form.render()|n} - - % if image: - ${h.image(image_url, "Product Image", id='product-image', path=image_path, use_pil=True)} - % endif -
- -<% product = form.fieldset.model %> - -
-

Product Codes:

- % if product.codes: -
- - - - - - % for i, code in enumerate(product.codes, 1): - - - - % endfor - -
Code
${code}
+
+

Product

+
+
+ ${render_field_readonly(form.fieldset.upc)} + ${render_field_readonly(form.fieldset.brand)} + ${render_field_readonly(form.fieldset.description)} + ${render_field_readonly(form.fieldset.unit_size)} + ${render_field_readonly(form.fieldset.unit_of_measure)} + ${render_field_readonly(form.fieldset.size)} + ${render_field_readonly(form.fieldset.case_pack)}
- % else: -

None on file.

- % endif -
+ % if image: + ${h.image(image_url, "Product Image", id='product-image', path=image_path, use_pil=True)} + % endif +
+
-
-

Product Costs:

- % if product.costs: -
- - - - - - - - - - - % for i, cost in enumerate(product.costs, 1): - - - - - - - - - % endfor - -
Pref.VendorCodeCase SizeCase CostUnit Cost
${'X' if cost.preference == 1 else ''}${cost.vendor}${cost.code}${cost.case_size}${'$ %0.2f' % cost.case_cost if cost.case_cost is not None else ''}${'$ %0.4f' % cost.unit_cost if cost.unit_cost is not None else ''}
+
+ +
+

Organization

+
+ ${self.render_organization_fields(form)}
- % else: -

None on file.

+
+ +
+

Flags

+
+ ${self.render_flag_fields(form)} +
+
+ +
+ +
+ +
+

Pricing

+
+ ${self.render_price_fields(form)} +
+
+ +
+

Vendor Sources

+
+ % if product.costs: +
+ + + + + + + + + + + % for i, cost in enumerate(product.costs, 1): + + + + + + + + + % endfor + +
Pref.VendorCodeCase SizeCase CostUnit Cost
${'X' if cost.preference == 1 else ''}${cost.vendor}${cost.code}${cost.case_size}${'$ %0.2f' % cost.case_cost if cost.case_cost is not None else ''}${'$ %0.4f' % cost.unit_cost if cost.unit_cost is not None else ''}
+
+ % else: +

None on file.

+ % endif +
+
+ +
+

Additional Lookup Codes

+
+ % if product.codes: +
+ + + + + + % for i, code in enumerate(product.codes, 1): + + + + % endfor + +
Code
${code}
+
+ % else: +

None on file.

+ % endif +
+
+ +
+ + % if buttons: + ${buttons|n} % endif
diff --git a/tailbone/views/products.py b/tailbone/views/products.py index d16759da..681d4dd1 100644 --- a/tailbone/views/products.py +++ b/tailbone/views/products.py @@ -279,8 +279,9 @@ class ProductCrud(CrudView): fs.upc.label("UPC"), fs.brand.with_renderer(BrandFieldRenderer), fs.description, - fs.size, + fs.unit_size, fs.unit_of_measure.label("Unit of Measure"), + fs.size, fs.weighed, fs.case_pack, fs.department,