Пример #1
0
    def _build_existing_product(self):
        product = self.product
        # :type product: shuup.core.models.Product

        save_as_copy_button = JavaScriptActionButton(
            onclick="saveAsACopy()",
            text=_("Save as a copy"),
            icon="fa fa-clone",
        )
        self.append(save_as_copy_button)

        cross_sell_button = DropdownItem(
            text=_("Manage Cross-Selling"),
            icon="fa fa-random",
            url=reverse("shuup_admin:shop_product.edit_cross_sell", kwargs={"pk": product.pk}),
        )
        menu_items = [
            DropdownHeader(text=_("Cross-Selling")),
            cross_sell_button
        ]

        for item in self._get_variation_and_package_menu_items(product):
            menu_items.append(item)

        for button in get_provide_objects("admin_product_toolbar_action_item"):
            if button.visible_for_object(product):
                menu_items.append(button(product))

        if menu_items:
            self.append(DropdownActionButton(
                menu_items,
                icon="fa fa-star",
                text=_(u"Actions"),
                extra_css_class="btn-info",
            ))
Пример #2
0
    def _build_action_menu(self, product):
        # cross selling
        cross_sell_button = DropdownItem(
            text=_("Manage Cross-Selling"),
            icon="fa fa-random",
            url=reverse("shuup_admin:shop_product.edit_cross_sell", kwargs={"pk": product.pk})
        )
        menu_items = [menu_item for menu_item in self._get_header_items(
                header=_("Cross-Selling"), divider=False, identifier=ProductActionCategory.CHILD_CROSS_SELL)]
        menu_items.append(cross_sell_button)

        # packages
        for item in self._get_variation_and_package_menu_items(product):
            menu_items.append(item)

        provided_items = get_provide_objects("admin_product_toolbar_action_item")
        if provided_items:
            for item in self._get_header_items(header=_("Other"), identifier=ProductActionCategory.CHILD_OTHER):
                menu_items.append(item)

            for button in provided_items:
                if button.visible_for_object(product):
                    menu_items.append(button(product))

        # add the actual Action button
        self.append(DropdownActionButton(
            menu_items,
            icon="fa fa-star",
            text=_(u"Actions"),
            extra_css_class="btn-inverse btn-actions",
            identifier=ProductActionCategory.MAIN
        ))
Пример #3
0
 def build_user_button(self):
     menu_items = [
         self.build_new_order_button(),
         DropdownDivider(),
         self.build_new_user_button(),
         self.build_renew_password_button(),
         DropdownDivider(),
         self.build_deactivate_button(),
     ]
     self.append(
         DropdownActionButton(menu_items,
                              icon="fa fa-user",
                              text=_(u"Options"),
                              extra_css_class="btn-info"))
Пример #4
0
    def _build_action_button(self):
        action_menu_items = []

        for button in get_provide_objects("admin_order_toolbar_action_item"):
            if button.visible_for_object(self.order):
                action_menu_items.append(button(object=self.order))

        if action_menu_items:
            self.append(
                DropdownActionButton(
                    action_menu_items,
                    icon="fa fa-star",
                    text=_(u"Actions"),
                    extra_css_class="btn-info",
                ))
Пример #5
0
    def build_provides_buttons(self):
        action_menu_items = []
        for button in get_provide_objects("admin_contact_toolbar_action_item"):
            if button.visible_for_object(self.contact):
                action_menu_items.append(button(object=self.contact))

        if action_menu_items:
            self.append(
                DropdownActionButton(
                    action_menu_items,
                    icon="fa fa-star",
                    text=_(u"Actions"),
                    extra_css_class="btn-inverse",
                ))

        for button in get_provide_objects("admin_contact_toolbar_button"):
            warnings.warn(
                "admin_contact_toolbar_button provider is deprecated, use admin_contact_toolbar_action_item instead",
                RemovedFromShuupWarning)
            self.append(button(self.contact))
Пример #6
0
    def _build_order_set_state_button(self):
        set_status_menu_items = []
        for status in OrderStatus.objects.filter(is_active=True).exclude(pk=self.order.status.pk).order_by("ordering"):
            btn = PostActionDropdownItem(
                post_url=reverse("shuup_admin:order.set-status", kwargs={"pk": self.order.pk}),
                name="status",
                value=status.pk,
                text=status.name,
            )
            set_status_menu_items.append(btn)

        if set_status_menu_items:
            self.append(
                DropdownActionButton(
                    set_status_menu_items,
                    icon="fa fa-refresh",
                    text=_("Set Status"),
                    extra_css_class="btn-info set-status-button",
                )
            )
Пример #7
0
    def _build_order_set_state_button(self):
        set_status_menu_items = []
        for status in self.order.status.allowed_next_statuses.all().order_by(
                "ordering"):
            btn = PostActionDropdownItem(
                post_url=reverse("shuup_admin:order.set-status",
                                 kwargs={"pk": self.order.pk}),
                name="status",
                value=status.pk,
                text=status.name,
            )
            set_status_menu_items.append(btn)

        if set_status_menu_items:
            self.append(
                DropdownActionButton(
                    set_status_menu_items,
                    icon="fa fa-refresh",
                    text=_("Set Status"),
                    extra_css_class="btn-primary set-status-button",
                ))
