def get_context_data(self, **kwargs): context = super(ScriptEditView, self).get_context_data(**kwargs) if self.object.pk: buttons = [] edit_button_title = _("Edit Script Contents") # this script was created through a template # so show an option to easily edit the template if self.object.template: template_cls = get_identifier_to_object_map( SCRIPT_TEMPLATES_PROVIDE_CATEGORY).get( self.object.template) # check whether is possible to edit the script through the template editor if template_cls and template_cls( self.object).can_edit_script(): # change the editor button title to advanced mode edit_button_title = _("Edit Script (advanced)") buttons.append( URLActionButton( text=_("Edit Template"), icon="fa fa-pencil-square-o", extra_css_class="btn-primary", url=reverse( "shuup_admin:notify.script-template-edit", kwargs={"pk": self.object.pk}), )) buttons.insert( 0, URLActionButton( text=edit_button_title, icon="fa fa-pencil", extra_css_class="btn-primary", url=reverse("shuup_admin:notify.script.edit-content", kwargs={"pk": self.object.pk}), ), ) buttons.insert( 1, PostActionButton( post_url=reverse("shuup_admin:notify.script.delete", kwargs={"pk": self.object.pk}), text=_("Delete"), icon="fa fa-trash", extra_css_class="btn-danger", confirm=_( 'Are you sure you wish to delete "%s" notification?') % self.object, required_permissions=("notify.script.delete", ), ), ) context["toolbar"] = Toolbar(buttons, view=self) return context
def get_toolbar(self): return Toolbar([ URLActionButton(text="New Script", icon="fa fa-plus", extra_css_class="btn-success", url=reverse("shuup_admin:notify.script.new")) ])
def get_context_data(self, **kwargs): context = super(AddonListView, self).get_context_data(**kwargs) context["toolbar"] = Toolbar([ PostActionButton( icon="fa fa-save", form_id="addon_list", text=_("Save addon changes"), extra_css_class="btn-success", ), NewActionButton( reverse("shuup_admin:addon.upload"), text=_("Upload new addon"), extra_css_class="btn-info", icon="fa fa-upload", ) ]) if self.request.GET.get("reload"): context["toolbar"].append( URLActionButton( reverse("shuup_admin:addon.reload"), text=_("Reload application"), extra_css_class="btn-warning", icon="fa fa-refresh", )) return context
def get_context_data(self, **kwargs): context = super(OrderCreateRefundView, self).get_context_data(**kwargs) context["title"] = _("Create Refund -- %s") % context["order"] context["toolbar"] = Toolbar([ PostActionButton( icon="fa fa-check-circle", form_id="create_refund", text=_("Create Refund"), extra_css_class="btn-success", ) ], view=self) # Allowing full refunds for suppliers would block the refunds for # rest of the suppliers since full refund can only be created once supplier = context["supplier"] = get_supplier(self.request) if not supplier: context["toolbar"].append( URLActionButton( url=reverse("shuup_admin:order.create-full-refund", kwargs={"pk": self.object.pk}), icon="fa fa-dollar", text=_("Refund Entire Order"), extra_css_class="btn-info", disable_reason=_("This order already has existing refunds") if self.object.has_refunds() else None ) ) # Setting the line_numbers choices dynamically creates issues with the blank formset, # So adding that to the context to be rendered manually context["line_number_choices"] = self._get_line_number_choices(supplier) lines = lines = self.object.lines.all() if supplier: lines = lines.filter(supplier=supplier) context["json_line_data"] = [self._get_line_data(self.object, line) for line in lines] return context
def get_context_data(self, **kwargs): context = super(OrderCreateRefundView, self).get_context_data(**kwargs) context["title"] = _("Create Refund -- %s") % context["order"] context["toolbar"] = Toolbar([ PostActionButton( icon="fa fa-check-circle", form_id="create_refund", text=_("Create Refund"), extra_css_class="btn-success", ), URLActionButton( url=reverse("shuup_admin:order.create-full-refund", kwargs={"pk": self.object.pk}), icon="fa fa-dollar", text=_("Refund Entire Order"), extra_css_class="btn-info", disable_reason=_("This order already has existing refunds") if self.object.has_refunds() else None), ]) # Setting the line_numbers choices dynamically creates issues with the blank formset, # So adding that to the context to be rendered manually context["line_number_choices"] = self._get_line_number_choices() context["json_line_data"] = [ self._get_line_data(self.object.shop, line) for line in self.object.lines.all() ] return context
def build_new_order_button(self): self.append( URLActionButton(url=reverse("shuup_admin:order.new") + "?contact_id=%s" % self.contact.pk, text=_(u"New Order"), tooltip=_(u"Create an order for the contact."), icon="fa fa-plus", extra_css_class="btn-success"))
def get_toolbar(self): toolbar = super(ThemeConfigDetailView, self).get_toolbar() toolbar.append( URLActionButton(text=_("Custom CSS/JS"), icon="fa fa-magic", url=reverse("shuup_admin:xtheme_snippet.list"), extra_css_class="btn-info")) return toolbar
def _build_edit_button(self): self.append(URLActionButton( text=_("Edit order"), icon="fa fa-money", disable_reason=_("This order cannot modified at this point") if not self.order.can_edit() else None, url=reverse("shuup_admin:order.edit", kwargs={"pk": self.order.pk}), extra_css_class="btn-info" ))
def get_buttons_for_view(cls, view): return [ URLActionButton( url=reverse("shuup_admin:category.organize"), text=_("Organize"), tooltip=_("Organize categories"), icon="fa fa-sitemap", extra_css_class="btn-default btn-organize-categories") ]
def get_toolbar(self): toolbar = super(CategoryListView, self).get_toolbar() toolbar.append( URLActionButton(url=reverse("shuup_admin:category.organize"), text=_("Organize"), tooltip=_("Organize categories"), icon="fa fa-sitemap", extra_css_class="btn-default")) return toolbar
def build_new_order_button(self): return URLActionButton( url=reverse("shuup_admin:order.new") + "?contact_id=%s" % self.contact.pk, text=_(u"New Order"), tooltip=_(u"Create an order for the contact."), icon="fa fa-shopping-cart", extra_css_class="dropdown-item", required_permissions=("order.new",), )
def get_toolbar(self): toolbar = get_default_edit_toolbar(self, self.get_save_form_id(), with_split_save=False) toolbar.append( URLActionButton(text=_("Custom CSS/JS"), icon="fa fa-magic", url=reverse("shuup_admin:xtheme_snippet.list"), extra_css_class="btn-info")) return toolbar
def build_new_user_button(self): if self.user or isinstance(self.contact, CompanyContact): return return URLActionButton( url=reverse("shuup_admin:user.new") + "?contact_id=%s" % self.contact.pk, text=_(u"New User"), tooltip=_(u"Create a user for the contact."), icon="fa fa-user-plus", extra_css_class="dropdown-item", required_permissions=("user.new",), )
def get_toolbar(self): return Toolbar([ URLActionButton( text=_("New Script"), icon="fa fa-plus", extra_css_class="btn-success", url=reverse("shuup_admin:notify.script.new") ), JavaScriptActionButton( text=_("New From Template"), icon="fa fa-book", onclick="showScriptTemplates()" ) ])
def build_new_user_button(self): if self.user or isinstance(self.contact, CompanyContact): return self.append( URLActionButton( url=reverse("shuup_admin:user.new") + "?contact_id=%s" % self.contact.pk, text=_(u"New User"), tooltip=_(u"Create an user for the contact."), icon="fa fa-star", extra_css_class="btn-gray btn-inverse", ))
def get_context_data(self, **kwargs): context = super(ScriptEditView, self).get_context_data(**kwargs) if self.object.pk: context["toolbar"] = Toolbar([ URLActionButton(text=_(u"Edit Script Contents..."), icon="fa fa-pencil", extra_css_class="btn-info", url=reverse( "shuup_admin:notify.script.edit-content", kwargs={"pk": self.object.pk})) ]) return context
def get_context_data(self, **kwargs): context = super(OrderCreateFullRefundView, self).get_context_data(**kwargs) context["title"] = _("Create Full Refund -- %s") % context["order"] context["toolbar"] = Toolbar([ URLActionButton( url=reverse("shuup_admin:order.create-refund", kwargs={"pk": self.object.pk}), icon="fa fa-check-circle", text=_("Cancel"), extra_css_class="btn-danger", ), ]) return context
def get_context_data(self, **kwargs): context = super(ScriptEditView, self).get_context_data(**kwargs) if self.object.pk: buttons = [] edit_button_title = _("Edit Script Contents...") # this script was created through a template # so show an option to easily edit the template if self.object.template: template_cls = get_identifier_to_object_map( SCRIPT_TEMPLATES_PROVIDE_CATEGORY).get( self.object.template) # check whether is possible to edit the script through the template editor if template_cls and template_cls( self.object).can_edit_script(): # change the editor button title to advanced mode edit_button_title = _("Edit Script (advanced)") buttons.append( URLActionButton( text=_("Edit Template"), icon="fa fa-pencil-square-o", extra_css_class="btn-info", url=reverse( "shuup_admin:notify.script-template-edit", kwargs={"pk": self.object.pk}))) buttons.insert( 0, URLActionButton(text=edit_button_title, icon="fa fa-pencil", extra_css_class="btn-info", url=reverse( "shuup_admin:notify.script.edit-content", kwargs={"pk": self.object.pk}))) context["toolbar"] = Toolbar(buttons) return context
def build(self): self.append(URLActionButton( url=reverse("shuup_admin:contact.edit", kwargs={"pk": self.contact.pk}), icon="fa fa-pencil", text=_(u"Edit"), extra_css_class="btn-primary", )) self.build_renew_password_button() self.build_new_user_button() self.build_user_button() self.build_new_order_button() self.build_provides_buttons() self.build_login_as_button()
def build(self): self.append( URLActionButton( url=reverse("shuup_admin:contact.edit", kwargs={"pk": self.contact.pk}), icon="fa fa-pencil", text=_(u"Edit..."), extra_css_class="btn-info", )) self.build_renew_password_button() self.build_new_user_button() self.build_deactivate_button() self.build_new_order_button()
def get_toolbar(self): save_form_id = self.get_save_form_id() object = self.get_object() delete_url = reverse_lazy("shuup_admin:service_provider.delete", kwargs={"pk": object.pk}) toolbar = get_default_edit_toolbar(self, save_form_id, delete_url=delete_url) if self.object.pk: toolbar.append(URLActionButton( text=_("Create {service_name}").format( service_name=self.object.service_model._meta.verbose_name), icon="fa fa-plus", url="{model_url}?provider={id}".format( model_url=get_model_url(self.object.service_model, "new"), id=self.object.id), extra_css_class="btn-info" )) return toolbar
def get_toolbar(self): return Toolbar( [ URLActionButton( text=_("New Script"), icon="fa fa-plus", extra_css_class="btn-success", url=reverse("shuup_admin:notify.script.new"), ), JavaScriptActionButton( text=_("New From Template"), icon="fa fa-book", onclick="showScriptTemplates()", required_permissions=["notify.script-template"], ), ], view=self, )
request = rf.get("/") request.user = factories.get_default_staff_user() button = button_class(required_permissions=permissions, **kwargs) rendered_button = "".join(bit for bit in button.render(request)) assert not rendered_button # Set permissions for the user set_permissions_for_group(request.user.groups.first(), permissions) rendered_button = "".join(bit for bit in button.render(request)) assert rendered_button @pytest.mark.parametrize( "button, permission, instance", [ (URLActionButton(url=reverse("shuup_admin:shop_product.new")), "shop_product.new", URLActionButton), (URLActionButton(url=reverse_lazy("shuup_admin:shop_product.new")), "shop_product.new", URLActionButton), (NewActionButton.for_model(ShopProduct), "shop_product.new", URLActionButton), (SettingsActionButton.for_model(ShopProduct, return_url="/"), "shop_product.list_settings", URLActionButton), # for_model without shuup_admin url returns None (NewActionButton.for_model(AbstractUser), "abstract_user.new", type(None)), (SettingsActionButton.for_model(AbstractUser), "abstract_user.list_settings", type(None)), ]) def test_url_buttons_permission(rf, button, permission, instance):
def get_toolbar(self): order = self.object toolbar = Toolbar() toolbar.append( URLActionButton(text=_("Create Refund"), icon="fa fa-dollar", disable_reason=_("This order cannot be refunded") if not order.can_create_refund() else None, url=reverse("shuup_admin:order.create-refund", kwargs={"pk": order.pk}), extra_css_class="btn-info")) toolbar.append( URLActionButton( text=_("Create Payment"), icon="fa fa-money", disable_reason=_("This order cannot be paid at this point") if order.is_paid() else None, url=reverse("shuup_admin:order.create-payment", kwargs={"pk": order.pk}), extra_css_class="btn-info")) toolbar.append( URLActionButton(text=_("Create Shipment"), icon="fa fa-truck", disable_reason=_("There are no products to ship") if not order.get_unshipped_products() else None, url=reverse("shuup_admin:order.create-shipment", kwargs={"pk": order.pk}), extra_css_class="btn-info")) toolbar.append( PostActionButton( post_url=reverse("shuup_admin:order.set-status", kwargs={"pk": order.pk}), name="status", value=OrderStatus.objects.get_default_complete().pk, text=_("Set Complete"), icon="fa fa-check-circle", disable_reason=( _("This order can not be set as complete at this point") if not order.can_set_complete() else None), extra_css_class="btn-success")) toolbar.append( PostActionButton( post_url=reverse("shuup_admin:order.set-status", kwargs={"pk": order.pk}), name="status", value=OrderStatus.objects.get_default_canceled().pk, text=_("Cancel Order"), icon="fa fa-trash", disable_reason=( _("Paid, shipped, or canceled orders cannot be canceled") if not order.can_set_canceled() else None), extra_css_class="btn-danger btn-inverse")) toolbar.append( URLActionButton( text=_("Edit order"), icon="fa fa-money", disable_reason=_("This order cannot modified at this point") if not order.can_edit() else None, url=reverse("shuup_admin:order.edit", kwargs={"pk": order.pk}), extra_css_class="btn-info")) for button in get_provide_objects("admin_order_toolbar_button"): toolbar.append(button(order)) return toolbar