# -*- coding: utf-8 -*-
# This file is part of Shuup.
#
# Copyright (c) 2012-2021, Shuup Commerce Inc. All rights reserved.
#
# This source code is licensed under the OSL-3.0 license found in the
# LICENSE file in the root directory of this source tree.
from __future__ import unicode_literals
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from shuup.admin.base import AdminModule, MenuEntry
from shuup.admin.menu import CAMPAIGNS_MENU_CATEGORY
from shuup.admin.utils.urls import derive_model_url, get_edit_and_list_urls
from shuup.admin.views.home import HelpBlockCategory, SimpleHelpBlock
from shuup.campaigns.admin_module.utils import get_extra_permissions_for_admin_module
from shuup.campaigns.models import BasketCampaign, Coupon
[docs]class CampaignAdminModule(AdminModule):
name = _("Campaigns")
[docs] def get_urls(self):
basket_campaign_urls = get_edit_and_list_urls(
url_prefix="^campaigns/basket",
view_template="shuup.campaigns.admin_module.views.BasketCampaign%sView",
name_template="basket_campaign.%s",
)
coupon_urls = get_edit_and_list_urls(
url_prefix="^campaigns/coupons",
view_template="shuup.campaigns.admin_module.views.Coupon%sView",
name_template="coupon.%s",
)
catalog_campaign_urls = (
get_edit_and_list_urls(
url_prefix="^campaigns/catalog",
view_template="shuup.campaigns.admin_module.views.CatalogCampaign%sView",
name_template="catalog_campaign.%s",
)
if _show_catalog_campaigns_in_admin()
else []
)
return basket_campaign_urls + catalog_campaign_urls + coupon_urls
[docs] def get_help_blocks(self, request, kind):
if kind == "quicklink":
yield SimpleHelpBlock(
text=_("Set up a sales campaign"),
actions=[
{"text": _("New basket campaign"), "url": self.get_model_url(BasketCampaign, "new")},
{"text": _("New coupon"), "url": self.get_model_url(Coupon, "new")},
],
priority=1,
category=HelpBlockCategory.CAMPAIGNS,
icon_url="shuup/campaigns/img/campaign.png",
)
[docs] def get_model_url(self, object, kind, shop=None):
if not hasattr(object, "admin_url_suffix"):
return super(CampaignAdminModule, self).get_model_url(object, kind)
admin_url = "shuup_admin:%s" % object.admin_url_suffix
return derive_model_url(type(object), admin_url, object, kind)
def _show_catalog_campaigns_in_admin():
return bool("catalog_campaigns" in settings.SHUUP_DISCOUNT_MODULES)