From a0b1a36fc1e30bc36fc6d6199896b8b5f080c442 Mon Sep 17 00:00:00 2001 From: FUNNYDMAN Date: Sat, 27 Oct 2018 20:58:17 +0300 Subject: [PATCH] remove some ugly stuff from models --- eshop_project/settings/base.py | 6 ++-- products/context_processors.py | 6 ++-- products/models.py | 54 ----------------------------- products/utils.py | 62 ---------------------------------- products/views.py | 5 +-- 5 files changed, 7 insertions(+), 126 deletions(-) delete mode 100644 products/utils.py diff --git a/eshop_project/settings/base.py b/eshop_project/settings/base.py index 8e44c2f..ff29040 100644 --- a/eshop_project/settings/base.py +++ b/eshop_project/settings/base.py @@ -111,7 +111,7 @@ TEMPLATES = [ 'core.context_processors.breadcrumbs', 'contact_us.context_processors.contact_us_form', 'products.context_processors.product_search_form', - 'products.context_processors.product_fitler_formset', + 'products.context_processors.product_filter_formset', 'products.context_processors.product_categories', 'products.context_processors.product_manufacture_list', 'cart.context_processors.cart_basket', @@ -198,7 +198,7 @@ AUTH_PASSWORD_VALIDATORS = [ }, ] -#PINAX BLOG +# PINAX BLOG # PINAX_BLOG_SCOPING_URL_VAR = "username" # PINAX_BLOG_SCOPING_MODEL = AUTH_USER_MODEL # PINAX_BLOG_HOOKSET = "multiblog.hooks.HookSet" # where `multiblog` is the package name of our project @@ -250,7 +250,7 @@ LOGGING = { }, 'loggers': { 'django.request': { - 'handlers': ['mail_admins','debug_file_handler' if DEBUG else 'prod_file_handler'], + 'handlers': ['mail_admins', 'debug_file_handler' if DEBUG else 'prod_file_handler'], 'level': 'ERROR', 'propagate': True } diff --git a/products/context_processors.py b/products/context_processors.py index 476547a..1463e2b 100644 --- a/products/context_processors.py +++ b/products/context_processors.py @@ -9,7 +9,7 @@ from products.models import ProductCategory, Manufacturer, Product def product_search_form(request): # @TODO: APPLY SEARCH IN THE CONTEXT OF SET OF FILTERS - if not "products" in request.resolver_match.view_name: + if "products" not in request.resolver_match.view_name: product_form_action = {'viewname': 'products:product_list', 'kwargs': {}} else: product_form_action = {'viewname': request.resolver_match.view_name, 'kwargs': request.resolver_match.kwargs} @@ -34,8 +34,8 @@ def product_search_form(request): } -def product_fitler_formset(request): - if not "products" in request.resolver_match.view_name: +def product_filter_formset(request): + if "products" not in request.resolver_match.view_name: product_form_action = {'viewname': 'products:product_list', 'kwarg': {}} else: product_form_action = {'viewname': request.resolver_match.view_name, 'kwargs': request.resolver_match.kwargs} diff --git a/products/models.py b/products/models.py index ce219a4..db16ad7 100644 --- a/products/models.py +++ b/products/models.py @@ -6,7 +6,6 @@ from mptt.models import TreeForeignKey from core.models import AbstractStatusModel, AbstractDateTimeModel, AbstractStatusMPTTModel -# ---------------------------------- COMMON PRODUCT STATUS ---------------------------------------# STATUS_INACTIVE = 0 STATUS_ACTIVE = 25 STATUS_DELETED = 50 @@ -20,55 +19,6 @@ STATUS_CHOICES = ( ) -# --------------------------------- PRODUCT ATTRIBUTE STATTUS------------------------------------# -# PRODUCT_ATTRIBUTE_TYPE_NONE = 0 -# PRODUCT_ATTRIBUTE_TYPE_RANGE = 25 -# PRODUCT_ATTRIBUTE_TYPE_SELECT = 50 -# PRODUCT_ATTRIBUTE_TYPE_CHECKBOX = 75 -# PRODUCT_ATTRIBUTE_TYPE_INPUT = 100 -# -# PRODUCT_ATTRIBUTE_TYPE_CHOICES = ( -# (PRODUCT_ATTRIBUTE_TYPE_NONE, _('отсуствует')), -# (PRODUCT_ATTRIBUTE_TYPE_RANGE, _('диапазон')), -# (PRODUCT_ATTRIBUTE_TYPE_SELECT, _('выбор из списка')), -# (PRODUCT_ATTRIBUTE_TYPE_CHECKBOX, _('мн. выбор из списка')), -# (PRODUCT_ATTRIBUTE_TYPE_INPUT, _('значение'), -# ) -# ) -# PRODUCT_ATTRIBUTE_TYPE_DEFAULT = PRODUCT_ATTRIBUTE_TYPE_NONE - - -# class ProductAttributeManager(ActiveOnlyManager): -# def get_range_type_attributes(self, product=None): -# pass -# -# def get_select_type_attributes(self, product=None): -# pass -# -# def get_all_type_attributes(self): -# pass - - -# # @TODO: tranlsate into english and use traslation -# class ProductAttribute(AbstractStatusModel): -# name = models.CharField(_('название'), max_length=64) -# slug = AutoSlugField(populate_from='name', verbose_name=_('код'), help_text="поисковый код аттрибута,по котором возможен поиск") -# type = models.SmallIntegerField(_('тип'), choices=PRODUCT_ATTRIBUTE_TYPE_CHOICES, -# default=PRODUCT_ATTRIBUTE_TYPE_DEFAULT) -# status = models.SmallIntegerField(_('статус'), default=STATUS_DEFAULT, choices=STATUS_CHOICES) -# main_attribute = models.BooleanField(_('основной атрибут'), default=False, help_text=_('будет отображен рядом с товаром при отображении в списке')) -# -# objects = ProductAttributeManager() -# -# def __str__(self): -# return self.name -# -# class Meta: -# ordering = ('slug',) -# verbose_name = _('Аттрибут продукта') -# verbose_name_plural = _('Аттрибуты продукта') - - class Manufacturer(AbstractStatusModel): name = models.CharField(_('название'), max_length=256, blank=False, null=False) slug = AutoSlugField(verbose_name=_('код'), unique=True, populate_from='name') @@ -83,7 +33,6 @@ class Manufacturer(AbstractStatusModel): verbose_name_plural = _('Производители') -# @TODO: tranlsate into english and use traslation class ProductCategory(AbstractStatusMPTTModel): def get_file_path(self, filename): return "products/{category}/{filename}".format(**{ @@ -119,7 +68,6 @@ class ProductCategory(AbstractStatusMPTTModel): verbose_name_plural = _("Категории") -# @TODO: translate into english and use translation class Product(AbstractStatusMPTTModel): name = models.CharField(_('имя'), max_length=64, db_index=True) slug = AutoSlugField(_('slug'), populate_from='name', db_index=True) @@ -164,8 +112,6 @@ class ProductRate(AbstractDateTimeModel): verbose_name_plural = _('Рейтинг продукта') -# ----------------- PRODUCT IMAGE STATUS LIST ------------------ - class ProductImageManager(models.Manager): def get_default_image(self): return self.get_queryset().filter(product=self.instance, is_default=True).first() diff --git a/products/utils.py b/products/utils.py deleted file mode 100644 index 73ba0ae..0000000 --- a/products/utils.py +++ /dev/null @@ -1,62 +0,0 @@ -from django.utils.html_parser import HTMLParser - -from .models import Product - - -# @TODO: MAKE DESCTIPTION PREVIEW - -class ProductDesctipionHtmlParser(HTMLParser): - - def __init__(self, convert_charrefs=False, **kwargs): - super().__init__(convert_charrefs, **kwargs) - - def error(self, message): - pass - - def handle_startendtag(self, tag, attrs): - super().handle_startendtag(tag, attrs) - - def handle_data(self, data): - super().handle_data(data) - - def handle_endtag(self, tag): - super().handle_endtag(tag) - - -# @TODO: NOT USED. FIGURE OUT THE PUPRPOSE OF THIS CODE -def get_variant_picker_data(product): - variants = product.variants.all() - variant_attributes = product.attributes.all() - data = {'variants': [], 'variantAttributes': [], 'discount_policy': product.discount_policy} - - for attribute in sorted(variant_attributes, key=lambda x: x.main_attribute, reverse=True): - data['variantAttributes'].append({ - 'name': attribute.name, - 'public_name': attribute.name.split('_')[1], - 'slug': attribute.slug, - 'values': [{'name': value.name, 'slug': value.slug} for value in attribute.values.all()] - }) - - for variant in variants: - price = variant.price - - variant_data = { - 'id': variant.id, - 'slug': variant.slug, - 'name': variant.name, - 'price': int(price), - 'attributes': variant.attributes, - - } - - data['variants'].append(variant_data) - - return data - - -def expand_categories(categories): - products = None - for e in categories: - if e.name.startswith('None'): - products = Product.objects.filter(category=e) - return [x for x in categories if not x.name.startswith('None')], products diff --git a/products/views.py b/products/views.py index e5b37d9..84ac4a7 100644 --- a/products/views.py +++ b/products/views.py @@ -23,9 +23,6 @@ class ProductDetailView(DetailView): self.kwargs[self.slug_url_kwarg] = slug_url_kwarg_val return super().dispatch(request, *args, **kwargs) - def get_slug_field(self): - return 'slug' - def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['title'] = self.object.name @@ -76,7 +73,7 @@ class ProductListView(ListView): return {product.id: CartAddInlineForm(initial={'offer': product.id, 'amount': 1}) for product in products} def get_product_sorting_form(self): - if not "products" in self.request.resolver_match.view_name: + if "products" not in self.request.resolver_match.view_name: product_form_action = {'viewname': 'products:product_list', 'kwarg': {}} else: product_form_action = {'viewname': self.request.resolver_match.view_name,