diff --git a/accounts_app/models.py b/accounts_app/models.py index e99199c..014a948 100644 --- a/accounts_app/models.py +++ b/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() diff --git a/chatbot/email_bot.py b/chatbot/email_bot.py new file mode 100644 index 0000000..889bbab --- /dev/null +++ b/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) diff --git a/chatbot/send_func.py b/chatbot/send_func.py new file mode 100644 index 0000000..5571f23 --- /dev/null +++ b/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 diff --git a/devapp/views.py b/devapp/views.py index 985fcac..a4917d6 100644 --- a/devapp/views.py +++ b/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 diff --git a/docs/dev.md b/docs/dev.md index 94713bc..2fdb545 100644 --- a/docs/dev.md +++ b/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') ``` diff --git a/msg_app/models.py b/msg_app/models.py index a0becae..0014c6b 100644 --- a/msg_app/models.py +++ b/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 diff --git a/taskapp/handle.py b/taskapp/handle.py index cabcdfc..20fc982 100644 --- a/taskapp/handle.py +++ b/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 diff --git a/taskapp/models.py b/taskapp/models.py index e27e143..a9d3cdf 100644 --- a/taskapp/models.py +++ b/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)