configurable bot token

This commit is contained in:
2019-01-19 09:52:00 +03:00
parent 33ff1b800b
commit 999c6af8e7
20 changed files with 154 additions and 60 deletions

View File

@@ -3,3 +3,12 @@ from django.apps import AppConfig
class FeedsConfig(AppConfig):
name = 'feeds'
def ready(self):
self.register_config()
def register_config(self):
import djconfig
from .forms import FeedsAppConfigForm
djconfig.register(FeedsAppConfigForm)

View File

@@ -1,4 +1,6 @@
from django import forms
from django.forms import ModelForm
from djconfig.forms import ConfigForm
from feeds.models import Feed
@@ -19,3 +21,12 @@ def get_config_form(mdl):
model = mdl
exclude = ()
return ConfigForm
class FeedsAppConfigForm(ConfigForm):
slug = 'feeds'
title = 'Feeds'
feed_bot_token = forms.CharField(required=True)
vk_username = forms.CharField(required=True)
vk_password = forms.CharField(required=True)

View File

@@ -1,15 +1,13 @@
# Generated by Django 2.1.5 on 2019-01-10 17:20
# Generated by Django 2.1.5 on 2019-01-19 05:35
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import picklefield.fields
import yamlfield.fields
class Migration(migrations.Migration):
initial = True
dependencies = [
('contenttypes', '0002_remove_content_type_name'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
@@ -32,12 +30,13 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=32)),
('chat_id', models.CharField(max_length=33)),
('check_interval', models.DurationField()),
('check_interval', models.DurationField(help_text='in seconds')),
('last_check', models.DateTimeField(blank=True, null=True)),
('last_id', picklefield.fields.PickledObjectField(blank=True, editable=False, null=True)),
('last_id', yamlfield.fields.YAMLField(blank=True, null=True)),
('config_id', models.PositiveIntegerField()),
('config_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
('lock', models.BooleanField(default=False)),
],
),
migrations.AlterUniqueTogether(

View File

@@ -1,18 +0,0 @@
# Generated by Django 2.1.5 on 2019-01-10 18:41
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('feeds', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='feed',
name='lock',
field=models.BooleanField(default=False),
),
]

View File

@@ -1,18 +0,0 @@
# Generated by Django 2.1.5 on 2019-01-19 02:49
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('feeds', '0002_feed_lock'),
]
operations = [
migrations.AlterField(
model_name='feed',
name='check_interval',
field=models.DurationField(help_text='in seconds'),
),
]

View File

@@ -3,8 +3,8 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelatio
from django.contrib.contenttypes.models import ContentType
from django.db import models
from django.utils import timezone
from picklefield import PickledObjectField
from telebot import TeleBot
from yamlfield.fields import YAMLField
from feeds.tasks import execute_feed
@@ -15,7 +15,7 @@ class Feed(models.Model):
chat_id = models.CharField(max_length=33)
check_interval = models.DurationField(help_text='in seconds')
last_check = models.DateTimeField(null=True, blank=True)
last_id = PickledObjectField(null=True, blank=True)
last_id = YAMLField(null=True, blank=True)
lock = models.BooleanField(default=False)
config_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)

View File

@@ -1,5 +1,6 @@
from django.utils import timezone
from telebot import TeleBot
from djconfig import config
from config.celery import app
@@ -15,7 +16,7 @@ def execute_feed(feed_pk):
feed.lock = True
feed.save()
bot = TeleBot('450146961:AAFcb9tyIiKAi6BHR1ZYfWuTEkYjhO3xEFE')
bot = TeleBot(config.feed_bot_token)
feed.last_id = feed.config.execute(bot, feed.chat_id, feed.last_id)
feed.last_check = timezone.now()
feed.save()

View File

@@ -16,7 +16,18 @@
<h4>General options</h4>
{% bootstrap_form feed_form layout='horizontal' %}
{% if feed %}
Last check: {{ feed.last_check }}
<div class="form-group row">
<label class="col-md-3 col-form-label" for="id_feed-last_check">Last check</label>
<div class="col-md-9">
<input type="text" value="{{ feed.last_check }}" class="form-control" placeholder="Last check" title="" id="id_feed-last_check" disabled>
</div>
</div>
<div class="form-group row">
<label class="col-md-3 col-form-label" for="id_feed-last_id">Last id</label>
<div class="col-md-9">
<textarea class="form-control" placeholder="Last id" id="id_feed-last_id" disabled>{{ feed.last_id }}</textarea>
</div>
</div>
{% endif %}
<hr>
<h4>Module options</h4>