prod
Dmitriy Shesterkin 9 years ago
parent f2d01e4229
commit 877ab9b8bf
  1. 2
      conf/env.local
  2. 1
      conf/env.stage
  3. 2
      requirements/base.txt
  4. 11
      src/callback/models.py
  5. 2
      src/customer/forms.py
  6. 35
      src/customer/models.py
  7. 18
      src/customer/views/documents.py
  8. 2
      src/dokumentor/settings/testing.py

@ -5,7 +5,7 @@ DJANGO_SECRET='CHANGE_ME_IN_PRODUCTION'
SSL=False SSL=False
DJANGO_DB='postgres://dokumentor:dokumentor@localhost:5432/dokumentor' DJANGO_DB='postgres://dokumentor:dokumentor@localhost:5432/dokumentor'
DJANGO_DB_sqlite3='sqlite:////Users/mitri4/Projects/dokumentor/db.sqlite3' DJANGO_TEST_DB='sqlite:////Users/mitri4/Projects/dokumentor/test_db.sqlite3'
DJANGO_FROM_EMAIL='root@localhost' DJANGO_FROM_EMAIL='root@localhost'
DJANGO_EMAIL_HOST='' DJANGO_EMAIL_HOST=''

@ -5,6 +5,7 @@ SSL=False
DJANGO_SECRET='ewfrevwavrvq3tg4wvf3tvw4ug97hf3t48w7hfy3rf32' DJANGO_SECRET='ewfrevwavrvq3tg4wvf3tvw4ug97hf3t48w7hfy3rf32'
DJANGO_DB='postgres://dokumentor:dokumentor@db:5432/dokumentor' DJANGO_DB='postgres://dokumentor:dokumentor@db:5432/dokumentor'
DJANGO_TEST_DB='sqlite:////opt/app/test_db.sqlite3'
DJANGO_FROM_EMAIL='Открытые технологии <no-reply@o-tech.io>' DJANGO_FROM_EMAIL='Открытые технологии <no-reply@o-tech.io>'
DJANGO_EMAIL_HOST='smtp.yandex.ru' DJANGO_EMAIL_HOST='smtp.yandex.ru'

@ -11,7 +11,7 @@ configparser==3.5.0
django-appconf==1.0.1 django-appconf==1.0.1
django-autocomplete-light==2.1.1 django-autocomplete-light==2.1.1
django-classy-tags==0.8.0 django-classy-tags==0.8.0
django-cms==3.4.3 django-cms==3.4.4
django-filer==1.2.7 django-filer==1.2.7
django-filter==0.11.0 django-filter==0.11.0
django-formtools==1.0 django-formtools==1.0

@ -43,14 +43,5 @@ class ReqAvail(models.Model):
verbose_name_plural = u'Обратная связь' verbose_name_plural = u'Обратная связь'
ordering = ['-created_at'] ordering = ['-created_at']
def __unicode__(self):
return u'Сообщение %s от %s' % (
self.name[:20],
self.created_at.strftime("%d.%m.%Y %H:%M"),
)
def __str__(self): def __str__(self):
return u'Сообщение %s от %s' % ( return f'Сообщение {self.name[:20]} от {self.created_at.strftime("%d.%m.%Y %H:%M")}'
self.name[:20],
self.created_at.strftime("%d.%m.%Y %H:%M"),
)

@ -393,7 +393,7 @@ class UserProfileFiltersForm(MyBaseModelForm):
f_acc.empty_label = None f_acc.empty_label = None
# исправить метку # исправить метку
f_acc.label_from_instance = lambda obj: mark_safe( f_acc.label_from_instance = lambda obj: mark_safe(
force_text('%s<br /><span class="name">%s</span>' % (obj.account, obj.name,))) force_text(f'{obj.account}<br /><span class="name">{obj.name}</span>'))
# TODO: refactor # TODO: refactor
# заблокировать чекбоксы, если: не заполнены определенные поля # заблокировать чекбоксы, если: не заполнены определенные поля

