send file in letter

remotes/origin/pm_task_31703
Michail Bortnikov 9 years ago
parent ce7336d83a
commit 068d245393
  1. 12
      courses/models.py
  2. 6
      management/api.py
  3. 3
      management/letters.py
  4. 3
      management/mails.py
  5. 1
      service/models.py
  6. 13
      templates/mails/sent_order.html

@ -76,9 +76,12 @@ class Course(models.Model):
public = models.BooleanField(verbose_name=u'Опубликовать', default=False)
title = models.CharField(verbose_name=u"Заголовок", max_length=255)
description = RedactorField(verbose_name=u'Описание', blank=True)
description_file = models.FileField(verbose_name='Файл писания курса', black=True, null=True, upload_to='course',
help_text=u'Файл, который будет отправляться в письме со счетом')
image = models.ImageField(verbose_name=u'Изображение', upload_to='course', blank=True)
big_image = models.ImageField(verbose_name=u'Большое изображение', upload_to='course', blank=True)
big_mobile_image = models.ImageField(verbose_name=u'Под мобилку', upload_to='course', blank=True, null=True, help_text=u'Большая картинка для мобильной версии')
big_mobile_image = models.ImageField(verbose_name=u'Под мобилку', upload_to='course', blank=True, null=True,
help_text=u'Большая картинка для мобильной версии')
page = models.URLField(verbose_name=u'Страничка описания', blank=True, default='')
preview = models.CharField(verbose_name=u'Трэйл', blank=True, default='', max_length=255)
teachers = models.ManyToManyField(User, verbose_name=u'Преподаватели', related_name='course_teachers')
@ -90,7 +93,9 @@ class Course(models.Model):
buy_icon = models.ImageField(verbose_name=u'Картинка покупки', upload_to='course', blank=True, null=True)
must_build = models.BooleanField(verbose_name=u'На переформировку', default=False)
keywords = models.ManyToManyField(Tags, verbose_name=u'Ключевые слова', blank=True)
recommend = models.ManyToManyField('self', verbose_name=u'Связанные курсы', blank=True, help_text=u'Курсы, которые стоит порекомендовать вместе с этим')
recommend = models.ManyToManyField('self', verbose_name=u'Связанные курсы', blank=True,
help_text=u'Курсы, которые стоит порекомендовать вместе с этим')
def __str__(self):
return self.title
@ -157,6 +162,9 @@ class Course(models.Model):
# Получить описание курса
return self.description
def get_description_file(self):
return self.description_file
def get_skills(self):
# Получить скилы темы
result = []

@ -94,7 +94,10 @@ def new_bill(request, context):
service = Price.objects.get(id=request.POST['new_bill_checked_service'])
bill = Bill.objects.create(user=user,
service=service,
manager=request.user, price=request.POST['new_bill_cost'],
file=bill.service.course.get_description_file(),
manager=request.user.get_full_name(),
manager_phone=request.user.get_phone(),
price=request.POST['new_bill_cost'],
description=request.POST.get('new_bill_comment') if request.POST.get(
'new_bill_comment') else '')
sent_new_bill(bill)
@ -117,6 +120,7 @@ def new_bill(request, context):
return context
@api_decor(without_auth=False)
def sent_charge(request, context):
if request.user.in_role == 'S' or request.user.in_role == 'A':

@ -246,6 +246,9 @@ def sent_new_bill(bill):
'PRICE': bill.price,
'USER': bill.user.email,
'SERVICE': bill.get_name(),
'MANAGER': bill.manager_name,
'MANAGER_PHONE': bill.amanger_phone,
'FILE': bill.file,
'DOMAIN': DOMAIN,
'NAME': NAME
}

@ -12,6 +12,7 @@ def letter_decor():
text=data['text'],
_type=data['type'],
template=data['template'] if data.get('template') else '',
result=data['result'] if data.get('result') else None)
result=data['result'] if data.get('result') else None,
file=data['file'])
return _render_json
return wrap_response

@ -75,6 +75,7 @@ class MailBox(models.Model):
msg = EmailMessage(self.title, self.result, u'{1} <{0}>'.format(DEFAULT_FROM_EMAIL, NAME),
[self._to if not TESTING else TEST_EMAIL])
msg.content_subtype = "html"
msg.attach(u'Описание курса', file)
try:
msg.send()
except smtplib.SMTPDataError as e:

@ -146,7 +146,18 @@ html, body {background-image: none !important; background-color: transparent !im
<tbody><tr><td valign="top" style="padding: 0px;"><table cellpadding="0" cellspacing="0" width="100%">
<tbody><tr><td style="padding: 0px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top" style="padding-top: 20px; padding-right: 30px; padding-bottom: 5px; padding-left: 30px;"><table cellpadding="0" cellspacing="0" border="0" width="100%">
<tbody><tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;">{{ USER }}, вам выставлен счет для оплаты.</h1><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав заказа: </span>{{ SERVICE }}</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;"><span style="color:#808080;">Сумма для оплаты: </span>{{ PRICE }} руб.</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">Чтобы выбрать способ оплаты и оплатить данный счет, воспользуйтесь ссылкой: <a href="{{ LINK }}" style="color: #22a8f2 !important; text-decoration: underline !important;" target="_blank"><font style=" color:#22a8f2;">{{ LINK }}</font></a></p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">или кнопкой ниже</p><p style="padding: 0; margin: 0;">&nbsp;</p></div></td>
<tbody><tr><td valign="top"><div style="text-align: left; font-family: Helvetica, Helvetica Neue, Arial; font-size: 14px; color: #000000; line-height: 14px; mso-line-height: exactly; vertical-align: middle;"><h1 style="font-family:Helvetica, Helvetica Neue, Arial; font-size: 20px; color: #000000; line-height: 32px; mso-line-height: exactly; vertical-align:middle;padding: 0; margin: 0;">{{ USER }}, вам выставлен счет для оплаты.</h1>
<p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">&nbsp;</p>
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Состав заказа: </span>{{ SERVICE }}</p><p style="padding: 0; margin: 0;">&nbsp;</p>
<p style="padding: 0; margin: 0;"><span style="color:#808080;">Сумма для оплаты: </span>{{ PRICE }} руб.</p><p style="padding: 0; margin: 0;">&nbsp;</p>
<p style="padding: 0; margin: 0;">
<span style="color:#808080;">Ваш менеджер: </span> </p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
<p> {{ MANAGER }} </p>
<p style="padding: 0; margin: 0;">&nbsp;</p>
<p>{{ MANAGER_PHONE }}</p>
<p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">Чтобы выбрать способ оплаты и оплатить данный счет, воспользуйтесь ссылкой: <a href="{{ LINK }}" style="color: #22a8f2 !important; text-decoration: underline !important;" target="_blank"><font style=" color:#22a8f2;">{{ LINK }}</font></a></p><p style="padding: 0; margin: 0;">&nbsp;</p><p style="padding: 0; margin: 0;">или кнопкой ниже</p><p style="padding: 0; margin: 0;">&nbsp;</p></div></td>
</tr>
</tbody></table>
</td>

Loading…
Cancel
Save