From f60ee13c74b6c4ef27f130701a874a6205da5c7d Mon Sep 17 00:00:00 2001 From: Bidot-Naude Thomas <thomas.bidotnaude@student-cs.fr> Date: Sat, 17 Apr 2021 13:11:15 +0200 Subject: [PATCH] Notifications for Sec-Gen --- oser_backend/settings/common.py | 9 ++++++++ profiles/admin.py | 12 ++++++++++- profiles/models.py | 12 +++++++++++ register/admin.py | 38 --------------------------------- requirements.txt | 4 ++++ runtime.txt | 2 +- 6 files changed, 37 insertions(+), 40 deletions(-) diff --git a/oser_backend/settings/common.py b/oser_backend/settings/common.py index 84ccf82..478aa5e 100644 --- a/oser_backend/settings/common.py +++ b/oser_backend/settings/common.py @@ -288,3 +288,12 @@ STATICFILES_DIRS = [ MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') + +# Telegram bot +TELEGRAM_BOT_TOKEN = os.getenv( + "TELEGRAM_BOT_TOKEN") +TELEGRAM = { + 'bot_token': TELEGRAM_BOT_TOKEN, + 'channel_name': 'oserSECGEN', + 'production': False, +} diff --git a/profiles/admin.py b/profiles/admin.py index f209480..e4976f4 100644 --- a/profiles/admin.py +++ b/profiles/admin.py @@ -57,5 +57,15 @@ class StudentAdmin(ProfileAdminMixin, admin.ModelAdmin, ExportCsvMixin): class Meta: # noqa model = Student - ordering = ['updated_date'] + ordering = ['-updated_date'] actions = ["export_as_csv"] + + +"""def post_event_on_telegram(event): + #message_html = render_to_string('telegram_message.html', { + # 'event': event + #}) + telegram_settings = settings.TELEGRAM + bot = telegram.Bot(token=telegram_settings['bot_token']) + bot.send_message(chat_id="@%s" % telegram_settings['channel_name'], + text="test", parse_mode=telegram.ParseMode.HTML)""" diff --git a/profiles/models.py b/profiles/models.py index 669195e..39f3925 100644 --- a/profiles/models.py +++ b/profiles/models.py @@ -7,6 +7,10 @@ from .utils import get_promotion_range from datetime import datetime from .notifications import SendDocs +import telegram +from django.conf import settings +from django.template.loader import render_to_string + class ProfileMixin: """Mixin with common functionnality for profiles.""" @@ -189,6 +193,14 @@ class Student(ProfileMixin, models.Model): # send email with link to registration docs SendDocs(user=self.user).send() + # send a telegram message to oserSECGEN + telegram_settings = settings.TELEGRAM + if telegram_settings['bot_token'] != None: + message_telegram = "Un tutoré a renseigné ses données personnelles, il attend ta validation !" + bot = telegram.Bot(token=telegram_settings['bot_token']) + bot.send_message( + chat_id="@%s" % telegram_settings['channel_name'], text=message_telegram, parse_mode=telegram.ParseMode.HTML) + return super(Student, self).save(*args, **kwargs) class Meta: # noqa diff --git a/register/admin.py b/register/admin.py index 34e2c39..95a4138 100644 --- a/register/admin.py +++ b/register/admin.py @@ -5,44 +5,6 @@ from .models import Registration from profiles.models import Student -class SchoolFilter(admin.SimpleListFilter): - title = 'établissement' - parameter_name = 'profiles__school' - - def lookups(self, request, model_admin): - list_of_school = [] - query = Student.objects.values_list( - "school", flat=True).distinct() - for school in query: - list_of_school.append((school, school)) - return list_of_school - - def queryset(self, request, queryset): - if self.value(): - emails = Student.objects.filter( - school=self.value()).values_list("user__email", flat=True) - return queryset.filter(email__in=emails) - - -class SchoolFilter(admin.SimpleListFilter): - title = 'établissement' - parameter_name = 'profiles__school' - - def lookups(self, request, model_admin): - list_of_school = [] - query = Student.objects.values_list( - "school", flat=True).distinct() - for school in query: - list_of_school.append((school, school)) - return list_of_school - - def queryset(self, request, queryset): - if self.value(): - emails = Student.objects.filter( - school=self.value()).values_list("user__email", flat=True) - return queryset.filter(email__in=emails) - - class SchoolFilter(admin.SimpleListFilter): title = 'établissement' parameter_name = 'profiles__school' diff --git a/requirements.txt b/requirements.txt index 85baa93..e1b2a84 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,10 @@ django-sendgrid-v5 django-filter django-rest-auth +# Telegram messages via python-telegram-bot +tornado==5.1.1 +python-telegram-bot==12.2.0 + # Storage of files in AWS S3 django-storages boto3 diff --git a/runtime.txt b/runtime.txt index 486fcce..0c89a2d 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.6.5 +python-3.6.13 -- GitLab