@ -525,20 +525,17 @@ class UserProfileFilters(models.Model):
show_full_name = models.BooleanField(u'Полное название организации', default=True) show_full_name = models.BooleanField(u'Полное название организации', default=True)
show_kpp = models.BooleanField(u'КПП', default=True) show_kpp = models.BooleanField(u'КПП', default=True)
show_org_boss_title_and_fio = models.BooleanField( show_org_boss_title_and_fio = models.BooleanField(
u'Руководитель (Должность, ФИО)', default=True) 'Руководитель (Должность, ФИО)', default=True)
show_na_osnovanii = models.BooleanField(u'Действует на основании', default=True) show_na_osnovanii = models.BooleanField(u'Действует на основании', default=True)
objects = managers.UserProfileFiltersManager() objects = managers.UserProfileFiltersManager()
class Meta: class Meta:
verbose_name = u'Фильтры реквизитов' verbose_name = 'Фильтры реквизитов'
verbose_name_plural = u'Фильтры реквизитов' verbose_name_plural = 'Фильтры реквизитов'
def __unicode__(self): # TODO fix name
return u'{}'.format(self.company.email)
def __str__(self): # TODO fix name def __str__(self): # TODO fix name
return u'{}'.format(self.company.email) return f'{self.company.email}'
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
# всегда включены # всегда включены
@ -569,15 +566,6 @@ class License(models.Model):
super(License, self).__init__(*args, **kwargs) super(License, self).__init__(*args, **kwargs)
self.__prev_date = self.paid_date self.__prev_date = self.paid_date
def __unicode__(self):
return u'%s - %s %s (%d %s)' % (
self.company.get_company_name(),
self.term,
numeral.choose_plural(self.term, u"месяц, месяца, месяцев"),
self.pay_sum,
numeral.choose_plural(self.pay_sum, u"рубль, рубля, рублей"),
)
def __str__(self): def __str__(self):
return u'%s - %s %s (%d %s)' % ( return u'%s - %s %s (%d %s)' % (
self.company.get_company_name(), self.company.get_company_name(),
@ -652,24 +640,17 @@ class License(models.Model):
left.days, left.days,
numeral.choose_plural(left.days, u"день, дня, дней"), numeral.choose_plural(left.days, u"день, дня, дней"),
) )
return u'Лицензия активирована: осталось %s' % left_str return f'Лицензия активирована: осталось {left_str}'
elif self.status == 3: elif self.status == 3:
return u'Время истекло' return 'Время истекло'
else: else:
return None return None
class LicensePrice(models.Model): class LicensePrice(models.Model):
term = models.IntegerField(verbose_name=u'срок лицензии', term = models.IntegerField(verbose_name='срок лицензии',
choices=consts.TERMS) choices=consts.TERMS)
price = models.IntegerField(verbose_name=u'сумма оплаты') price = models.IntegerField(verbose_name='сумма оплаты')
def __unicode__(self):
return u'%s %s (%d %s)' % (self.term,
numeral.choose_plural(self.term, u"месяц, месяца, месяцев"),
self.price,
numeral.choose_plural(self.price, u"рубль, рубля, рублей"),
)
def __str__(self): def __str__(self):
return u'%s %s (%d %s)' % (self.term, return u'%s %s (%d %s)' % (self.term,

@ -28,15 +28,15 @@ def get_doc(request, order_num=None):
data = request.user.profile data = request.user.profile
if pm == 0: if pm == 0:
tmp_name = 'bill.xls' tmp_name = 'bill.xls'
file_name = "Invoice No.%s.xls" % (order_num,) file_name = "Invoice No.{order_num}.xls"
elif pm == 2: elif pm == 2:
tmp_name = '4pd.xls' tmp_name = '4pd.xls'
file_name = "Kvitanciya na oplatu zakaza No.%s.xls" % (order_num,) file_name = f"Kvitanciya na oplatu zakaza No.{order_num}.xls"
else: else:
raise Http404() raise Http404()
response = HttpResponse(content_type="application/vnd.ms-excel") response = HttpResponse(content_type="application/vnd.ms-excel")
response['Content-Disposition'] = 'attachment; filename=%s' % file_name response['Content-Disposition'] = f'attachment; filename={file_name}'
rb = open_workbook(os.path.join(XLS_ROOT, tmp_name), on_demand=True, formatting_info=True) rb = open_workbook(os.path.join(XLS_ROOT, tmp_name), on_demand=True, formatting_info=True)
wb = copy(rb) wb = copy(rb)
@ -63,10 +63,10 @@ def get_doc(request, order_num=None):
) )
style4.num_format_str = "#,##0.00" style4.num_format_str = "#,##0.00"
ws.write(11, 0, u"СЧЕТ № %s от %s" % (order_num, license.order_date.strftime('%d.%m.%Y')), ws.write(11, 0, f"СЧЕТ № {order_num} от {license.order_date.strftime('%d.%m.%Y')}",
style0_center) style0_center)
ws.write(13, 0, u"Покупатель: %s" % data.name, style1) ws.write(13, 0, f"Покупатель: {data.name}", style1)
ws.write(16, 2, u"Лицензия Dokumentor.ru на %s" % (license.get_term()), style3) ws.write(16, 2, f"Лицензия Dokumentor.ru на {license.get_term()}", style3)
style3.num_format_str = "#,##0.00" style3.num_format_str = "#,##0.00"
@ -74,8 +74,8 @@ def get_doc(request, order_num=None):
ws.write(16, 44, license.pay_sum, style3) ws.write(16, 44, license.pay_sum, style3)
ws.write(17, 44, license.pay_sum, style4) ws.write(17, 44, license.pay_sum, style4)
ws.write(19, 44, license.pay_sum, style4) ws.write(19, 44, license.pay_sum, style4)
ws.write(21, 0, u"Всего наименование 1, на сумму %s,00 руб." % license.pay_sum, style1) ws.write(21, 0, f"Всего наименование 1, на сумму {license.pay_sum},00 руб.", style1)
ws.write(23, 0, u"%s." % rubles(license.pay_sum).capitalize(), style2) ws.write(23, 0, f"{rubles(license.pay_sum).capitalize()}.", style2)
ws.insert_bitmap(os.path.join(XLS_ROOT, 'stamp.bmp'), 26, 12, y=3, scale_y=1.1) ws.insert_bitmap(os.path.join(XLS_ROOT, 'stamp.bmp'), 26, 12, y=3, scale_y=1.1)
@ -90,7 +90,7 @@ def get_doc(request, order_num=None):
) )
# заполняем оригинал # заполняем оригинал
ws.write(11, 4, u"Лицензия Dokumentor.ru на %s" % (license.get_term()), style1) ws.write(11, 4, f"Лицензия Dokumentor.ru на {license.get_term()}", style1)
ws.write(13, 13, data.get_boss_fio(), style0) ws.write(13, 13, data.get_boss_fio(), style0)
ws.write(14, 13, re.sub("^\s+|\n|\r|\s+$", ' ', data.address), style0) ws.write(14, 13, re.sub("^\s+|\n|\r|\s+$", ' ', data.address), style0)
ws.write(15, 11, license.pay_sum, style1) ws.write(15, 11, license.pay_sum, style1)

@ -13,7 +13,7 @@ EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher', ) PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher', )
DATABASES = { DATABASES = {
'default': dj_database_url.parse(e.get('TEST_DB')), 'default': dj_database_url.parse(e.get('DJANGO_TEST_DB')),
} }

Loading…
Cancel
Save