# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2016-04-12 14:18
from __future__ import unicode_literals
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import permabots.validators
import uuid
[docs]class Migration(migrations.Migration):
initial = True
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.CreateModel(
name='Bot',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('token', models.CharField(db_index=True, help_text='Token provided by Telegram API https://core.telegram.org/bots', max_length=100, unique=True, validators=[permabots.validators.validate_token], verbose_name='Token')),
('enabled', models.BooleanField(default=True, help_text='Enable/disable bot', verbose_name='Enable')),
],
options={
'verbose_name': 'Bot',
'verbose_name_plural': 'Bots',
},
),
migrations.CreateModel(
name='Chat',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('type', models.CharField(choices=[(b'private', 'Private'), (b'group', 'Group'), (b'supergroup', 'Supergroup'), (b'channel', 'Channel')], max_length=255)),
('title', models.CharField(blank=True, max_length=255, null=True)),
('username', models.CharField(blank=True, max_length=255, null=True)),
('first_name', models.CharField(blank=True, max_length=255, null=True)),
('last_name', models.CharField(blank=True, max_length=255, null=True)),
],
options={
'verbose_name': 'Chat',
'verbose_name_plural': 'Chats',
},
),
migrations.CreateModel(
name='ChatState',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('context', models.TextField(blank=True, help_text='Context serialized to json when this state was set', null=True, verbose_name='Context')),
('chat', models.ForeignKey(help_text='Chat in Telegram API format. https://core.telegram.org/bots/api#chat', on_delete=django.db.models.deletion.CASCADE, related_name='chatstates', to='permabots.Chat', verbose_name='Chat')),
],
options={
'verbose_name': 'Chats States',
},
),
migrations.CreateModel(
name='EnvironmentVar',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('key', models.CharField(help_text='Name of the variable', max_length=255, verbose_name='Key')),
('value', models.CharField(help_text='Value of the variable', max_length=255, verbose_name='Value')),
('bot', models.ForeignKey(help_text='Bot which variable is attached.', on_delete=django.db.models.deletion.CASCADE, related_name='env_vars', to='permabots.Bot', verbose_name='Bot')),
],
options={
'verbose_name': 'Environment Var',
'verbose_name_plural': 'Environment Vars',
},
),
migrations.CreateModel(
name='Handler',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('name', models.CharField(db_index=True, help_text='Name for the handler', max_length=100, verbose_name='Name')),
('pattern', models.CharField(help_text='Regular expression the Handler will be triggered. \n Using https://docs.python.org/2/library/re.html#regular-expression-syntax', max_length=255, validators=[permabots.validators.validate_pattern], verbose_name='Pattern')),
('enabled', models.BooleanField(default=True, help_text='Enable/disable handler', verbose_name='Enable')),
('priority', models.IntegerField(default=0, help_text='Set priority execution. Higher value higher priority', verbose_name='Priority')),
('bot', models.ForeignKey(help_text='Bot which Handler is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='handlers', to='permabots.Bot', verbose_name='Bot')),
],
options={
'ordering': ['-priority'],
'verbose_name': 'Handler',
'verbose_name_plural': 'Handlers',
},
),
migrations.CreateModel(
name='HeaderParam',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('key', models.CharField(help_text='Name of the parameter', max_length=255, verbose_name='Key')),
('value_template', models.CharField(help_text='Value template of the parameter. In jinja2 format. http://jinja.pocoo.org/', max_length=255, validators=[permabots.validators.validate_template], verbose_name='Value template')),
],
options={
'verbose_name': 'Header Parameter',
'verbose_name_plural': 'Header Parameters',
},
),
migrations.CreateModel(
name='Hook',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('name', models.CharField(db_index=True, help_text='Name of the hook', max_length=100, verbose_name='Name')),
('key', models.CharField(db_index=True, editable=False, help_text='Key generated to complete the Hook url. http://permabots.com/process/hook/{{key}}', max_length=30, unique=True)),
('enabled', models.BooleanField(default=True, help_text=b'Enable/disable hook', verbose_name='Enable')),
('bot', models.ForeignKey(help_text='Bot which Hook is attached', on_delete=django.db.models.deletion.CASCADE, related_name='hooks', to='permabots.Bot', verbose_name='Bot')),
],
options={
'verbose_name': 'Hook',
'verbose_name_plural': 'Hooks',
},
),
migrations.CreateModel(
name='Message',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('message_id', models.BigIntegerField(db_index=True, verbose_name='Id')),
('date', models.DateTimeField(verbose_name='Date')),
('text', models.TextField(blank=True, null=True, verbose_name='Text')),
('chat', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='permabots.Chat', verbose_name='Chat')),
],
options={
'ordering': ['-date'],
'verbose_name': 'Message',
'verbose_name_plural': 'Messages',
},
),
migrations.CreateModel(
name='Recipient',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('chat_id', models.BigIntegerField(db_index=True, help_text='Chat identifier provided by Telegram API', verbose_name='Chat id')),
('name', models.CharField(db_index=True, help_text='Name of recipient', max_length=100, verbose_name='Name')),
('hook', models.ForeignKey(help_text='Hook which recipient is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='recipients', to='permabots.Hook', verbose_name='Recipient')),
],
options={
'verbose_name': 'Recipient',
'verbose_name_plural': 'Recipients',
},
),
migrations.CreateModel(
name='Request',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('url_template', models.CharField(help_text='Url to request. A jinja2 template. http://jinja.pocoo.org/', max_length=255, validators=[permabots.validators.validate_template], verbose_name='Url template')),
('method', models.CharField(choices=[(b'Get', 'Get'), (b'Post', 'Post'), (b'Put', 'Put'), (b'Delete', 'Delete'), (b'Patch', 'Patch')], default=b'Get', help_text='Define Http method for the request', max_length=128, verbose_name='Method')),
('data', models.TextField(blank=True, help_text='Set POST/PUT/PATCH data in json format', null=True, verbose_name='Data of the request')),
],
options={
'verbose_name': 'Request',
'verbose_name_plural': 'Requests',
},
),
migrations.CreateModel(
name='Response',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('text_template', models.TextField(help_text='Template to generate text response. In jinja2 format. http://jinja.pocoo.org/', validators=[permabots.validators.validate_template, permabots.validators.validate_telegram_text_html], verbose_name='Text template')),
('keyboard_template', models.TextField(blank=True, help_text='Template to generate keyboard response. In jinja2 format. http://jinja.pocoo.org/', null=True, validators=[permabots.validators.validate_template, permabots.validators.validate_telegram_keyboard], verbose_name='Keyboard template')),
],
options={
'verbose_name': 'Response',
'verbose_name_plural': 'Responses',
},
),
migrations.CreateModel(
name='State',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('name', models.CharField(db_index=True, help_text='Name of the state', max_length=255, verbose_name='State name')),
('bot', models.ForeignKey(help_text='Bot which state is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='states', to='permabots.Bot', verbose_name='Bot')),
],
options={
'verbose_name': 'State',
'verbose_name_plural': 'States',
},
),
migrations.CreateModel(
name='Update',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('update_id', models.BigIntegerField(db_index=True, verbose_name='Update Id')),
('bot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='updates', to='permabots.Bot', verbose_name='Bot')),
('message', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='updates', to='permabots.Message', verbose_name='Message')),
],
options={
'verbose_name': 'Update',
'verbose_name_plural': 'Updates',
},
),
migrations.CreateModel(
name='UrlParam',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Date created')),
('updated_at', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('key', models.CharField(help_text='Name of the parameter', max_length=255, verbose_name='Key')),
('value_template', models.CharField(help_text='Value template of the parameter. In jinja2 format. http://jinja.pocoo.org/', max_length=255, validators=[permabots.validators.validate_template], verbose_name='Value template')),
('request', models.ForeignKey(help_text='Request which this Url Parameter is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='url_parameters', to='permabots.Request', verbose_name='Request')),
],
options={
'verbose_name': 'Url Parameter',
'verbose_name_plural': 'Url Parameters',
},
),
migrations.CreateModel(
name='User',
fields=[
('id', models.BigIntegerField(primary_key=True, serialize=False)),
('first_name', models.CharField(max_length=255, verbose_name='First name')),
('last_name', models.CharField(blank=True, max_length=255, null=True, verbose_name='Last name')),
('username', models.CharField(blank=True, max_length=255, null=True, verbose_name='User name')),
],
options={
'verbose_name': 'User',
'verbose_name_plural': 'Users',
},
),
migrations.AddField(
model_name='message',
name='forward_from',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='forwarded_from', to='permabots.User', verbose_name='Forward from'),
),
migrations.AddField(
model_name='message',
name='from_user',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='permabots.User', verbose_name='User'),
),
migrations.AddField(
model_name='hook',
name='response',
field=models.OneToOneField(help_text='Template the hook uses to generate the response', on_delete=django.db.models.deletion.CASCADE, to='permabots.Response', verbose_name='Response'),
),
migrations.AddField(
model_name='headerparam',
name='request',
field=models.ForeignKey(help_text='Request which this Url Parameter is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='header_parameters', to='permabots.Request', verbose_name='Request'),
),
migrations.AddField(
model_name='handler',
name='request',
field=models.OneToOneField(blank=True, help_text='Request the Handler processes', null=True, on_delete=django.db.models.deletion.SET_NULL, to='permabots.Request'),
),
migrations.AddField(
model_name='handler',
name='response',
field=models.OneToOneField(help_text='Template the handler uses to generate response', on_delete=django.db.models.deletion.CASCADE, to='permabots.Response'),
),
migrations.AddField(
model_name='handler',
name='source_states',
field=models.ManyToManyField(blank=True, help_text='Bot states the Handler needs to be to execute. Set none if any', related_name='source_handlers', to='permabots.State', verbose_name='Source States'),
),
migrations.AddField(
model_name='handler',
name='target_state',
field=models.ForeignKey(blank=True, help_text='This state will be set when handler ends processing', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='target_handlers', to='permabots.State', verbose_name='Target State'),
),
migrations.AddField(
model_name='chatstate',
name='state',
field=models.ForeignKey(help_text='State related to the chat', on_delete=django.db.models.deletion.CASCADE, related_name='chat', to='permabots.State', verbose_name='State'),
),
migrations.AddField(
model_name='bot',
name='owner',
field=models.ForeignKey(help_text='User who owns the bot', on_delete=django.db.models.deletion.CASCADE, related_name='bots', to=settings.AUTH_USER_MODEL),
),
migrations.AddField(
model_name='bot',
name='user_api',
field=models.OneToOneField(blank=True, help_text='Telegram API info. Automatically retrieved from Telegram', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='bot', to='permabots.User', verbose_name='Bot User'),
),
migrations.AlterUniqueTogether(
name='update',
unique_together=set([('update_id', 'bot')]),
),
migrations.AlterUniqueTogether(
name='message',
unique_together=set([('message_id', 'chat')]),
),
]