diff --git a/project/commons/paginator.py b/project/commons/paginator.py index 6213c2b..3d02a07 100644 --- a/project/commons/paginator.py +++ b/project/commons/paginator.py @@ -5,7 +5,7 @@ from django.conf import settings from django.core.paginator import Paginator, InvalidPage, EmptyPage from django import forms -from utils import safe_int +from commons.utils import safe_int # допустимые значения `per_page` diff --git a/project/commons/pdf_tools.py b/project/commons/pdf_tools.py index da03829..b269a67 100644 --- a/project/commons/pdf_tools.py +++ b/project/commons/pdf_tools.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- -import cStringIO as StringIO +from io import StringIO -import ho.pisa as pisa +from xhtml2pdf import pisa from django.template.loader import render_to_string from django.template import RequestContext diff --git a/project/commons/xls/__init__.py b/project/commons/xls/__init__.py index ae64160..f454af5 100644 --- a/project/commons/xls/__init__.py +++ b/project/commons/xls/__init__.py @@ -1,3 +1,3 @@ -from useful_tools import * -from get_xlwt_style_list import * -from xls_to_response import * +from commons.xls.useful_tools import * +from commons.xls.get_xlwt_style_list import * +from commons.xls.xls_to_response import * diff --git a/project/customer/forms.py b/project/customer/forms.py index 6566c8e..6af2bdb 100644 --- a/project/customer/forms.py +++ b/project/customer/forms.py @@ -1,11 +1,11 @@ # -*- coding: utf-8 -*- from django import forms -from django.utils.encoding import force_unicode +from django.utils.encoding import force_text from django.utils.safestring import mark_safe from django.conf import settings from yandex_money.forms import PaymentForm -from project.commons.forms import MyBaseModelForm, set_field_error +from commons.forms import MyBaseModelForm, set_field_error from customer import consts, models @@ -362,7 +362,7 @@ class UserProfileFiltersForm(MyBaseModelForm): f_acc.queryset = accounts f_acc.empty_label = None f_acc.label_from_instance = lambda obj: mark_safe( - force_unicode('%s
%s' % (obj.account, obj.name,))) # исправить метку + force_text('%s
%s' % (obj.account, obj.name,))) # исправить метку # заблокировать чекбоксы, если: не заполнены определенные поля в профиле или нет расчетных счетов if profile: diff --git a/project/customer/views/profile.py b/project/customer/views/profile.py index cf49ad1..9ba95a1 100644 --- a/project/customer/views/profile.py +++ b/project/customer/views/profile.py @@ -133,7 +133,7 @@ def tmp_upload(request): tmp_dir = tempfile.mkdtemp('img_tmp', settings.MEDIA_ROOT + '/cache/imgs/') - os.chmod(tmp_dir, 0755) + os.chmod(tmp_dir, 755) open(tmp_dir + '/' + file_.name, "w").write(file_.read()) tmp_url_partial = os.path.basename(tmp_dir) + '/' + file_.name thumbnailer = get_thumbnailer(tmp_dir + '/' + file_.name) diff --git a/project/docs/admin.py b/project/docs/admin.py index 92add40..e2a738b 100644 --- a/project/docs/admin.py +++ b/project/docs/admin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin -import models +from docs import models #class InvoiceItemInline(admin.TabularInline): diff --git a/project/docs/as_xls/render_to_xls.py b/project/docs/as_xls/render_to_xls.py index d655a75..4fa1b85 100644 --- a/project/docs/as_xls/render_to_xls.py +++ b/project/docs/as_xls/render_to_xls.py @@ -2,7 +2,10 @@ import os import re import math -from StringIO import StringIO +try: + from StringIO import StringIO +except ImportError: + from io import StringIO import xlrd import xlwt @@ -11,7 +14,7 @@ from django.conf import settings from django.template import Template, RequestContext from django.template.base import BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END -from project.commons.xls import (get_xlwt_style_list, copy_cells, width_cols, horz_page_break, mm_to_twips, +from commons.xls import (get_xlwt_style_list, copy_cells, width_cols, horz_page_break, mm_to_twips, sum_src_heights, sum_dst_heights) diff --git a/project/docs/autocomplete_light_registry.py b/project/docs/autocomplete_light_registry.py index bbf43d3..c15768e 100644 --- a/project/docs/autocomplete_light_registry.py +++ b/project/docs/autocomplete_light_registry.py @@ -2,7 +2,7 @@ import autocomplete_light from django.db.models import Q -from models import (Country, Currency, Measure) +from docs.models import (Country, Currency, Measure) from customer.models import Client diff --git a/project/docs/filters.py b/project/docs/filters.py index 4114cf2..8ae1405 100644 --- a/project/docs/filters.py +++ b/project/docs/filters.py @@ -16,14 +16,14 @@ class CustomDateRangeFilter(django_filters.DateRangeFilter): self.options = options except KeyError: pass - kwargs['choices'] = [(key, value[0]) for key, value in self.options.iteritems()] + kwargs['choices'] = [(key, value[0]) for key, value in self.options.items()] super(CustomDateRangeFilter, self).__init__(*args, **kwargs) class CustomChoiceFilter(django_filters.ChoiceFilter): def __init__(self, *args, **kwargs): self.options = kwargs.pop('options') # обязательный параметр! - kwargs['choices'] = [(key, value[0]) for key, value in self.options.iteritems()] + kwargs['choices'] = [(key, value[0]) for key, value in self.options.items()] super(CustomChoiceFilter, self).__init__(*args, **kwargs) def filter(self, qs, value): @@ -151,7 +151,7 @@ class BaseDocsFilterSet(django_filters.FilterSet): self.filters['invoice'].extra['queryset'] = Invoice.objects.get_all(self.request.user.profile) # сбросить у полей формы атрибут help_text - for field in self.form.fields.itervalues(): + for field in self.form.fields.values(): field.help_text = None diff --git a/project/docs/models/invoice.py b/project/docs/models/invoice.py index 09dd484..4960814 100644 --- a/project/docs/models/invoice.py +++ b/project/docs/models/invoice.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- from django.db import models -from base_models import BaseInvoiceModel, BaseItemInvoiceModel -from linked_docs_mixin import LinkedDocsMixin +from docs.models.base_models import BaseInvoiceModel, BaseItemInvoiceModel +from docs.models.linked_docs_mixin import LinkedDocsMixin from docs import consts diff --git a/project/docs/views/base_views.py b/project/docs/views/base_views.py index a32dd0d..d8db713 100644 --- a/project/docs/views/base_views.py +++ b/project/docs/views/base_views.py @@ -369,7 +369,7 @@ class BaseViews(object): c1 = time() pdf = render_pdf_to_string(self.request, self.PDF_TEMPLATE, params) if DEBUG: - print '%s generation time (seconds): %s' % (self.PDF_TEMPLATE, time()-c1,) + print ('%s generation time (seconds): %s' % (self.PDF_TEMPLATE, time()-c1,)) return pdf def get_xls(self, *args, **kwargs): @@ -387,7 +387,7 @@ class BaseViews(object): c1 = time() xls = render_xls_to_string(self.request, self.XLS_TEMPLATE, params) if DEBUG: - print '%s generation time (seconds): %s' % (self.XLS_TEMPLATE, time()-c1,) + print ('%s generation time (seconds): %s' % (self.XLS_TEMPLATE, time()-c1,)) return xls def as_img(self, *args, **kwargs): @@ -402,7 +402,7 @@ class BaseViews(object): os.makedirs(tmp_media_dir) tmp_dir = tempfile.mkdtemp(dir=tmp_media_dir) - os.chmod(tmp_dir, 0755) + os.chmod(tmp_dir, 755) tmp_dirname = os.path.split(tmp_dir)[1] f = open(filename, 'w') @@ -813,7 +813,7 @@ class BaseItemsViews(BaseViews): c1 = time() pdf = render_pdf_to_string(self.request, self.PDF_TEMPLATE, params) if DEBUG: - print '%s generation time (seconds): %s' % (self.PDF_TEMPLATE, time()-c1,) + print ('%s generation time (seconds): %s' % (self.PDF_TEMPLATE, time()-c1,)) return pdf def get_xls(self, *args, **kwargs): @@ -832,5 +832,5 @@ class BaseItemsViews(BaseViews): c1 = time() xls = render_xls_to_string(self.request, self.XLS_TEMPLATE, params) if DEBUG: - print '%s generation time (seconds): %s' % (self.XLS_TEMPLATE, time()-c1,) + print ('%s generation time (seconds): %s' % (self.XLS_TEMPLATE, time()-c1,)) return xls diff --git a/project/myauth/admin.py b/project/myauth/admin.py index e4c4bf8..66005b3 100644 --- a/project/myauth/admin.py +++ b/project/myauth/admin.py @@ -3,8 +3,8 @@ from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.utils.translation import ugettext_lazy as _ -from models import DokUser -from forms import CustomUserChangeForm, CustomUserCreationForm +from myauth.models import DokUser +from myauth.forms import CustomUserChangeForm, CustomUserCreationForm class CustomUserAdmin(UserAdmin): diff --git a/project/myauth/forms.py b/project/myauth/forms.py index 261c5d6..7ac4570 100644 --- a/project/myauth/forms.py +++ b/project/myauth/forms.py @@ -6,10 +6,10 @@ from django.contrib.auth.forms import UserCreationForm, UserChangeForm from captcha.fields import CaptchaField -from project.commons.forms import set_field_error -from project.customer import consts as customer_consts +from commons.forms import set_field_error +from customer import consts as customer_consts -from models import DokUser +from myauth.models import DokUser PASSWORD_MIN_LEN = getattr(settings, 'PASSWORD_MIN_LEN ', 7) diff --git a/project/myauth/models.py b/project/myauth/models.py index 73401f3..ca5b5ec 100644 --- a/project/myauth/models.py +++ b/project/myauth/models.py @@ -8,11 +8,11 @@ from django.utils.translation import ugettext_lazy as _ from django.core.mail import send_mail from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin -import managers +from myauth import managers class DokUser(AbstractBaseUser, PermissionsMixin): - """(не)Самопальная модель пользователя - содрано у caktusgroup.com, + """(не)Самопальная модель пользователя - содрано у caktusgroup.com, также проблемы с добавлением юзера в админке решены при помощи stackoverflow, да хранит гугл имя его. """ diff --git a/project/myauth/urls.py b/project/myauth/urls.py index e91da65..7b747ab 100644 --- a/project/myauth/urls.py +++ b/project/myauth/urls.py @@ -2,7 +2,7 @@ from django.conf.urls import * from django.views.generic import TemplateView -import views +from myauth import views urlpatterns = patterns('', diff --git a/requirements-py3.txt b/requirements-py3.txt index 2b07132..ad550be 100644 --- a/requirements-py3.txt +++ b/requirements-py3.txt @@ -36,7 +36,7 @@ djangocms-teaser==0.0.1 djangocms-text-ckeditor==2.7.0 djangocms-video==0.0.1 easy-thumbnails==2.4.1 -flup==1.0.2 +flup==1.0.3.dev20161029 ghostscript==0.4.1 gnureadline==6.3.3 html5lib==0.999 @@ -54,11 +54,11 @@ psycopg2==2.6 pylint==1.6.5 pyparsing==2.2.0 pyPdf==1.13 -python-dateutil==2.2 +python-dateutil==2.6.0 python-memcached==1.58 -pytils==0.2.3 +pytils==0.3 pytz==2017.2 -reportlab==2.7 +reportlab==3.4.0 simplejson==3.3.1 six==1.7.3 sqlparse==0.2.3 @@ -66,6 +66,6 @@ Unidecode==0.4.17 vine==1.1.3 Werkzeug==0.12 wrapt==1.10.10 -xlrd==0.9.2 -xlutils==1.7.1 -xlwt==0.7.5 +xlrd==1.0.0 +xlutils==2.0.0 +xlwt==1.2.0