def _build_existing_product(self): product = self.product # :type product: shoop.core.models.Product media_button = DropdownItem( text=_("Manage Media"), icon="fa fa-picture-o", url=reverse("shoop_admin:product.edit_media", kwargs={"pk": product.pk}), ) cross_sell_button = DropdownItem( text=_("Manage Cross-Selling"), icon="fa fa-random", url=reverse("shoop_admin:product.edit_cross_sell", kwargs={"pk": product.pk}), ) menu_items = [ DropdownHeader(text=_("Media")), media_button, DropdownDivider(), 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", ))
def _get_variation_and_package_menu_items(self, product): is_variation_product = (product.is_variation_parent() or product.is_variation_child()) if is_variation_product: for item in self._get_variation_menu_items(product): yield item is_package_product = (product.is_package_parent() or product.is_package_child()) if is_package_product: for item in self._get_package_menu_items(product): yield item if not (is_variation_product or is_package_product): for item in self._get_header_item(_("Packages")): yield item yield DropdownItem( text=_("Convert to Package Parent"), icon="fa fa-retweet", url=self._get_package_url(product), ) for item in self._get_header_item(_("Variations")): yield item yield DropdownItem( text=_("Convert to Variation Parent"), icon="fa fa-retweet", url=self._get_variation_url(product), )
def _get_parent_and_sibling_items(self, parent, siblings): yield DropdownItem( text=_("Parent: %s") % parent, icon="fa fa-eye", url=get_model_url(parent), ) for sib in siblings: yield DropdownItem( text=_("Sibling: %s") % sib, icon="fa fa-eye", url=get_model_url(sib), )
def get_menu_items(self): shipment_items = [] for shipment_id in self.order.shipments.values_list("pk", flat=True): shipment_items.append( DropdownItem(text=_("Get Delivery Slip (Shipment %(id)s)") % {"id": shipment_id}, icon="fa fa-truck", url=reverse("shoop_admin:printouts.delivery_pdf", kwargs={"shipment_pk": shipment_id}))) return shipment_items + [ DropdownItem(text=_("Get Order Confirmation"), icon="fa fa-money", url=reverse("shoop_admin:printouts.confirmation_pdf", kwargs={"order_pk": self.order.pk})) ]
def _get_children_items(self, children): for child in children: yield DropdownItem( text=_("Child: %s") % child, icon="fa fa-eye", url=get_model_url(child), )
def _get_variation_menu_items(self, product): for item in self._get_header_item(_("Variations")): yield item yield DropdownItem( text=_("Manage Variations"), icon="fa fa-sitemap", url=self._get_variation_url(product), ) if product.is_variation_parent(): for child in self._get_children_items(product.variation_children.all()): yield child elif product.is_variation_child(): for item in self._get_parent_and_sibling_items(product.variation_parent, product.get_variation_siblings()): yield item
def _get_package_menu_items(self, product): for item in self._get_header_item(_("Packages")): yield item yield DropdownItem( text=_("Manage Package"), icon="fa fa-cube", url=self._get_package_url(product), ) if product.is_package_parent(): for child in self._get_children_items(product.get_all_package_children()): yield child elif product.is_package_child(): for parent in product.get_all_package_parents(): for item in self._get_parent_and_sibling_items( parent, [sib for sib in parent.get_all_package_children() if sib != product]): yield item
def _get_variation_and_package_menu_items(self, product): variation_parent = product.is_variation_parent() variation_child = product.is_variation_child() package_parent = product.is_package_parent() variation_url = reverse("shoop_admin:product.edit_variation", kwargs={"pk": product.pk}) if variation_parent: yield DropdownDivider() yield DropdownHeader(text=_("Variations")) yield DropdownItem( text=_("Manage Variations"), icon="fa fa-sitemap", url=variation_url, ) for child in product.variation_children.all(): yield DropdownItem( text=_("Child: %s") % child, icon="fa fa-eye", url=get_model_url(child), ) elif variation_child: yield DropdownDivider() yield DropdownHeader(text=_("Variations")) parent = product.variation_parent yield DropdownItem( text=_("Manage Variations"), icon="fa fa-sitemap", url=variation_url, ) yield DropdownItem( text=_("Parent: %s") % parent, icon="fa fa-eye", url=get_model_url(parent), ) for sib in product.get_variation_siblings(): yield DropdownItem( text=_("Sibling: %s") % sib, icon="fa fa-eye", url=get_model_url(sib), ) elif package_parent: yield DropdownDivider() yield DropdownHeader(text=_("Variations")) yield DropdownItem( text=_("Manage Package"), icon="fa fa-cube", url="#", # TODO: Implement manage packages ) for child in product.get_all_package_children(): yield DropdownItem( text=_("Child: %s") % child, icon="fa fa-eye", url=get_model_url(child), ) package_parents = list(product.get_all_package_parents()) if package_parents: yield DropdownDivider() yield DropdownHeader(text=_("Variations")) for parent in package_parents: yield DropdownItem( text=_("Package Parent: %s") % parent, icon="fa fa-eye", url=get_model_url(parent), ) if not (variation_parent or variation_child or package_parent): yield DropdownDivider() yield DropdownHeader(text=_("Variations")) yield DropdownItem( text=_("Convert to Variation Parent"), icon="fa fa-retweet", url=variation_url, )
def _build_existing_user(self): user = self.user change_password_button = DropdownItem(url=reverse( "shoop_admin:user.change-password", kwargs={"pk": user.pk}), text=_(u"Change Password"), icon="fa fa-exchange") reset_password_button = DropdownItem( url=reverse("shoop_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( "shoop_admin:user.change-permissions", kwargs={"pk": user.pk}), text=_(u"Edit Permissions"), icon="fa fa-lock") 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("shoop_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( "shoop_admin:contact.new") + "?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", ))