Пример #8
0
    def _build_existing_product(self):
        product = self.product
        # :type product: shuup.core.models.Product

        cross_sell_button = DropdownItem(
            text=_("Manage Cross-Selling"),
            icon="fa fa-random",
            url=reverse("shuup_admin:product.edit_cross_sell",
                        kwargs={"pk": product.pk}),
        )
        menu_items = [
            DropdownHeader(text=_("Cross-Selling")), cross_sell_button
        ]

        for item in self._get_variation_and_package_menu_items(product):
            menu_items.append(item)

        self.append(
            DropdownActionButton(
                menu_items,
                icon="fa fa-star",
                text=_(u"Actions"),
                extra_css_class="btn-info",
            ))
Пример #9
0
    def _build_existing_user(self):
        user = self.user
        change_password_button = DropdownItem(url=reverse(
            "shuup_admin:user.change-password", kwargs={"pk": user.pk}),
                                              text=_(u"Change Password"),
                                              icon="fa fa-exchange")
        reset_password_button = DropdownItem(
            url=reverse("shuup_admin:user.reset-password",
                        kwargs={"pk": user.pk}),
            disable_reason=(_("User has no email address")
                            if not getattr(user, 'email', '') else None),
            text=_(u"Send Password Reset Email"),
            icon="fa fa-envelope")
        permissions_button = DropdownItem(
            url=reverse("shuup_admin:user.change-permissions",
                        kwargs={"pk": user.pk}),
            text=_(u"Edit Permissions"),
            icon="fa fa-lock",
            required_permissions=["auth.change_permission"])
        menu_items = [
            change_password_button, reset_password_button, permissions_button,
            DropdownDivider()
        ]

        person_contact = PersonContact.objects.filter(user=user).first()
        if person_contact:
            contact_url = reverse("shuup_admin:contact.detail",
                                  kwargs={"pk": person_contact.pk})
            menu_items.append(
                DropdownItem(
                    url=contact_url,
                    icon="fa fa-search",
                    text=_(u"Contact Details"),
                ))
        else:
            contact_url = reverse("shuup_admin:contact.new"
                                  ) + "?type=person&user_id=%s" % user.pk
            menu_items.append(
                DropdownItem(
                    url=contact_url,
                    icon="fa fa-plus",
                    text=_(u"New Contact"),
                    tooltip=_(
                        "Create a new contact and associate it with this user")
                ))
        self.append(
            DropdownActionButton(
                menu_items,
                icon="fa fa-star",
                text=_(u"Actions"),
                extra_css_class="btn-info",
            ))
        if not user.is_active:
            self.append(
                PostActionButton(
                    post_url=self.request.path,
                    name="set_is_active",
                    value="1",
                    icon="fa fa-check-circle",
                    text=_(u"Activate User"),
                    extra_css_class="btn-gray",
                ))
        else:
            self.append(
                PostActionButton(
                    post_url=self.request.path,
                    name="set_is_active",
                    value="0",
                    icon="fa fa-times-circle",
                    text=_(u"Deactivate User"),
                    extra_css_class="btn-gray",
                ))

        if (self.request.user.is_superuser and get_front_url()
                and user.is_active and not user.is_superuser
                and not user.is_staff):
            self.append(
                PostActionButton(post_url=reverse("shuup_admin:user.login-as",
                                                  kwargs={"pk": user.pk}),
                                 text=_(u"Login as User"),
                                 extra_css_class="btn-gray"))
Пример #10
0
 def get_split_save_button(self, save_form_id):
     return DropdownActionButton([
         DropdownItem(onclick="setNextActionAndSubmit('%s', 'return')" % save_form_id, text=_("Save and Exit")),
         DropdownItem(onclick="setNextActionAndSubmit('%s', 'new')" % save_form_id, text=_("Save and Create New")),
         JavaScriptActionButton(onclick="saveAsACopy()", text=_("Save as a copy"), icon="fa fa-clone"),
     ], extra_css_class="btn-primary")
Пример #11
0
    def get_toolbar(self):
        order = self.object
        toolbar = Toolbar()
        action_menu_items = []
        if not (order.is_paid() or order.is_canceled() or order.has_refunds()):
            action_menu_items.append(
                DropdownItem(
                    url=reverse("shuup_admin:order.create-payment", kwargs={"pk": order.pk}),
                    icon="fa fa-money",
                    text=_("Create Payment"),
                )
            )
        if (order.get_unshipped_products() and not order.is_canceled() and not order.has_refunds()):
            action_menu_items.append(
                DropdownItem(
                    url=reverse("shuup_admin:order.create-shipment", kwargs={"pk": order.pk}),
                    icon="fa fa-truck",
                    text=_("Create Shipment"),
                )
            )
        if order.can_create_refund() and order.payments.exists():
            action_menu_items.append(
                DropdownItem(
                    url=reverse("shuup_admin:order.create-refund", kwargs={"pk": order.pk}),
                    icon="fa fa-dollar",
                    text=_("Create Refund"),
                )
            )

        toolbar.append(
            DropdownActionButton(
                action_menu_items,
                icon="fa fa-star",
                text=_(u"Actions"),
                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