Fix tg posting problem
This commit is contained in:
@@ -5,6 +5,7 @@ from webapp.models import Official, Role
|
||||
from webapp.models import Feed, Tag, BaseFeed, Event, Registration
|
||||
from webapp.models import KaehmyForm, KaehmyMessage
|
||||
from webapp.models import CustomKaehmyRole, PresetKaehmyRole
|
||||
from webapp.models import TelegramChannel, TelegramMessage
|
||||
from modeltranslation.admin import TranslationAdmin
|
||||
from django.contrib.auth.models import Permission
|
||||
# this is needed so that the models get registered for translation
|
||||
@@ -22,3 +23,5 @@ admin.site.register(KaehmyForm)
|
||||
admin.site.register(KaehmyMessage)
|
||||
admin.site.register(CustomKaehmyRole)
|
||||
admin.site.register(PresetKaehmyRole)
|
||||
admin.site.register(TelegramChannel)
|
||||
admin.site.register(TelegramMessage)
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11 on 2017-10-16 11:32
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('webapp', '0029_baserole_category'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='TelegramMessage',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('message_id', models.CharField(max_length=255, unique=True)),
|
||||
('channel_id', models.CharField(max_length=255)),
|
||||
('text', models.CharField(max_length=255)),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -267,6 +267,14 @@ class TelegramChannel(models.Model):
|
||||
channel_id = models.CharField(max_length=255)
|
||||
|
||||
|
||||
class TelegramMessage(models.Model):
|
||||
"""Single Telegram message"""
|
||||
|
||||
message_id = models.CharField(max_length=255, unique=True)
|
||||
channel_id = models.CharField(max_length=255)
|
||||
text = models.CharField(max_length=255)
|
||||
|
||||
|
||||
auditlog.register(Tag)
|
||||
auditlog.register(Feed)
|
||||
auditlog.register(Event)
|
||||
|
||||
+19
-3
@@ -5,7 +5,10 @@ import logging
|
||||
import telepot
|
||||
|
||||
from django.conf import settings
|
||||
from webapp.models import TelegramChannel
|
||||
from django.dispatch import receiver
|
||||
from django.db.models.signals import post_save, post_delete, pre_save
|
||||
|
||||
from webapp.models import TelegramChannel, TelegramMessage
|
||||
|
||||
TOKEN = settings.TELEGRAM_BOT_TOKEN
|
||||
bot = telepot.Bot(TOKEN)
|
||||
@@ -22,14 +25,21 @@ class KaehmyHandler:
|
||||
if flavor == 'chat':
|
||||
text = msg['text']
|
||||
id = msg['chat']['id']
|
||||
msg_id = msg['message_id']
|
||||
if text == '/start':
|
||||
TelegramChannel.objects.create(channel_id=id)
|
||||
bot.sendMessage(id, 'Moro! Uudet kaehmyt postataan tälle kanavalle.')
|
||||
try:
|
||||
TelegramMessage.objects.create(message_id=msg_id, channel_id=id, text='Moro! Uudet kaehmyt postataan tälle kanavalle.')
|
||||
except:
|
||||
pass
|
||||
elif text == '/stop':
|
||||
channels_started = [int(channel.channel_id) for channel in TelegramChannel.objects.all()]
|
||||
if id in channels_started:
|
||||
TelegramChannel.objects.get(channel_id=id).delete()
|
||||
bot.sendMessage(id, 'Lopetetaan kaehmyjen postailu.')
|
||||
try:
|
||||
TelegramMessage.objects.create(message_id=msg_id, channel_id=id, text='Lopetetaan kaehmyjen postailu.')
|
||||
except:
|
||||
pass
|
||||
|
||||
def announce(self, url, name):
|
||||
channels_started = [channel.channel_id for channel in TelegramChannel.objects.all()]
|
||||
@@ -49,3 +59,9 @@ try:
|
||||
main()
|
||||
except Exception as ex:
|
||||
logging.exception('Failed to create Telegram bot with token "{}"'.format(TOKEN))
|
||||
|
||||
|
||||
@receiver(post_save, sender=TelegramMessage, dispatch_uid="save_tg_message")
|
||||
def save_message(sender, instance, **kwargs):
|
||||
bot.sendMessage(instance.channel_id, instance.text)
|
||||
instance.save()
|
||||
@@ -12,6 +12,15 @@
|
||||
<h3 style="padding-top: 1rem">{% trans "Kaehmy" %}</h3>
|
||||
|
||||
<div id="input_form">
|
||||
<p>
|
||||
Kaehmykoneella voit ilmaista kiinnostuksesi toimia killassa ensi vuonna.
|
||||
Listassa on vastuualueittain sekä hallitus- että toimihenkilövirkoja.
|
||||
Koska lista ei ole koskaan täydellinen, voit myös ehdottaa ihan uutta toimenkuvaa.
|
||||
Jos sinulla on kysyttävää mistä tahansa virasta, kannattaa konsultoida <a href="http://sik.ayy.fi/files/official/ka%CC%88hmyopas_final_web.pdf">kaehmyopasta</a> tai olla yhteydessä kyseistä virkaa tänä vuonna toimittavaan henkilöön.
|
||||
</p>
|
||||
<p>
|
||||
Muista, että kaehmyn lähettäminen on kiinnostuksen ilmaus eikä siis missään nimessä sitova ilmoittautumien mihinkään tehtävään!
|
||||
</p>
|
||||
<form name="kaehmyForm" action="/kaehmy/submit/" method="post" class="form">{% csrf_token %}
|
||||
{% bootstrap_field form.name %}
|
||||
{% bootstrap_field form.email %}
|
||||
|
||||
Reference in New Issue
Block a user