Add support for toggling custorder item "flagged"
This commit is contained in:
parent
e49e0edc57
commit
ddb8e3656f
|
@ -324,6 +324,12 @@
|
||||||
this.$refs.changeStatusForm.submit()
|
this.$refs.changeStatusForm.submit()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
${form.component_studly}Data.changeFlaggedSubmitting = false
|
||||||
|
|
||||||
|
${form.component_studly}.methods.changeFlaggedSubmit = function() {
|
||||||
|
this.changeFlaggedSubmitting = true
|
||||||
|
}
|
||||||
|
|
||||||
% endif
|
% endif
|
||||||
|
|
||||||
% if master.has_perm('add_note'):
|
% if master.has_perm('add_note'):
|
||||||
|
|
|
@ -34,7 +34,7 @@ from rattail.time import localtime
|
||||||
from webhelpers2.html import HTML, tags
|
from webhelpers2.html import HTML, tags
|
||||||
|
|
||||||
from tailbone.views import MasterView
|
from tailbone.views import MasterView
|
||||||
from tailbone.util import raw_datetime
|
from tailbone.util import raw_datetime, csrf_token
|
||||||
|
|
||||||
|
|
||||||
class CustomerOrderItemView(MasterView):
|
class CustomerOrderItemView(MasterView):
|
||||||
|
@ -231,9 +231,53 @@ class CustomerOrderItemView(MasterView):
|
||||||
# status_code
|
# status_code
|
||||||
f.set_renderer('status_code', self.render_status_code)
|
f.set_renderer('status_code', self.render_status_code)
|
||||||
|
|
||||||
|
# flagged
|
||||||
|
f.set_renderer('flagged', self.render_flagged)
|
||||||
|
|
||||||
# notes
|
# notes
|
||||||
f.set_renderer('notes', self.render_notes)
|
f.set_renderer('notes', self.render_notes)
|
||||||
|
|
||||||
|
def render_flagged(self, item, field):
|
||||||
|
text = "Yes" if item.flagged else "No"
|
||||||
|
items = [HTML.tag('span', c=text)]
|
||||||
|
|
||||||
|
if self.has_perm('change_status'):
|
||||||
|
button_text = "Un-Flag This" if item.flagged else "Flag This"
|
||||||
|
form = [
|
||||||
|
tags.form(self.get_action_url('change_flagged', item),
|
||||||
|
**{'@submit': 'changeFlaggedSubmit'}),
|
||||||
|
csrf_token(self.request),
|
||||||
|
tags.hidden('new_flagged',
|
||||||
|
value='false' if item.flagged else 'true'),
|
||||||
|
HTML.tag('b-button',
|
||||||
|
type='is-warning' if item.flagged else 'is-primary',
|
||||||
|
c=f"{{{{ changeFlaggedSubmitting ? 'Working, please wait...' : '{button_text}' }}}}",
|
||||||
|
native_type='submit',
|
||||||
|
style='margin-left: 1rem;',
|
||||||
|
icon_pack='fas', icon_left='flag',
|
||||||
|
**{':disabled': 'changeFlaggedSubmitting'}),
|
||||||
|
tags.end_form(),
|
||||||
|
]
|
||||||
|
items.append(HTML.literal('').join(form))
|
||||||
|
|
||||||
|
left = HTML.tag('div', class_='level-left', c=items)
|
||||||
|
outer = HTML.tag('div', class_='level', c=[left])
|
||||||
|
return outer
|
||||||
|
|
||||||
|
def change_flagged(self):
|
||||||
|
"""
|
||||||
|
View for changing "flagged" status of one or more order products.
|
||||||
|
"""
|
||||||
|
item = self.get_instance()
|
||||||
|
redirect = self.redirect(self.get_action_url('view', item))
|
||||||
|
|
||||||
|
new_flagged = self.request.POST['new_flagged'] == 'true'
|
||||||
|
item.flagged = new_flagged
|
||||||
|
|
||||||
|
flagged = "FLAGGED" if new_flagged else "UN-FLAGGED"
|
||||||
|
self.request.session.flash(f"Order item has been {flagged}")
|
||||||
|
return redirect
|
||||||
|
|
||||||
def highlight_pending_field(self, item, field, value=None):
|
def highlight_pending_field(self, item, field, value=None):
|
||||||
if value is None:
|
if value is None:
|
||||||
value = getattr(item, field)
|
value = getattr(item, field)
|
||||||
|
@ -299,14 +343,16 @@ class CustomerOrderItemView(MasterView):
|
||||||
|
|
||||||
factory = self.get_grid_factory()
|
factory = self.get_grid_factory()
|
||||||
g = factory(
|
g = factory(
|
||||||
key='{}.notes'.format(route_prefix),
|
key=f'{route_prefix}.notes',
|
||||||
data=[],
|
data=[],
|
||||||
columns=[
|
columns=[
|
||||||
'text',
|
|
||||||
'created_by',
|
|
||||||
'created',
|
'created',
|
||||||
|
'created_by',
|
||||||
|
'text',
|
||||||
],
|
],
|
||||||
labels={
|
labels={
|
||||||
|
'created': "Date/Time",
|
||||||
|
'created_by': "Added by",
|
||||||
'text': "Note",
|
'text': "Note",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -555,6 +601,14 @@ class CustomerOrderItemView(MasterView):
|
||||||
route_name='{}.change_status'.format(route_prefix),
|
route_name='{}.change_status'.format(route_prefix),
|
||||||
permission='{}.change_status'.format(permission_prefix))
|
permission='{}.change_status'.format(permission_prefix))
|
||||||
|
|
||||||
|
# change flagged
|
||||||
|
config.add_route(f'{route_prefix}.change_flagged',
|
||||||
|
f'{instance_url_prefix}/change-flagged',
|
||||||
|
request_method='POST')
|
||||||
|
config.add_view(cls, attr='change_flagged',
|
||||||
|
route_name=f'{route_prefix}.change_flagged',
|
||||||
|
permission=f'{permission_prefix}.change_status')
|
||||||
|
|
||||||
# add note
|
# add note
|
||||||
config.add_tailbone_permission(permission_prefix,
|
config.add_tailbone_permission(permission_prefix,
|
||||||
'{}.add_note'.format(permission_prefix),
|
'{}.add_note'.format(permission_prefix),
|
||||||
|
|
Loading…
Reference in a new issue