Browse Source

make email notifications

devel
Dmitry Novikov 8 years ago
parent
commit
716604e699
  1. 2
      accounts_app/models.py
  2. 20
      chatbot/email_bot.py
  3. 5
      chatbot/send_func.py
  4. 2
      devapp/views.py
  5. 2
      docs/dev.md
  6. 2
      msg_app/models.py
  7. 2
      taskapp/handle.py
  8. 19
      taskapp/models.py

2
accounts_app/models.py

@ -95,7 +95,7 @@ class UserProfileManager(MyUserManager):
class UserProfile(BaseAccount):
avatar = models.ImageField(_('Avatar'), upload_to=os.path.join('user', 'avatar'), null=True, default=None)
email = models.EmailField(default='admin@example.ru')
email = models.EmailField(default='')
responsibility_groups = models.ManyToManyField(Group, blank=True, verbose_name=_('Responsibility groups'))
objects = UserProfileManager()

20
chatbot/email_bot.py

@ -0,0 +1,20 @@
from smtplib import SMTPException
from django.core.mail import send_mail
from django.conf import settings
from chatbot.models import ChatException, MessageQueue
def send_notify(msg_text, account, tag='none'):
try:
MessageQueue.objects.push(msg=msg_text, user=account, tag=tag)
target_email = account.email
print('send', target_email, type(target_email), 'from', getattr(settings, 'DEFAULT_FROM_EMAIL'))
send_mail(
subject=getattr(settings, 'COMPANY_NAME', 'Djing notify'),
message=msg_text,
from_email=getattr(settings, 'DEFAULT_FROM_EMAIL'),
recipient_list=(target_email,)
)
except SMTPException as e:
raise ChatException('SMTPException: %s' % e)

5
chatbot/send_func.py

@ -0,0 +1,5 @@
# send via email
from .email_bot import send_notify
# for Telegram
# from chatbot.telebot import send_notify

2
devapp/views.py

@ -22,7 +22,7 @@ from accounts_app.models import UserProfile
from django.conf import settings
from guardian.decorators import permission_required_or_403 as permission_required
from guardian.shortcuts import get_objects_for_user
from chatbot.telebot import send_notify
from chatbot.send_func import send_notify
from chatbot.models import ChatException
from jsonview.decorators import json_view
from djing import global_base_views, MAC_ADDR_REGEX, ping, get_object_or_None

2
docs/dev.md

@ -287,7 +287,7 @@ def add_tariff_range(self, tariff_list):
Для того чтоб оправить важное сообщение работнику через все возможные настроенные системы(смс, телеграм, браузер) мы можем
воспользоваться одной процедурой из модуля **chatbot**.
```python
from chatbot.telebot import send_notify
from chatbot.send_func import send_notify
send_notify(msg_text='Text message',account=employee_profile, tag='apptag')
```

2
msg_app/models.py

@ -1,7 +1,7 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from accounts_app.models import UserProfile
from chatbot.telebot import send_notify
from chatbot.send_func import send_notify
from chatbot.models import ChatException

2
taskapp/handle.py

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from django.utils.translation import gettext as _
from chatbot.telebot import send_notify
from chatbot.send_func import send_notify
from chatbot.models import ChatException
from djing.lib import MultipleException

19
taskapp/models.py

@ -6,7 +6,7 @@ from django.conf import settings
from django.utils import timezone
from django.utils.translation import ugettext as _
from abonapp.models import Abon
# from .handle import handle as task_handle
from .handle import handle as task_handle
TASK_PRIORITIES = (
('A', _('Higher')),
@ -100,15 +100,14 @@ class Task(models.Model):
self.save(update_fields=('state',))
def send_notification(self):
pass
#if self.abon:
# group = self.abon.group
#else:
# group = ''
#task_handle(
# self, self.author,
# self.recipients.all(), group
#)
if self.abon:
group = self.abon.group
else:
group = ''
task_handle(
self, self.author,
self.recipients.all(), group
)
def get_attachment_fname(self):
return os.path.basename(self.attachment.name)

Loading…
Cancel
Save