Features: 1) Extend fieldsets by adding additional_fields support in FieldsetsMixin; 2) Add CRMForm for CustomerRelationshipManagementProviderAdmin; 3) Improve Order.__str__ to use human_readable_id for better debugging context;

Fixes: 1) Replace misplaced imports in `core/admin.py` for proper organization;

Extra: Adjust admin fieldsets for consistency, formatting, and search enhancements; Minor contributions to migration file cleanup.
This commit is contained in:
Egor Pavlovich Gorbunov 2025-10-13 16:27:47 +03:00
parent c8aaae4946
commit e0b2f183ce
5 changed files with 506 additions and 129 deletions

View file

@ -13,7 +13,7 @@ from modeltranslation.translator import NotRegistered, translator
from modeltranslation.utils import get_translation_fields from modeltranslation.utils import get_translation_fields
from mptt.admin import DraggableMPTTAdmin from mptt.admin import DraggableMPTTAdmin
from core.forms import OrderForm, OrderProductForm, VendorForm from core.forms import CRMForm, OrderForm, OrderProductForm, VendorForm
from core.models import ( from core.models import (
Address, Address,
Attribute, Attribute,
@ -22,8 +22,10 @@ from core.models import (
Brand, Brand,
Category, Category,
CategoryTag, CategoryTag,
CustomerRelationshipManagementProvider,
Feedback, Feedback,
Order, Order,
OrderCrmLink,
OrderProduct, OrderProduct,
Product, Product,
ProductImage, ProductImage,
@ -33,8 +35,6 @@ from core.models import (
Stock, Stock,
Vendor, Vendor,
Wishlist, Wishlist,
CustomerRelationshipManagementProvider,
OrderCrmLink,
) )
from evibes.settings import CONSTANCE_CONFIG from evibes.settings import CONSTANCE_CONFIG
@ -42,6 +42,7 @@ from evibes.settings import CONSTANCE_CONFIG
class FieldsetsMixin: class FieldsetsMixin:
general_fields: list = [] general_fields: list = []
relation_fields: list = [] relation_fields: list = []
additional_fields: list = []
model: ClassVar[Type[Model]] model: ClassVar[Type[Model]]
def get_fieldsets(self, request, obj=None): def get_fieldsets(self, request, obj=None):
@ -67,6 +68,8 @@ class FieldsetsMixin:
fieldsets.append((_("general"), {"fields": self.general_fields})) fieldsets.append((_("general"), {"fields": self.general_fields}))
if self.relation_fields: if self.relation_fields:
fieldsets.append((_("relations"), {"fields": self.relation_fields})) fieldsets.append((_("relations"), {"fields": self.relation_fields}))
if self.additional_fields:
fieldsets.append((_("additional info"), {"fields": self.additional_fields}))
opts = self.model._meta opts = self.model._meta
meta_fields = [] meta_fields = []
@ -186,69 +189,187 @@ class CategoryChildrenInline(TabularInline):
class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class AttributeGroupAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = AttributeGroup # type: ignore [misc] model = AttributeGroup # type: ignore [misc]
list_display = ("name", "modified") list_display = (
search_fields = ("uuid", "name") "name",
readonly_fields = ("uuid", "modified", "created") "modified",
)
general_fields = ["is_active", "name", "parent"] search_fields = (
relation_fields = [] "uuid",
"name",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
general_fields = [
"is_active",
"name",
"parent",
]
@register(Attribute) @register(Attribute)
class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class AttributeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Attribute # type: ignore [misc] model = Attribute # type: ignore [misc]
list_display = ("name", "group", "value_type", "modified") list_display = (
list_filter = ("value_type", "group", "is_active") "name",
search_fields = ("uuid", "name", "group__name") "group",
readonly_fields = ("uuid", "modified", "created") "value_type",
autocomplete_fields = ["categories", "group"] "modified",
)
general_fields = ["is_active", "name", "value_type", "is_filterable"] list_filter = (
relation_fields = ["group", "categories"] "value_type",
"group",
"is_active",
)
search_fields = (
"uuid",
"name",
"group__name",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
autocomplete_fields = [
"categories",
"group",
]
general_fields = [
"is_active",
"name",
"value_type",
"is_filterable",
]
relation_fields = [
"group",
"categories",
]
@register(AttributeValue) @register(AttributeValue)
class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class AttributeValueAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = AttributeValue # type: ignore [misc] model = AttributeValue # type: ignore [misc]
list_display = ("attribute", "value", "modified") list_display = (
list_filter = ("attribute__group", "is_active") "attribute",
search_fields = ("uuid", "value", "attribute__name") "value",
readonly_fields = ("uuid", "modified", "created") "modified",
autocomplete_fields = ["attribute"] )
list_filter = (
general_fields = ["is_active", "value"] "attribute__group",
relation_fields = ["attribute", "product"] "is_active",
)
search_fields = (
"uuid",
"value",
"attribute__name",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
autocomplete_fields = [
"attribute",
]
general_fields = [
"is_active",
"value",
]
relation_fields = [
"attribute",
"product",
]
@register(Category) @register(Category)
class CategoryAdmin(FieldsetsMixin, ActivationActionsMixin, DraggableMPTTAdmin): class CategoryAdmin(FieldsetsMixin, ActivationActionsMixin, DraggableMPTTAdmin):
# noinspection PyClassVar # noinspection PyClassVar
model = Category model = Category
list_display = ("indented_title", "parent", "is_active", "modified") list_display = (
"indented_title",
"parent",
"is_active",
"modified",
)
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
list_filter = ("is_active", "level", "created", "modified") list_filter = (
search_fields = ("uuid", "name") "is_active",
inlines = [CategoryChildrenInline] "level",
autocomplete_fields = ["parent", "tags"] "created",
readonly_fields = ("slug", "uuid", "modified", "created") "modified",
)
search_fields = (
"uuid",
"name",
)
inlines = [
CategoryChildrenInline,
]
autocomplete_fields = [
"parent",
"tags",
]
readonly_fields = (
"slug",
"uuid",
"modified",
"created",
)
general_fields = ["is_active", "name", "description", "image", "markup_percent", "priority"] general_fields = [
relation_fields = ["parent", "tags"] "is_active",
"name",
"description",
"image",
"markup_percent",
"priority",
]
relation_fields = [
"parent",
"tags",
]
@register(Brand) @register(Brand)
class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class BrandAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Brand # type: ignore [misc] model = Brand # type: ignore [misc]
list_display = ("name",) list_display = (
list_filter = ("categories", "is_active") "name",
search_fields = ("uuid", "name", "categories__name") "priority",
readonly_fields = ("uuid", "slug", "modified", "created") "is_active",
)
general_fields = ["is_active", "name", "description", "priority"] list_filter = (
relation_fields = ["small_logo", "big_logo", "categories"] "categories",
"is_active",
)
search_fields = (
"uuid",
"name",
"categories__name",
)
readonly_fields = (
"uuid",
"slug",
"modified",
"created",
)
general_fields = [
"is_active",
"name",
"description",
"priority",
]
relation_fields = [
"small_logo",
"big_logo",
"categories",
]
@register(Product) @register(Product)
@ -284,12 +405,34 @@ class ProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type:
"slug", "slug",
"sku", "sku",
) )
readonly_fields = ("slug", "uuid", "modified", "created") readonly_fields = (
autocomplete_fields = ("category", "brand", "tags") "slug",
inlines = [AttributeValueInline, ProductImageInline, StockInline] "uuid",
"modified",
"created",
)
autocomplete_fields = (
"category",
"brand",
"tags",
)
inlines = [
AttributeValueInline,
ProductImageInline,
StockInline,
]
general_fields = ["is_active", "name", "partnumber", "is_digital"] general_fields = [
relation_fields = ["category", "brand", "tags"] "is_active",
"name",
"partnumber",
"is_digital",
]
relation_fields = [
"category",
"brand",
"tags",
]
@register(ProductTag) @register(ProductTag)
@ -298,49 +441,113 @@ class ProductTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # ty
model = ProductTag # type: ignore [misc] model = ProductTag # type: ignore [misc]
list_display = ("tag_name",) list_display = ("tag_name",)
search_fields = ("tag_name",) search_fields = ("tag_name",)
readonly_fields = ("uuid", "modified", "created") readonly_fields = (
"uuid",
general_fields = ["is_active", "tag_name", "name"] "modified",
relation_fields = [] "created",
)
general_fields = [
"is_active",
"tag_name",
"name",
]
@register(CategoryTag) @register(CategoryTag)
class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class CategoryTagAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = CategoryTag # type: ignore [misc] model = CategoryTag # type: ignore [misc]
list_display = ("tag_name",) list_display = (
search_fields = ("tag_name",) "name",
readonly_fields = ("uuid", "modified", "created") "tag_name",
"is_active",
general_fields = ["is_active", "tag_name", "name"] )
relation_fields = [] search_fields = (
"name",
"tag_name",
"is_active",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
general_fields = [
"is_active",
"tag_name",
"name",
]
@register(Vendor) @register(Vendor)
class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class VendorAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Vendor # type: ignore [misc] model = Vendor # type: ignore [misc]
list_display = ("name", "markup_percent", "modified") list_display = (
list_filter = ("markup_percent", "is_active") "name",
search_fields = ("name",) "markup_percent",
readonly_fields = ("uuid", "modified", "created") "modified",
)
list_filter = (
"markup_percent",
"is_active",
)
search_fields = (
"name",
"uuid",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
form = VendorForm form = VendorForm
general_fields = [
general_fields = ["is_active", "name", "markup_percent", "authentication", "b2b_auth_token"] "is_active",
relation_fields = ["users"] "name",
"markup_percent",
"authentication",
]
relation_fields = [
"users",
]
additional_fields = [
"additional_fields",
"b2b_auth_token",
]
@register(Feedback) @register(Feedback)
class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class FeedbackAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Feedback # type: ignore [misc] model = Feedback # type: ignore [misc]
list_display = ("order_product", "rating", "comment", "modified") list_display = (
list_filter = ("rating", "is_active") "order_product",
search_fields = ("order_product__product__name", "comment") "rating",
readonly_fields = ("uuid", "modified", "created") "comment",
"modified",
general_fields = ["is_active", "rating", "comment"] )
relation_fields = ["order_product"] list_filter = (
"rating",
"is_active",
)
search_fields = (
"order_product__product__name",
"comment",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
general_fields = [
"is_active",
"rating",
"comment",
]
relation_fields = [
"order_product",
]
@register(Order) @register(Order)
@ -355,8 +562,18 @@ class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
"buy_time", "buy_time",
"modified", "modified",
) )
list_filter = ("status", "buy_time", "modified", "created") list_filter = (
search_fields = ("user__email", "status", "uuid", "human_readable_id") "status",
"buy_time",
"modified",
"created",
)
search_fields = (
"user__email",
"status",
"uuid",
"human_readable_id",
)
readonly_fields = ( readonly_fields = (
"total_price", "total_price",
"total_quantity", "total_quantity",
@ -365,25 +582,61 @@ class OrderAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
"modified", "modified",
"created", "created",
) )
inlines = [OrderProductInline] inlines = [
OrderProductInline,
]
form = OrderForm form = OrderForm
general_fields = [
general_fields = ["is_active", "user", "status", "notifications", "attributes", "buy_time"] "is_active",
relation_fields = ["promo_code", "billing_address", "shipping_address"] "user",
"status",
"notifications",
"attributes",
"buy_time",
]
relation_fields = [
"promo_code",
"billing_address",
"shipping_address",
]
@register(OrderProduct) @register(OrderProduct)
class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class OrderProductAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = OrderProduct # type: ignore [misc] model = OrderProduct # type: ignore [misc]
list_display = ("order", "product", "quantity", "buy_price", "status", "modified") list_display = (
list_filter = ("status",) "order",
search_fields = ("order__user__email", "product__name") "product",
readonly_fields = ("uuid", "modified", "created") "quantity",
"buy_price",
"status",
"modified",
)
list_filter = (
"status",
"modified",
)
search_fields = (
"order__user__email",
"product__name",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
form = OrderProductForm form = OrderProductForm
general_fields = [
general_fields = ["is_active", "quantity", "buy_price", "status"] "is_active",
relation_fields = ["order", "product"] "quantity",
"buy_price",
"status",
]
relation_fields = [
"order",
"product",
]
@register(PromoCode) @register(PromoCode)
@ -398,11 +651,24 @@ class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ
"end_time", "end_time",
"used_on", "used_on",
) )
list_filter = ("discount_percent", "discount_amount", "start_time", "end_time") list_filter = (
search_fields = ("code",) "discount_percent",
readonly_fields = ("used_on", "uuid", "modified", "created") "discount_amount",
"start_time",
"end_time",
)
search_fields = (
"code",
"uuid",
"user__email",
)
readonly_fields = (
"used_on",
"uuid",
"modified",
"created",
)
autocomplete_fields = ("user",) autocomplete_fields = ("user",)
general_fields = [ general_fields = [
"is_active", "is_active",
"code", "code",
@ -412,32 +678,68 @@ class PromoCodeAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # typ
"end_time", "end_time",
"used_on", "used_on",
] ]
relation_fields = ["user"] relation_fields = [
"user",
]
@register(Promotion) @register(Promotion)
class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class PromotionAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Promotion # type: ignore [misc] model = Promotion # type: ignore [misc]
list_display = ("name", "discount_percent", "modified") list_display = (
"name",
"discount_percent",
"modified",
)
search_fields = ("name",) search_fields = ("name",)
readonly_fields = ("uuid", "modified", "created") readonly_fields = (
"uuid",
"modified",
"created",
)
autocomplete_fields = ("products",) autocomplete_fields = ("products",)
general_fields = [
general_fields = ["is_active", "name", "discount_percent", "description"] "is_active",
relation_fields = ["products"] "name",
"discount_percent",
"description",
]
relation_fields = [
"products",
]
@register(Stock) @register(Stock)
class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Stock # type: ignore [misc] model = Stock # type: ignore [misc]
list_display = ("product", "vendor", "sku", "quantity", "price", "modified") list_display = (
list_filter = ("vendor", "quantity") "product",
search_fields = ("product__name", "vendor__name", "sku") "vendor",
readonly_fields = ("uuid", "modified", "created") "sku",
autocomplete_fields = ("product", "vendor") "quantity",
"price",
"modified",
)
list_filter = (
"vendor",
"quantity",
)
search_fields = (
"product__name",
"vendor__name",
"sku",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
autocomplete_fields = (
"product",
"vendor",
)
general_fields = [ general_fields = [
"is_active", "is_active",
"sku", "sku",
@ -446,48 +748,100 @@ class StockAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: i
"purchase_price", "purchase_price",
"digital_asset", "digital_asset",
] ]
relation_fields = ["product", "vendor"] relation_fields = [
"product",
"vendor",
]
@register(Wishlist) @register(Wishlist)
class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class WishlistAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = Wishlist # type: ignore [misc] model = Wishlist # type: ignore [misc]
list_display = ("user", "modified") list_display = (
search_fields = ("user__email",) "user",
readonly_fields = ("uuid", "modified", "created") "modified",
)
general_fields = ["is_active", "user"] search_fields = (
relation_fields = ["products"] "user__email",
"uuid",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
general_fields = [
"is_active",
"user",
]
relation_fields = [
"products",
]
@register(ProductImage) @register(ProductImage)
class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc] class ProductImageAdmin(FieldsetsMixin, ActivationActionsMixin, ModelAdmin): # type: ignore [misc]
# noinspection PyClassVar # noinspection PyClassVar
model = ProductImage # type: ignore [misc] model = ProductImage # type: ignore [misc]
list_display = ("alt", "product", "priority", "modified") list_display = (
list_filter = ("priority",) "alt",
search_fields = ("alt", "product__name") "product",
readonly_fields = ("uuid", "modified", "created") "priority",
"modified",
)
list_filter = (
"priority",
"modified",
"created",
)
search_fields = (
"alt",
"product__name",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
autocomplete_fields = ("product",) autocomplete_fields = ("product",)
general_fields = [ general_fields = [
"is_active", "is_active",
"alt", "alt",
"priority", "priority",
"image", "image",
] ]
relation_fields = ["product"] relation_fields = [
"product",
]
@register(Address) @register(Address)
class AddressAdmin(FieldsetsMixin, GISModelAdmin): class AddressAdmin(FieldsetsMixin, GISModelAdmin):
# noinspection PyClassVar # noinspection PyClassVar
model = Address # type: ignore [misc] model = Address # type: ignore [misc]
list_display = ("street", "city", "region", "country", "user") list_display = (
list_filter = ("country", "region") "street",
search_fields = ("street", "city", "postal_code", "user__email") "city",
readonly_fields = ("uuid", "modified", "created") "region",
"country",
"user",
)
list_filter = (
"country",
"region",
)
search_fields = (
"street",
"city",
"postal_code",
"user__email",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
gis_widget_kwargs = { gis_widget_kwargs = {
"attrs": { "attrs": {
"default_lon": 37.61556, "default_lon": 37.61556,
@ -495,7 +849,6 @@ class AddressAdmin(FieldsetsMixin, GISModelAdmin):
"default_zoom": 6, "default_zoom": 6,
} }
} }
general_fields = [ general_fields = [
"is_active", "is_active",
"address_line", "address_line",
@ -517,10 +870,20 @@ class AddressAdmin(FieldsetsMixin, GISModelAdmin):
class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin): class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin):
# noinspection PyClassVar # noinspection PyClassVar
model = CustomerRelationshipManagementProvider # type: ignore [misc] model = CustomerRelationshipManagementProvider # type: ignore [misc]
list_display = ("name", "default") list_display = (
search_fields = ("name",) "name",
readonly_fields = ("uuid", "modified", "created") "default",
)
search_fields = (
"name",
"uuid",
)
readonly_fields = (
"uuid",
"modified",
"created",
)
form = CRMForm
general_fields = [ general_fields = [
"is_active", "is_active",
"name", "name",
@ -530,22 +893,29 @@ class CustomerRelationshipManagementProviderAdmin(FieldsetsMixin, ModelAdmin):
"attributes", "attributes",
"authentication", "authentication",
] ]
relation_fields = []
@register(OrderCrmLink) @register(OrderCrmLink)
class OrderCrmLinkAdmin(FieldsetsMixin, ModelAdmin): class OrderCrmLinkAdmin(FieldsetsMixin, ModelAdmin):
# noinspection PyClassVar # noinspection PyClassVar
model = OrderCrmLink # type: ignore [misc] model = OrderCrmLink # type: ignore [misc]
list_display = ("crm_lead_id",) list_display = (
search_fields = ("crm_lead_id",) "crm_lead_id",
"order",
)
search_fields = (
"crm_lead_id",
"order__human_readable_id",
"order__uuid",
"order__user__uuid",
"order__user__email",
)
readonly_fields = ( readonly_fields = (
"uuid", "uuid",
"modified", "modified",
"created", "created",
"crm_lead_id", "crm_lead_id",
) )
general_fields = [ general_fields = [
"is_active", "is_active",
"crm_lead_id", "crm_lead_id",

View file

@ -22,6 +22,16 @@ class VendorForm(forms.ModelForm):
} }
class CRMForm(forms.ModelForm):
class Meta:
model = Product
fields = "__all__"
widgets = {
"authentication": JSONTableWidget(),
"attributes": JSONTableWidget(),
}
class OrderProductForm(forms.ModelForm): class OrderProductForm(forms.ModelForm):
class Meta: class Meta:
model = OrderProduct model = OrderProduct

View file

@ -5,7 +5,6 @@ from django.db import migrations, models
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
("core", "0043_attribute_is_filterable_and_more"), ("core", "0043_attribute_is_filterable_and_more"),
] ]

View file

@ -1180,7 +1180,7 @@ class Order(ExportModelOperationsMixin("order"), NiceModel): # type: ignore [mi
verbose_name_plural = _("orders") verbose_name_plural = _("orders")
def __str__(self) -> str: def __str__(self) -> str:
return f"#{self.pk} for {self.user.email if self.user else 'unregistered user'}" return f"#{self.human_readable_id} for {self.user.email if self.user else 'unregistered user'}"
@property @property
def is_business(self) -> bool: def is_business(self) -> bool:

View file

@ -85,9 +85,7 @@ CONSTANCE_CONFIG_FIELDSETS = OrderedDict(
"ADVERTSIMENT", "ADVERTSIMENT",
"ANALYTICS", "ANALYTICS",
), ),
gettext_noop("Debugging Options"): ( gettext_noop("Debugging Options"): ("SAVE_VENDORS_RESPONSES",),
"SAVE_VENDORS_RESPONSES",
),
} }
) )