Compare commits

...

1 Commits

Author SHA1 Message Date
Max Yakovenko aace6dd8df break project)) 7 years ago
  1. 4
      accounts_ext/admin.py
  2. 40
      cabinet/views.py
  3. 14
      eshop_project/settings/base.py
  4. 4
      eshop_project/urls.py
  5. 18
      index/views.py
  6. 8
      products/admin.py
  7. 54
      products/context_processors.py
  8. 4
      products/templatetags/products_filters.py
  9. 8
      products/views.py
  10. 12
      referral/middleware.py
  11. 11
      referral/models.py
  12. 6
      templates/components/footer.html
  13. 9
      templates/components/header.html
  14. 6
      templates/components/navbar.html

@ -9,7 +9,7 @@ from jet.filters import DateRangeFilter
from rangefilter.filter import DateTimeRangeFilter from rangefilter.filter import DateTimeRangeFilter
from core.admin import SafeModelAdmin from core.admin import SafeModelAdmin
from referral.admin import ReferralAdminInline # from referral.admin import ReferralAdminInline
from .forms import UserChangeForm, UserCreationForm from .forms import UserChangeForm, UserCreationForm
from .models import Profile, Company, Group from .models import Profile, Company, Group
@ -27,7 +27,7 @@ class CustomUserResource(resources.ModelResource):
@admin.register(get_user_model()) @admin.register(get_user_model())
class UserAdmin(SafeModelAdmin, BaseUserAdmin): class UserAdmin(SafeModelAdmin, BaseUserAdmin):
inlines = ( inlines = (
ReferralAdminInline, # ReferralAdminInline,
) )
fieldsets = ( fieldsets = (

@ -3,7 +3,7 @@ from django.core.paginator import Paginator
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
# Create your views here. # Create your views here.
from cart.models import BUYING_STATUS_PAID # from cart.models import BUYING_STATUS_PAID
from core.views import ProtectedTemplateView from core.views import ProtectedTemplateView
@ -11,20 +11,20 @@ class IndexTemplateView(ProtectedTemplateView):
template_name = 'cabinet/index.html' template_name = 'cabinet/index.html'
title = _('Личный кабинет') title = _('Личный кабинет')
def get_ref_link(self,user): # def get_ref_link(self,user):
return "{path}?ref={ref_link}".format(**{ # return "{path}?ref={ref_link}".format(**{
'path': user.referral.url, # 'path': user.referral.url,
'ref_link': user.referral.code # 'ref_link': user.referral.code
}) # })
def get_bought_item_list(self,user): # def get_bought_item_list(self,user):
bought_item_queryset = user.buying_set.filter(status=BUYING_STATUS_PAID).order_by('-create_at').all() # bought_item_queryset = user.buying_set.filter(status=BUYING_STATUS_PAID).order_by('-create_at').all()
paginator = Paginator( # paginator = Paginator(
object_list=bought_item_queryset, # object_list=bought_item_queryset,
per_page=5 # per_page=5
) # )
the_page = 1 # the_page = 1
return paginator.page(the_page) # return paginator.page(the_page)
def get_full_name(self,user): def get_full_name(self,user):
return '{last_name} {first_name} {patronymic}'.format(**{ return '{last_name} {first_name} {patronymic}'.format(**{
@ -33,18 +33,18 @@ class IndexTemplateView(ProtectedTemplateView):
'patronymic': user.profile.patronymic or "" 'patronymic': user.profile.patronymic or ""
}) })
def get_user_points(self,user): # def get_user_points(self,user):
return user.referral.referralstats.points # return user.referral.referralstats.points
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context['title'] = self.title context['title'] = self.title
context['ref_link'] = self.get_ref_link(self.request.user) # context['ref_link'] = self.get_ref_link(self.request.user)
context['bought_item_list'] = self.get_bought_item_list(self.request.user) # context['bought_item_list'] = self.get_bought_item_list(self.request.user)
context['full_name'] = self.get_full_name(self.request.user) context['full_name'] = self.get_full_name(self.request.user)
context['email'] = self.request.user.email context['email'] = self.request.user.email
context['phone_number'] = self.request.user.profile.phone context['phone_number'] = self.request.user.profile.phone
context['company'] = self.request.user.company or None context['company'] = self.request.user.company or None
context['profile'] = self.request.user.profile or None context['profile'] = self.request.user.profile or None
context['referral_points'] = self.get_user_points(user=self.request.user) # context['referral_points'] = self.get_user_points(user=self.request.user)
return context return context

@ -44,10 +44,10 @@ INSTALLED_APPS = [
'core', 'core',
'cabinet', 'cabinet',
'referral', # 'referral',
'products', 'products',
'cart', # 'cart',
'blog_ext', # 'blog_ext',
'accounts_ext', 'accounts_ext',
'index', 'index',
'contact_us', 'contact_us',
@ -88,7 +88,7 @@ MIDDLEWARE = [
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware', 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'cart.middleware.CartMonkeyPatchingMiddleware', # 'cart.middleware.CartMonkeyPatchingMiddleware',
'referral.middleware.ReferralMiddleware', 'referral.middleware.ReferralMiddleware',
] ]
@ -110,11 +110,11 @@ TEMPLATES = [
'django.contrib.messages.context_processors.messages', 'django.contrib.messages.context_processors.messages',
'core.context_processors.breadcrumbs', 'core.context_processors.breadcrumbs',
'contact_us.context_processors.contact_us_form', 'contact_us.context_processors.contact_us_form',
'products.context_processors.product_search_form', # 'products.context_processors.product_search_form',
'products.context_processors.product_fitler_formset', # 'products.context_processors.product_fitler_formset',
'products.context_processors.product_categories', 'products.context_processors.product_categories',
'products.context_processors.product_manufacture_list', 'products.context_processors.product_manufacture_list',
'cart.context_processors.cart_basket', # 'cart.context_processors.cart_basket',
], ],
}, },
}, },

@ -41,9 +41,9 @@ urlpatterns = [
re_path(r'^products/', include(('products.urls', 'products'), namespace='products')), re_path(r'^products/', include(('products.urls', 'products'), namespace='products')),
re_path(r'^cabinet/', include(('cabinet.urls', 'cabinet'), namespace='cabinet')), re_path(r'^cabinet/', include(('cabinet.urls', 'cabinet'), namespace='cabinet')),
re_path(r'^cart/', include(('cart.urls', 'cart'), namespace='cart')), # re_path(r'^cart/', include(('cart.urls', 'cart'), namespace='cart')),
re_path(r'^news/', include(('blog_ext.urls','blog_ext'), namespace='news')), # re_path(r'^news/', include(('blog_ext.urls','blog_ext'), namespace='news')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \ ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) \
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

@ -1,23 +1,23 @@
from django.views.generic import TemplateView from django.views.generic import TemplateView
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from cart.models import Client # from cart.models import Client
from core.models import Certificate # from core.models import Certificate
class IndexView(TemplateView): class IndexView(TemplateView):
template_name = 'index/index.html' template_name = 'index/index.html'
title = _('Русские программы') title = _('Русские программы')
def get_clients(self): # def get_clients(self):
return Client.active.only('name', 'image').all() # return Client.active.only('name', 'image').all()
#
def get_certs(self): # def get_certs(self):
return Certificate.active.only('name', 'image').all() # return Certificate.active.only('name', 'image').all()
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context['title'] = self.title context['title'] = self.title
context['clients'] = self.get_clients() # context['clients'] = self.get_clients()
context['certs'] = self.get_certs() # context['certs'] = self.get_certs()
return context return context

@ -7,10 +7,10 @@ from import_export.admin import ImportExportModelAdmin
from jet.admin import CompactInline from jet.admin import CompactInline
from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter
from cart.admin import ProductOfferInlineAdmin # from cart.admin import ProductOfferInlineAdmin
from core.admin import SafeModelAdmin from core.admin import SafeModelAdmin
from .forms import ProductAdminForm # from .forms import ProductAdminForm
from .models import ( from .models import (
Product, ProductCategory, ProductImage, Manufacturer Product, ProductCategory, ProductImage, Manufacturer
) )
@ -128,11 +128,11 @@ class ProductImageInlineAdmin(CompactInline):
class ProductAdmin(ImportExportModelAdmin, SafeModelAdmin): class ProductAdmin(ImportExportModelAdmin, SafeModelAdmin):
inlines = ( inlines = (
ProductImageInlineAdmin, ProductImageInlineAdmin,
ProductOfferInlineAdmin, # ProductOfferInlineAdmin,
) )
list_display = ('name', 'parent', 'manufacturer', 'status') list_display = ('name', 'parent', 'manufacturer', 'status')
list_filter = ('status', 'create_at', 'updated_at', 'parent') list_filter = ('status', 'create_at', 'updated_at', 'parent')
search_fields = ('name', 'id',) search_fields = ('name', 'id',)
readonly_fields = ('slug',) readonly_fields = ('slug',)
resource_class = ProductResource resource_class = ProductResource
form = ProductAdminForm # form = ProductAdminForm

@ -1,6 +1,6 @@
from django.urls import reverse_lazy from django.urls import reverse_lazy
from cart.forms import ProductOfferPriceFilterForm, ProductOfferSupplyTypeFilterForm, ProductOfferSupplyTargetFilterForm # from cart.forms import ProductOfferPriceFilterForm, ProductOfferSupplyTypeFilterForm, ProductOfferSupplyTargetFilterForm
from products.forms import ( from products.forms import (
ProductSearchForm, ProductManufacturerFilterForm ProductSearchForm, ProductManufacturerFilterForm
) )
@ -34,32 +34,32 @@ def product_search_form(request):
} }
def product_fitler_formset(request): # def product_fitler_formset(request):
if not "products" in request.resolver_match.view_name: # if not "products" in request.resolver_match.view_name:
product_form_action = {'viewname': 'products:product_list', 'kwarg': {}} # product_form_action = {'viewname': 'products:product_list', 'kwarg': {}}
else: # else:
product_form_action = {'viewname': request.resolver_match.view_name, 'kwargs': request.resolver_match.kwargs} # product_form_action = {'viewname': request.resolver_match.view_name, 'kwargs': request.resolver_match.kwargs}
#
return { # return {
'left_product_filter_formset':{ # 'left_product_filter_formset':{
'manufacturer': ProductManufacturerFilterForm( # 'manufacturer': ProductManufacturerFilterForm(
product_form_action=product_form_action, # product_form_action=product_form_action,
query_params=request.GET # query_params=request.GET
), # ),
'price': ProductOfferPriceFilterForm( # 'price': ProductOfferPriceFilterForm(
product_form_action=product_form_action, # product_form_action=product_form_action,
query_params=request.GET # query_params=request.GET
), # ),
'supply_type': ProductOfferSupplyTypeFilterForm( # 'supply_type': ProductOfferSupplyTypeFilterForm(
product_form_action=product_form_action, # product_form_action=product_form_action,
query_params=request.GET # query_params=request.GET
), # ),
'supply_target': ProductOfferSupplyTargetFilterForm( # 'supply_target': ProductOfferSupplyTargetFilterForm(
product_form_action=product_form_action, # product_form_action=product_form_action,
query_params=request.GET # query_params=request.GET
) # )
} # }
} # }
def product_manufacture_list(request): def product_manufacture_list(request):

@ -5,8 +5,8 @@ from django.utils.translation import ugettext_lazy as _
from django.template import Library from django.template import Library
from cart.forms import CartAddInlineForm # from cart.forms import CartAddInlineForm
from products.utils import ProductDesctipionHtmlParser # from products.utils import ProductDesctipionHtmlParser
register = Library() register = Library()

@ -5,7 +5,7 @@ from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import ListView, DetailView from django.views.generic import ListView, DetailView
from cart.forms import CartAddInlineForm # from cart.forms import CartAddInlineForm
from core.utils import parse_path from core.utils import parse_path
from .forms import (ProductSortForm) from .forms import (ProductSortForm)
from .models import (Product,ProductCategory) from .models import (Product,ProductCategory)
@ -72,8 +72,8 @@ class ProductListView(ListView):
qs = self.sort_products(qs) qs = self.sort_products(qs)
return qs return qs
def get_cart_add_formset(self, products): # def get_cart_add_formset(self, products):
return { product.id: CartAddInlineForm(initial={'offer': product.id,'amount': 1}) for product in products} # return { product.id: CartAddInlineForm(initial={'offer': product.id,'amount': 1}) for product in products}
def get_product_sorting_form(self): def get_product_sorting_form(self):
@ -91,5 +91,5 @@ class ProductListView(ListView):
context = super().get_context_data(object_list=object_list, **kwargs) context = super().get_context_data(object_list=object_list, **kwargs)
context['title'] = self.title context['title'] = self.title
context['product_sort_form'] = self.get_product_sorting_form() context['product_sort_form'] = self.get_product_sorting_form()
context['product_cart_add_formset'] = self.get_cart_add_formset(self.object_list) # context['product_cart_add_formset'] = self.get_cart_add_formset(self.object_list)
return context return context

@ -2,7 +2,7 @@ from django.http import HttpResponseRedirect
from django.urls import reverse from django.urls import reverse
from core.models import STATUS_ACTIVE from core.models import STATUS_ACTIVE
from .models import Referral # from .models import Referral
from .utils import set_cookie, pop_cookie, get_cookie from .utils import set_cookie, pop_cookie, get_cookie
@ -29,11 +29,11 @@ class ReferralMiddleware:
cookie_code = get_cookie(request.COOKIES, 'referral') cookie_code = get_cookie(request.COOKIES, 'referral')
if code != cookie_code: if code != cookie_code:
referral_code = request.GET.get('ref') referral_code = request.GET.get('ref')
referral = Referral.active.filter(code__exact=referral_code).first() # referral = Referral.active.filter(code__exact=referral_code).first()
if referral and referral.is_active: # if referral and referral.is_active:
referral.referralstats.visits += 1 # referral.referralstats.visits += 1
referral.referralstats.save() # referral.referralstats.save()
set_cookie(response, 'referral', referral_code) # set_cookie(response, 'referral', referral_code)
elif request.user.is_authenticated: elif request.user.is_authenticated:
pop_cookie(response, 'referral') pop_cookie(response, 'referral')
return response return response

