Add basic "resolve" support for person, product from new custorder
This commit is contained in:
parent
1b0d6581db
commit
82dfce6f81
8 changed files with 474 additions and 32 deletions
|
@ -2035,6 +2035,9 @@ class PendingProductView(MasterView):
|
|||
super(PendingProductView, self).configure_grid(g)
|
||||
|
||||
g.set_enum('status_code', self.enum.PENDING_PRODUCT_STATUS)
|
||||
g.filters['status_code'].default_active = True
|
||||
g.filters['status_code'].default_verb = 'not_equal'
|
||||
g.filters['status_code'].default_value = six.text_type(self.enum.PENDING_PRODUCT_STATUS_RESOLVED)
|
||||
|
||||
g.set_sort_defaults('created', 'desc')
|
||||
|
||||
|
@ -2137,6 +2140,11 @@ class PendingProductView(MasterView):
|
|||
# f.set_readonly('status_code')
|
||||
f.set_enum('status_code', self.enum.PENDING_PRODUCT_STATUS)
|
||||
|
||||
def editable_instance(self, pending):
|
||||
if pending.status_code == self.enum.PENDING_PRODUCT_STATUS_RESOLVED:
|
||||
return False
|
||||
return True
|
||||
|
||||
def objectify(self, form, data=None):
|
||||
if data is None:
|
||||
data = form.validated
|
||||
|
@ -2182,6 +2190,45 @@ class PendingProductView(MasterView):
|
|||
'error')
|
||||
return self.redirect(self.get_action_url('view', pending))
|
||||
|
||||
def resolve_product(self):
|
||||
model = self.model
|
||||
pending = self.get_instance()
|
||||
redirect = self.redirect(self.get_action_url('view', pending))
|
||||
|
||||
uuid = self.request.POST['product_uuid']
|
||||
product = self.Session.query(model.Product).get(uuid)
|
||||
if not product:
|
||||
self.request.session.flash("Product not found!", 'error')
|
||||
return redirect
|
||||
|
||||
app = self.get_rattail_app()
|
||||
products_handler = app.get_products_handler()
|
||||
products_handler.resolve_product(pending, product, self.request.user)
|
||||
return redirect
|
||||
|
||||
@classmethod
|
||||
def defaults(cls, config):
|
||||
cls._defaults(config)
|
||||
cls._pending_product_defaults(config)
|
||||
|
||||
@classmethod
|
||||
def _pending_product_defaults(cls, config):
|
||||
route_prefix = cls.get_route_prefix()
|
||||
instance_url_prefix = cls.get_instance_url_prefix()
|
||||
permission_prefix = cls.get_permission_prefix()
|
||||
model_title = cls.get_model_title()
|
||||
|
||||
# resolve product
|
||||
config.add_tailbone_permission(permission_prefix,
|
||||
'{}.resolve_product'.format(permission_prefix),
|
||||
"Resolve a {} as a Product".format(model_title))
|
||||
config.add_route('{}.resolve_product'.format(route_prefix),
|
||||
'{}/resolve-product'.format(instance_url_prefix),
|
||||
request_method='POST')
|
||||
config.add_view(cls, attr='resolve_product',
|
||||
route_name='{}.resolve_product'.format(route_prefix),
|
||||
permission='{}.resolve_product'.format(permission_prefix))
|
||||
|
||||
|
||||
def print_labels(request):
|
||||
profile = request.params.get('profile')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue