optimize imports and reformat code according to pep8

remotes/origin/ESHOP_refactor_products_app
FUNNYDMAN 7 years ago
parent 8d2d52ae45
commit de0ff868be
  1. 3
      accounts_ext/admin.py
  2. 10
      accounts_ext/forms.py
  3. 5
      accounts_ext/models.py
  4. 3
      accounts_ext/templatetags/accounts_ext_filters.py
  5. 5
      accounts_ext/urls.py
  6. 12
      accounts_ext/views.py
  7. 6
      blog_ext/admin.py
  8. 1
      blog_ext/forms.py
  9. 7
      blog_ext/models.py
  10. 2
      blog_ext/urls.py
  11. 1
      blog_ext/views.py
  12. 9
      cabinet/views.py
  13. 26
      cart/admin.py
  14. 3
      cart/context_processors.py
  15. 11
      cart/forms.py
  16. 11
      cart/models.py
  17. 15
      cart/tasks.py
  18. 27
      cart/templatetags/cart_tags.py
  19. 4
      contact_us/mixins.py
  20. 4
      contact_us/models.py
  21. 10
      contact_us/views.py
  22. 4
      flatpages_ext/admin.py
  23. 7
      flatpages_ext/views.py
  24. 5
      index/urls.py
  25. 6
      products/admin.py
  26. 2
      products/context_processors.py
  27. 0
      products/middleware.py
  28. 16
      products/models.py
  29. 9
      products/urls.py
  30. 4
      referral/admin.py
  31. 15
      referral/middleware.py
  32. 5
      referral/models.py
  33. 3
      referral/urls.py
  34. 10
      referral/utils.py

@ -1,7 +1,7 @@
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group as GroupBase
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin, GroupAdmin
from django.contrib.auth.models import Group as GroupBase
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from import_export import resources
@ -10,7 +10,6 @@ from rangefilter.filter import DateTimeRangeFilter
from core.admin import SafeModelAdmin
from referral.admin import ReferralAdminInline
from .forms import UserChangeForm, UserCreationForm
from .models import Profile, Company, Group