@ -15,8 +15,8 @@ from django.utils.translation import ugettext_lazy as _
# Create your models here. # Create your models here.
from registration.signals import user_activated from registration.signals import user_activated
from cart.models import Buying # from cart.models import Buying
from cart.signals import buying_bought # from cart.signals import buying_bought
from core.models import AbstractStatusModel, STATUS_ACTIVE, STATUS_CHOICES from core.models import AbstractStatusModel, STATUS_ACTIVE, STATUS_CHOICES
from referral.mixins import StatsFormatterMixin from referral.mixins import StatsFormatterMixin
from referral.utils import get_cookie from referral.utils import get_cookie
@ -106,6 +106,7 @@ def update_ref_stats(sender, user, request, **kwargs):
logger.warning("Missing referral code in database: " + referral_code) logger.warning("Missing referral code in database: " + referral_code)
@receiver(buying_bought, sender=Buying) # @receiver(buying_bought, sender=Buying)
def charge_referral_points(sender, buying, *args, **kwargs): # def charge_referral_points(sender, buying, *args, **kwargs):
pass # pass
#

@ -10,8 +10,10 @@
<div class="col-md col-md-2 col-5"> <div class="col-md col-md-2 col-5">
<ul class="footer__menu"> <ul class="footer__menu">
<li><a href="{% url 'products:product_list' %}">Каталог</a></li> <li><a href="{% url 'products:product_list' %}">Каталог</a></li>
<li><a href="{% url 'news:blog' %}">Новости</a></li> {# <li><a href="{% url 'news:blog' %}">Новости</a></li>#}
<li><a href="{% url 'cart:discounts' %}">Акции</a></li> {# <li><a href="{% url 'cart:discounts' %}">Акции</a></li>#}
<li><a href="#">Новости</a></li>
<li><a href="#">Акции</a></li>
<li><a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a></li> <li><a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a></li>
</ul> </ul>
</div> </div>

@ -15,10 +15,12 @@
<a href="{% url 'products:product_list' %}">Каталог</a> <a href="{% url 'products:product_list' %}">Каталог</a>
</li> </li>
<li> <li>
<a href="{% url 'news:blog' %}">Новости</a> {# <a href="{% url 'news:blog' %}">Новости</a>#}
<a href="#">Новости</a>
</li> </li>
<li> <li>
<a href="{% url 'cart:discounts' %}">Акции</a> {# <a href="{% url 'cart:discounts' %}">Акции</a>#}
<a href="#">Акции</a>
</li> </li>
<li> <li>
<a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a> <a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a>
@ -51,7 +53,8 @@
</div> </div>
{% endif %} {% endif %}
{% if request.user.is_authenticated %} {% if request.user.is_authenticated %}
<a href="{% url 'cart:buyings' %}" class="header__cart"> {# <a href="{% url 'cart:buyings' %}" class="header__cart">#}
<a href="#" class="header__cart">
<img src="{% static "img/header/cart-icon.svg" %}" <img src="{% static "img/header/cart-icon.svg" %}"
alt="Перейти в корзину"> alt="Перейти в корзину">
{% if cart|length > 0 %} {% if cart|length > 0 %}

@ -4,8 +4,10 @@
<div class="container"> <div class="container">
<ul class="mobail-menu__list"> <ul class="mobail-menu__list">
<li><a href="{% url 'products:product_list' %}">Каталог</a></li> <li><a href="{% url 'products:product_list' %}">Каталог</a></li>
<li><a href="{% url 'news:blog' %}">Новости</a></li> {# <li><a href="{% url 'news:blog' %}">Новости</a></li>#}
<li><a href="{% url 'cart:discounts' %}">Акции</a></li> {# <li><a href="{% url 'cart:discounts' %}">Акции</a></li>#}
<li><a href="#">Новости</a></li>
<li><a href="#">Акции</a></li>
<li><a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a></li> <li><a href="{% url 'django.contrib.flatpages.views.flatpage' url='about-us/' %}">О компании</a></li>
{% if not user.is_authenticated %} {% if not user.is_authenticated %}
<li><a href="{% url 'accounts_ext:register' %}">Регистрация</a></li> <li><a href="{% url 'accounts_ext:register' %}">Регистрация</a></li>

Loading…
Cancel
Save