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): class UserProfile(BaseAccount):
avatar = models.ImageField(_('Avatar'), upload_to=os.path.join('user', 'avatar'), null=True, default=None) 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')) responsibility_groups = models.ManyToManyField(Group, blank=True, verbose_name=_('Responsibility groups'))
objects = UserProfileManager() 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 django.conf import settings
from guardian.decorators import permission_required_or_403 as permission_required from guardian.decorators import permission_required_or_403 as permission_required
from guardian.shortcuts import get_objects_for_user 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 chatbot.models import ChatException
from jsonview.decorators import json_view from jsonview.decorators import json_view
from djing import global_base_views, MAC_ADDR_REGEX, ping, get_object_or_None 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**. воспользоваться одной процедурой из модуля **chatbot**.
```python ```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') 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.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from accounts_app.models import UserProfile from accounts_app.models import UserProfile
from chatbot.telebot import send_notify
from chatbot.send_func import send_notify
from chatbot.models import ChatException from chatbot.models import ChatException

2
taskapp/handle.py

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.utils.translation import gettext as _ 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 chatbot.models import ChatException
from djing.lib import MultipleException 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 import timezone
from django.utils.translation import ugettext as _ from django.utils.translation import ugettext as _
from abonapp.models import Abon from abonapp.models import Abon
# from .handle import handle as task_handle
from .handle import handle as task_handle
TASK_PRIORITIES = ( TASK_PRIORITIES = (
('A', _('Higher')), ('A', _('Higher')),
@ -100,15 +100,14 @@ class Task(models.Model):
self.save(update_fields=('state',)) self.save(update_fields=('state',))
def send_notification(self): 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): def get_attachment_fname(self):
return os.path.basename(self.attachment.name) return os.path.basename(self.attachment.name)

Loading…
Cancel
Save