@ -1,13 +1,9 @@
import logging
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Div, Submit, HTML
from django import forms
from django.conf import settings
from django.contrib.auth import get_user_model, password_validation
from django.urls import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django_email_blacklist import DisposableEmailChecker
from registration.forms import RegistrationFormUniqueEmail
from django.contrib.auth.forms import (
AuthenticationForm as AuthenticationFormBase,
PasswordResetForm as PasswordResetFormBase,
@ -16,6 +12,10 @@ from django.contrib.auth.forms import (
UserCreationForm as UserCreationFormBase
)
from django.contrib.auth.forms import UsernameField
from django.urls import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django_email_blacklist import DisposableEmailChecker
from registration.forms import RegistrationFormUniqueEmail
from snowpenguin.django.recaptcha2.fields import ReCaptchaField
from snowpenguin.django.recaptcha2.widgets import ReCaptchaWidget

@ -6,9 +6,8 @@ from django.core.validators import RegexValidator
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from django.utils.timezone import now as datetime_now
from django.utils.translation import ugettext_lazy as _
from registration.signals import user_activated
from core.models import (
@ -18,8 +17,6 @@ from core.models import (
)
# Create your models here.
class UserManager(ActualOnlyManager, BaseUserManager):
def create_superuser(self, email, password):
user = self.model(

@ -2,6 +2,7 @@ from django.template import Library
register = Library()
@register.simple_tag(name='get')
def get_by_key(dict, key):
return getattr(dict,key)
return getattr(dict, key)

@ -1,6 +1,6 @@
from django.urls import re_path
from . import views
from . import views
urlpatterns = [
re_path(r'^login/$', views.LoginView.as_view(), name='login'),
@ -9,6 +9,7 @@ urlpatterns = [
re_path(r'^register/done/$', views.RegistrationDoneView.as_view(), name='register_done'),
re_path(r'^password/reset/$', views.ResetPasswordView.as_view(), name='reset_password'),
re_path(r'^password/reset/done/$', views.ResetPasswordDoneView.as_view(), name='reset_password_done'),
re_path(r'^password/reset/change/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', views.ResetPasswordConfirmView.as_view(), name='reset_password_change'),
re_path(r'^password/reset/change/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
views.ResetPasswordConfirmView.as_view(), name='reset_password_change'),
re_path(r'^password/reset/complete/$', views.ResetPasswordCompleteView.as_view(), name='reset_password_complete')
]

@ -1,6 +1,6 @@
import logging
from django.conf import settings
from django.contrib.auth.forms import SetPasswordForm
from django.contrib.auth.views import (
LoginView as LoginViewBase,
LogoutView,
@ -9,17 +9,15 @@ from django.contrib.auth.views import (
PasswordResetConfirmView as PasswordResetConfirmViewBase,
PasswordResetCompleteView as PasswordResetCompleteViewBase,
)
from django.shortcuts import redirect, resolve_url
from django.urls import reverse_lazy
from django.utils.http import is_safe_url, urlencode
from django.utils.translation import ugettext_lazy as _
from django.views.generic import TemplateView
from registration.backends.default.views import (
RegistrationView as RegistrationViewBase,
ResendActivationView as ResendActivationViewBase
)
from django.contrib.messages.views import SuccessMessageMixin
from django.shortcuts import redirect, resolve_url
from django.urls import reverse_lazy
from django.utils.http import is_safe_url, urlencode
from django.utils.translation import ugettext_lazy as _
from core.views import ProtectedTemplateView
from .forms import (

@ -1,14 +1,11 @@
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from ckeditor_uploader.widgets import CKEditorUploadingWidget
from pinax.blog.admin import (
PostAdmin as BasePostAdmin,
SectionAdmin as BaseSectionAdmin,
PostImageSet as BasePostImageSet
)
from pinax.blog.models import (
Post as PinaxPost,
Section as PinaxSection,
@ -60,7 +57,6 @@ class PostImageSet(ImageSet):
verbose_name_plural = _('Изображения')
admin.site.unregister(BasePostImageSet)
admin.site.register(

@ -1,6 +1,5 @@
from django.forms import forms
from django.utils.translation import ugettext_lazy as _
from pinax.blog.forms import AdminPostForm as BaseAdminPostForm
from blog_ext.models import Post

@ -1,11 +1,8 @@
import uuid
import pytz
from django.conf import settings
from django.db import models
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
# Create your models here.
from pinax.blog.models import (
Post as BasePost,
@ -14,9 +11,7 @@ from pinax.blog.models import (
Section as BaseSection
)
from pinax.images.models import (
ImageSet as BaseImageSet,
Image as BaseImage,
image_upload_to)
ImageSet as BaseImageSet)
from core.models import AbstractStatusModel, AbstractDateTimeModel

@ -1,6 +1,6 @@
from django.urls import re_path
from . import views
from . import views
urlpatterns = [
re_path(r"^$", views.BlogIndexView.as_view(), name="blog"),

@ -5,6 +5,7 @@ from pinax.blog.views import (
SecretKeyPostDetailView as BaseSecretKeyPostDetailView,
SlugUniquePostDetailView as BaseSlugUniquePostDetailView)
class SlugUniquePostDetailView(BaseSlugUniquePostDetailView):
pass

@ -1,4 +1,3 @@
from django.conf import settings
from django.core.paginator import Paginator
from django.utils.translation import ugettext_lazy as _
@ -11,13 +10,13 @@ class IndexTemplateView(ProtectedTemplateView):
template_name = 'cabinet/index.html'
title = _('Личный кабинет')
def get_ref_link(self,user):
def get_ref_link(self, user):
return "{path}?ref={ref_link}".format(**{
'path': user.referral.url,
'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()
paginator = Paginator(
object_list=bought_item_queryset,
@ -26,14 +25,14 @@ class IndexTemplateView(ProtectedTemplateView):
the_page = 1
return paginator.page(the_page)
def get_full_name(self,user):
def get_full_name(self, user):
return '{last_name} {first_name} {patronymic}'.format(**{
'last_name': user.profile.last_name or "",
'first_name': user.profile.first_name or "",
'patronymic': user.profile.patronymic or ""
})
def get_user_points(self,user):
def get_user_points(self, user):
return user.referral.referralstats.points
def get_context_data(self, **kwargs):

@ -1,25 +1,23 @@
import csv
import datetime
import pytils
import weasyprint
from decimal import Decimal
import pytils
import weasyprint
from django.conf import settings
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from django.http import HttpResponse
from django.template.loader import render_to_string
from django.utils.translation import ugettext_lazy as _
from jet.admin import CompactInline
from jet.filters import DateRangeFilter
from rangefilter.filter import DateTimeRangeFilter
from core.admin import SafeModelAdmin
from core.models import Certificate
from eshop_project.settings.base import PAY_REQUISITES
from .models import (
Offer, SupplyType,
Currency, Buying,
Buying,
SupplyTarget,
Order, Discount,
Client)
@ -32,6 +30,7 @@ class ProductOfferInlineAdmin(CompactInline):
show_change_link = 1
max_num = 1
# Supply admins
@admin.register(SupplyType)
@ -49,7 +48,7 @@ class SupplyTargetAdmin(admin.ModelAdmin):
@admin.register(Discount)
class DiscountAdmin(admin.ModelAdmin):
list_display = ['code', 'valid_from', 'valid_to', 'value', 'active']
list_filter = ['valid_from', 'valid_to', 'active']
list_filter = ['valid_from', 'valid_to', 'active']
search_field = ['code']
@ -84,9 +83,10 @@ class BuyingAdmin(SafeModelAdmin):
data_row.append(value)
writer.writerow(data_row)
return response
export_buyings_to_csv.short_description = _('экспортировать CSV')
def print_order_in_pdf(self,buyings):
def print_order_in_pdf(self, buyings):
verb_price = pytils.numeral.in_words(round(buyings.total_price))
verb_cur = pytils.numeral.choose_plural(round(buyings.total_price), ("рубль", "рубля", "рублей"))
html = render_to_string('bootstrap/pdf/buyings.html', {
@ -96,17 +96,17 @@ class BuyingAdmin(SafeModelAdmin):
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'filename=order_{}.pdf'.format(buyings.id)
weasyprint.HTML(
string=rendered_html,
base_url=self.request.build_absolute_uri()
).write_pdf(
response,
stylesheets = [
stylesheets=[
weasyprint.CSS(settings.STATIC_ROOT + '/css/bootstrap.min.css')
]
)
return response
print_order_in_pdf.short_description = _('Распечатать заказ в pdf')
def mark_buyings_as_paid(self, request, queryset):
@ -118,8 +118,8 @@ class BuyingAdmin(SafeModelAdmin):
parent_profile.save()
buying.status = BUYING_STATUS_PAID
buying.save()
mark_buyings_as_paid.short_description = _('Отметить как оплаченные')
mark_buyings_as_paid.short_description = _('Отметить как оплаченные')
inlines = ()
list_display = ('user', 'offer', 'status', 'amount', 'total_price')
@ -133,11 +133,11 @@ class BuyingAdmin(SafeModelAdmin):
@admin.register(Order)
class OrderAdmin(SafeModelAdmin):
list_display = ('order_code', 'customer_user', 'customer_name', 'customer_email','phone')
list_display = ('order_code', 'customer_user', 'customer_name', 'customer_email', 'phone')
@admin.register(Client)
class ClientAdmin(SafeModelAdmin):
list_display = ('name','image','status',)
list_display = ('name', 'image', 'status',)
search_fields = ('name',)
list_filter = ('status',)

@ -2,5 +2,4 @@ from cart.utils import Cart
def cart_basket(request):
return {'cart': Cart(request) }
return {'cart': Cart(request)}

@ -1,25 +1,22 @@
import uuid
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Div, HTML, Hidden, Fieldset, Submit
from crispy_forms.layout import Layout, Field, Div, HTML, Submit
from django import forms
from django.conf import settings
from django.core.exceptions import ValidationError
from django.core.validators import MaxValueValidator, MinValueValidator
from django.forms import ALL_FIELDS, formset_factory
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
from cart.models import (
Buying, BUYING_STATUS_IN_CART, Offer, SupplyType, SupplyTarget, Discount, Order
Buying, Offer, SupplyType, SupplyTarget, Discount, Order
)
from cart.tasks import send_user_order_notification, send_admin_order_notification
from contact_us.mixins import RequestNotifiable
from core.forms import QueryFormBase
from core.models import City
from core.utils import parse_path
from django.utils.translation import ugettext_lazy as _
from products.models import Product
class CartAddInlineForm(forms.ModelForm):
@ -122,7 +119,7 @@ class CartCheckoutForm(RequestNotifiable, forms.ModelForm):
form_action = {'viewname': 'cart:confirm', 'kwargs': {}}
field_template = 'bootstrap/forms/cart_checkout.html'
city = forms.CharField(label=_('Город'),max_length=255)
city = forms.CharField(label=_('Город'), max_length=255)
def __init__(self, *args, **kwargs):
self.helper = FormHelper()

@ -1,24 +1,19 @@
import uuid
from decimal import Decimal
from autoslug import AutoSlugField
from autoslug import AutoSlugField
from django.contrib.auth import get_user_model
from django.core.validators import MinValueValidator, MaxValueValidator, RegexValidator
from django.db import models
from django.contrib.auth import get_user_model
from django.db.models import Avg
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import ugettext_lazy as _
from django.utils.timezone import now, timedelta
from django.utils.translation import ugettext_lazy as _
# Create your models here.
from core.models import (
AbstractStatusModel, AbstractDateTimeModel,
ActiveOnlyManager,
City, Currency)
from products.models import Product

@ -1,14 +1,15 @@
import celery
import weasyprint
import pytils
from io import BytesIO
import celery
import pytils
import weasyprint
from django.conf import settings
from django.template.loader import render_to_string, get_template
from django.core.mail import EmailMessage, EmailMultiAlternatives
from django.template.loader import render_to_string, get_template
from cart.models import Order
@celery.task()
def send_user_order_notification(context):
"""
@ -26,7 +27,7 @@ def send_user_order_notification(context):
# html = render_to_string('orders:AdminOrderPDF', args=[order_id])
html = render_to_string('cart/order_invoice.html', {**settings.PAY_REQUISITES, 'order': order,
'verb_cur': verb_cur, 'verb_price': verb_price})
'verb_cur': verb_cur, 'verb_price': verb_price})
rendered_html = html.encode(encoding="UTF-8")
out = BytesIO()
weasyprint.HTML(string=rendered_html).write_pdf(out,
@ -34,8 +35,8 @@ def send_user_order_notification(context):
weasyprint.CSS(settings.STATIC_ROOT + 'css/build.css')])
order_invoice_name = 'Order_' + order.order_code
weasyprint.HTML(string=rendered_html, base_url=context['site_url']).write_pdf(order_invoice_name,
stylesheets=[weasyprint.CSS(
settings.STATIC_ROOT + '/css/build.css')])
stylesheets=[weasyprint.CSS(
settings.STATIC_ROOT + '/css/build.css')])
mail_send.attach('order_{}.pdf'.format(order.id), out.getvalue(), 'application/pdf')
mail_send.send()
return mail_send

@ -1,12 +1,13 @@
from django import template
from django.template import loader, Node, Variable
from django.utils.encoding import smart_str, smart_bytes
from django.template.defaulttags import url
from django.template import Node, Variable
from django.template import VariableDoesNotExist
from django.template.defaulttags import url
from django.utils.encoding import smart_bytes
from mptt.templatetags.mptt_tags import recursetree
register = template.Library()
@register.tag
def breadcrumb(parser, token):
"""
@ -40,7 +41,7 @@ def breadcrumb_url(parser, token):
"""
bits = token.split_contents()
if len(bits)==2:
if len(bits) == 2:
return breadcrumb(parser, token)
# Extract our extra title parameter
@ -51,21 +52,23 @@ def breadcrumb_url(parser, token):
return UrlBreadcrumbNode(title, url_node)
@register.tag
def breadcrumb_mptt_url(parser, token):
return recursetree(parser, token)
class BreadcrumbNode(Node):
def __init__(self, vars):
"""
First var is title, second var is url context variable
"""
self.vars = map(Variable,vars)
self.vars = map(Variable, vars)
def render(self, context):
title = self.vars[0].var
if title.find("'")==-1 and title.find('"')==-1:
if title.find("'") == -1 and title.find('"') == -1:
try:
val = self.vars[0]
title = val.resolve(context)
@ -73,12 +76,12 @@ class BreadcrumbNode(Node):
title = ''
else:
title=title.strip("'").strip('"')
title=smart_bytes(title)
title = title.strip("'").strip('"')
title = smart_bytes(title)
url = None
if len(self.vars)>1:
if len(self.vars) > 1:
val = self.vars[1]
try:
url = val.resolve(context)
@ -97,15 +100,15 @@ class UrlBreadcrumbNode(Node):
def render(self, context):
title = self.title.var
if title.find("'")==-1 and title.find('"')==-1:
if title.find("'") == -1 and title.find('"') == -1:
try:
val = self.title
title = val.resolve(context)
except:
title = ''
else:
title=title.strip("'").strip('"')
title=smart_bytes(title)
title = title.strip("'").strip('"')
title = smart_bytes(title)
url = self.url_node.render(context)
return create_crumb(title, url)

@ -1,11 +1,11 @@
import logging
from django.core.mail import EmailMultiAlternatives
from django.template import Context
from django.template.loader import get_template
logger = logging.Logger(__name__)
class RequestNotifiable(object):
MAIL_CATEGORY = 'Request'
@ -34,7 +34,7 @@ class RequestNotifiable(object):
context['from_email'],
context['recipients']
)
email.attach_alternative(body.render(context['email']),'text/html')
email.attach_alternative(body.render(context['email']), 'text/html')
try:
email.send()
except Exception as e:

@ -1,12 +1,8 @@
import os
from django.conf import settings
from django.contrib.auth import get_user_model
from django.core.validators import RegexValidator
from django.db import models
from django.utils.translation import ugettext_lazy as _
# Create your models here.
from core.models import AbstractStatusModel, STATUS_DELETED
# --------------------- REQUEST STATUS LIST --------------------

@ -2,9 +2,9 @@ import logging
from django.contrib import messages
from django.contrib.messages.views import SuccessMessageMixin
from django.http import HttpResponseRedirect, HttpResponseBadRequest, Http404
from django.views.generic import FormView
from django.http import HttpResponseRedirect, Http404
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
from .forms import ContactUsForm
@ -26,18 +26,18 @@ class ContactUsFormView(SuccessMessageMixin, FormView):
form.send_email(self.request)
except Exception as e:
self.form_invalid(form=form)
messages.add_message(self.request,messages.SUCCESS,self.success_message,extra_tags='contact_us_form_message')
messages.add_message(self.request, messages.SUCCESS, self.success_message, extra_tags='contact_us_form_message')
return HttpResponseRedirect(self.next)
def form_invalid(self, form):
context = self.get_context_data()
if len(form.errors) > 0:
context['form_show_errors'] = True
messages.add_message(self.request,messages.ERROR,self.error_message,extra_tags='contact_us_form_message')
messages.add_message(self.request, messages.ERROR, self.error_message, extra_tags='contact_us_form_message')
return HttpResponseRedirect(self.next)
def dispatch(self, request, *args, **kwargs):
if request.POST.get('next',None) is None:
if request.POST.get('next', None) is None:
raise Http404()
else:
self.next = request.POST.get('next')

@ -44,7 +44,9 @@ class CKFlatPageAdmin(FlatPageAdmin):
def formfield_for_dbfield(self, db_field, **kwargs):
if 'content' in db_field.name:
kwargs['widget'] = CKEditorUploadingWidget(config_name='awesome_ckeditor',attrs={'class':'mt mt-field-content-%s' % db_field.name.replace('content', '')})
kwargs['widget'] = CKEditorUploadingWidget(config_name='awesome_ckeditor', attrs={
'class': 'mt mt-field-content-%s' % db_field.name.replace('content', '')})
return super(CKFlatPageAdmin, self).formfield_for_dbfield(db_field, **kwargs)
admin.site.unregister(FlatPage)

@ -1,8 +1,11 @@
from django.shortcuts import render
from .forms import SubscriberForm
from django.contrib import auth
from django.shortcuts import render
from products.models import *
from .forms import SubscriberForm
# TODO What's going on here?
def landing(request):
form = SubscriberForm(request.POST or None)

@ -1,6 +1,7 @@
from django.urls import re_path
from django.urls import path
from . import views
urlpatterns = [
re_path(r'', views.IndexView.as_view(), name='index')
path('', views.IndexView.as_view(), name='index')
]

@ -1,7 +1,4 @@
from django.contrib import admin
from django.forms import ALL_FIELDS
from django.utils.translation import ugettext_lazy as _
from import_export import resources, fields, widgets
from import_export.admin import ImportExportModelAdmin
from jet.admin import CompactInline
@ -9,12 +6,12 @@ from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter
from cart.admin import ProductOfferInlineAdmin
from core.admin import SafeModelAdmin
from .forms import ProductAdminForm
from .models import (
Product, ProductCategory, ProductImage, Manufacturer
)
class CustomModelResource(resources.ModelResource):
def before_import_row(self, row, **kwargs):
"""
@ -103,7 +100,6 @@ class ProductResource(CustomModelResource):
default={},
widget=widgets.CharWidget())
class Meta:
model = Product
fields = ('id', 'name', 'description', 'producer', 'parent', 'is_active', 'attributes', 'discount_policy')

@ -41,7 +41,7 @@ def product_fitler_formset(request):
product_form_action = {'viewname': request.resolver_match.view_name, 'kwargs': request.resolver_match.kwargs}
return {
'left_product_filter_formset':{
'left_product_filter_formset': {
'manufacturer': ProductManufacturerFilterForm(
product_form_action=product_form_action,
query_params=request.GET

@ -1,20 +1,10 @@
from autoslug import AutoSlugField
from django.contrib.auth import get_user_model
from django.db import models
from django.db.models import Q
from django.urls import reverse_lazy, reverse
from django.contrib.postgres.fields import HStoreField
from django.utils.translation import ugettext_lazy as _
from mptt.models import TreeForeignKey
from mptt import (
models as mptt_models,
managers as mptt_managers,
register
)
from mptt.models import MPTTModel, TreeForeignKey
from autoslug import AutoSlugField
from core.models import AbstractStatusModel, ActualOnlyManager, AbstractDateTimeModel, ActiveOnlyManager, \
AbstractStatusMPTTModel
from core.models import AbstractStatusModel, AbstractDateTimeModel, AbstractStatusMPTTModel
# ---------------------------------- COMMON PRODUCT STATUS ---------------------------------------#
# Create your models here.

@ -13,23 +13,23 @@ Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.urls import re_path
import mptt_urls
from django.urls import re_path
from . import views
from .models import ProductCategory, Product
urlpatterns = [
re_path(r'^list/$', views.ProductListView.as_view(), name='product_list'),
re_path(
r'^list/(?P<path>.*)',
mptt_urls.view(model=ProductCategory, view=views.ProductListView.as_view(),slug_field='slug'),
mptt_urls.view(model=ProductCategory, view=views.ProductListView.as_view(), slug_field='slug'),
name='product_list'
),
re_path(
r'^item/(?P<path>.*)',
mptt_urls.view(model=Product, view=views.ProductDetailView.as_view(),slug_field='slug'),
mptt_urls.view(model=Product, view=views.ProductDetailView.as_view(), slug_field='slug'),
name='product_details'
),
@ -38,7 +38,6 @@ urlpatterns = [
# url(r'^autocomplete/$', autocomplete),
# url(r'^find/$', FacetedSearchView.as_view(), name='haystack_search'),
# url(r'^products/(?P<product_slug>[-\w]+)/$', products, name='Product'),
# url(r'^(?P<producer_slug>[-\w]+)/(?P<path>.*)',
# mptt_urls.view(model=ProductCategory, view=categorieslist, slug_field='slug'),

@ -3,13 +3,12 @@ from django.contrib.admin import register
from django.urls import reverse_lazy
from django.utils.html import format_html
from django.utils.translation import ugettext_lazy as _
# Register your models here.
from rangefilter.filter import DateRangeFilter, DateTimeRangeFilter
from core.admin import SafeModelAdmin
from .models import Referral, ReferralStats
from .forms import ReferralAdminForm, ReferralStatsAdminForm
from .models import Referral, ReferralStats
class ReferralAdminInline(admin.TabularInline):
@ -23,6 +22,7 @@ class ReferralAdminInline(admin.TabularInline):
def has_delete_permission(self, request, obj=None):
return False
@register(Referral)
class ReferralAdmin(SafeModelAdmin):
def has_add_permission(self, request):

@ -1,7 +1,3 @@
from django.http import HttpResponseRedirect
from django.urls import reverse
from core.models import STATUS_ACTIVE
from .models import Referral
from .utils import set_cookie, pop_cookie, get_cookie
@ -12,18 +8,18 @@ class ReferralMiddleware:
def __call__(self, request):
response = None
if hasattr(self,'process_request'):
if hasattr(self, 'process_request'):
response = self.process_request(request)
if not response:
response = self.get_response(request)
if hasattr(self,'process_response'):
response = self.process_response(request,response)
if hasattr(self, 'process_response'):
response = self.process_response(request, response)
return response
def process_request(self,request):
def process_request(self, request):
pass
def process_response(self,request,response):
def process_response(self, request, response):
if not request.user.is_authenticated:
code = request.GET.get('ref')
cookie_code = get_cookie(request.COOKIES, 'referral')
@ -37,4 +33,3 @@ class ReferralMiddleware:
elif request.user.is_authenticated:
pop_cookie(response, 'referral')
return response

@ -1,17 +1,14 @@
import logging
import string
import random
import string
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.sites.models import Site
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.urls import reverse_lazy
from django.utils.translation import ugettext_lazy as _
# Create your models here.
from registration.signals import user_activated

@ -1,6 +1,3 @@
from django.conf.urls import url
from django.urls import re_path
urlpatterns = [
# re_path()
]

@ -1,13 +1,17 @@
import datetime
def set_cookie(response, key, value, day_expire = 1):
def set_cookie(response, key, value, day_expire=1):
max_age = day_expire * 24 * 60 * 60
expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
response.set_cookie(key=key,value=value,max_age=max_age,expires=expires) # @TODO: Connect cookie to domain
expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age),
"%a, %d-%b-%Y %H:%M:%S GMT")
response.set_cookie(key=key, value=value, max_age=max_age, expires=expires) # @TODO: Connect cookie to domain
def get_cookie(cookies, key):
return cookies.get(key) if cookies.get(key) else None
def pop_cookie(response, key):
cookie = get_cookie(response.cookies, key)
if cookie:

Loading…
Cancel
Save