Skip to content

Commit

Permalink
Merge pull request #31 from jlmadurga/feature/api_swagger
Browse files Browse the repository at this point in the history
Feature/api swagger
  • Loading branch information
jlmadurga committed Apr 5, 2016
2 parents ac8b436 + e37b80a commit eb77df8
Show file tree
Hide file tree
Showing 22 changed files with 949 additions and 184 deletions.
198 changes: 198 additions & 0 deletions microbot/migrations/0018_auto_20160405_0621.py
@@ -0,0 +1,198 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.4 on 2016-04-05 11:21
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
import microbot.validators


class Migration(migrations.Migration):

dependencies = [
('microbot', '0017_auto_20160404_0543'),
]

operations = [
migrations.AlterField(
model_name='bot',
name='enabled',
field=models.BooleanField(default=True, help_text='Enable/disable bot', verbose_name='Enable'),
),
migrations.AlterField(
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.AlterField(
model_name='bot',
name='token',
field=models.CharField(db_index=True, help_text='Token provided by Telegram API https://core.telegram.org/bots', max_length=100, validators=[microbot.validators.validate_token], verbose_name='Token'),
),
migrations.AlterField(
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='microbot.User', verbose_name='Bot User'),
),
migrations.AlterField(
model_name='chatstate',
name='chat',
field=models.OneToOneField(help_text='Chat in Telegram API format. https://core.telegram.org/bots/api#chat', on_delete=django.db.models.deletion.CASCADE, to='microbot.Chat', verbose_name='Chat'),
),
migrations.AlterField(
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='microbot.State', verbose_name='State'),
),
migrations.AlterField(
model_name='environmentvar',
name='key',
field=models.CharField(help_text='Name of the variable', max_length=255, verbose_name='Key'),
),
migrations.AlterField(
model_name='environmentvar',
name='value',
field=models.CharField(help_text='Value of the variable', max_length=255, verbose_name='Value'),
),
migrations.AlterField(
model_name='handler',
name='bot',
field=models.ForeignKey(help_text='Bot which Handler is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='handlers', to='microbot.Bot', verbose_name='Bot'),
),
migrations.AlterField(
model_name='handler',
name='enabled',
field=models.BooleanField(default=True, help_text='Enable/disable handler', verbose_name='Enable'),
),
migrations.AlterField(
model_name='handler',
name='name',
field=models.CharField(db_index=True, help_text='Name for the handler', max_length=100, verbose_name='Name'),
),
migrations.AlterField(
model_name='handler',
name='pattern',
field=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=[microbot.validators.validate_pattern], verbose_name='Pattern'),
),
migrations.AlterField(
model_name='handler',
name='priority',
field=models.IntegerField(default=0, help_text='Set priority execution. Higher value higher priority', verbose_name='Priority'),
),
migrations.AlterField(
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='microbot.Request'),
),
migrations.AlterField(
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='microbot.Response'),
),
migrations.AlterField(
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='microbot.State', verbose_name='Source States'),
),
migrations.AlterField(
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='microbot.State', verbose_name='Target State'),
),
migrations.AlterField(
model_name='headerparam',
name='key',
field=models.CharField(help_text='Name of the parameter', max_length=255, verbose_name='Key'),
),
migrations.AlterField(
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='microbot.Request', verbose_name='Request'),
),
migrations.AlterField(
model_name='headerparam',
name='value_template',
field=models.CharField(help_text='Value template of the parameter. In jinja2 format. http://jinja.pocoo.org/', max_length=255, validators=[microbot.validators.validate_template], verbose_name='Value template'),
),
migrations.AlterField(
model_name='hook',
name='bot',
field=models.ForeignKey(help_text='Bot which Hook is attached', on_delete=django.db.models.deletion.CASCADE, related_name='hooks', to='microbot.Bot', verbose_name='Bot'),
),
migrations.AlterField(
model_name='hook',
name='enabled',
field=models.BooleanField(default=True, help_text=b'Enable/disable hook', verbose_name='Enable'),
),
migrations.AlterField(
model_name='hook',
name='key',
field=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),
),
migrations.AlterField(
model_name='hook',
name='name',
field=models.CharField(db_index=True, help_text='Name of the hook', max_length=100, verbose_name='Name'),
),
migrations.AlterField(
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='microbot.Response', verbose_name='Response'),
),
migrations.AlterField(
model_name='recipient',
name='chat_id',
field=models.BigIntegerField(db_index=True, help_text='Chat identifier provided by Telegram API', verbose_name='Chat id'),
),
migrations.AlterField(
model_name='recipient',
name='hook',
field=models.ForeignKey(help_text='Hook which recipient is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='recipients', to='microbot.Hook', verbose_name='Recipient'),
),
migrations.AlterField(
model_name='recipient',
name='name',
field=models.CharField(db_index=True, help_text='Name of recipient', max_length=100, verbose_name='Name'),
),
migrations.AlterField(
model_name='request',
name='url_template',
field=models.CharField(help_text='Url to request. A jinja2 template. http://jinja.pocoo.org/', max_length=255, validators=[microbot.validators.validate_template], verbose_name='Url template'),
),
migrations.AlterField(
model_name='response',
name='keyboard_template',
field=models.TextField(blank=True, help_text='Template to generate keyboard response. In jinja2 format. http://jinja.pocoo.org/', null=True, validators=[microbot.validators.validate_template, microbot.validators.validate_telegram_keyboard], verbose_name='Keyboard template'),
),
migrations.AlterField(
model_name='response',
name='text_template',
field=models.TextField(help_text='Template to generate text response. In jinja2 format. http://jinja.pocoo.org/', validators=[microbot.validators.validate_template, microbot.validators.validate_telegram_text_html], verbose_name='Text template'),
),
migrations.AlterField(
model_name='state',
name='bot',
field=models.ForeignKey(help_text='Bot which state is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='states', to='microbot.Bot', verbose_name='Bot'),
),
migrations.AlterField(
model_name='state',
name='name',
field=models.CharField(db_index=True, help_text='Name of the state', max_length=255, verbose_name='State name'),
),
migrations.AlterField(
model_name='urlparam',
name='key',
field=models.CharField(help_text='Name of the parameter', max_length=255, verbose_name='Key'),
),
migrations.AlterField(
model_name='urlparam',
name='request',
field=models.ForeignKey(help_text='Request which this Url Parameter is attached to', on_delete=django.db.models.deletion.CASCADE, related_name='url_parameters', to='microbot.Request', verbose_name='Request'),
),
migrations.AlterField(
model_name='urlparam',
name='value_template',
field=models.CharField(help_text='Value template of the parameter. In jinja2 format. http://jinja.pocoo.org/', max_length=255, validators=[microbot.validators.validate_template], verbose_name='Value template'),
),
]
8 changes: 4 additions & 4 deletions microbot/models/bot.py
Expand Up @@ -28,13 +28,13 @@ def validate_token(value):

@python_2_unicode_compatible
class Bot(MicrobotModel):
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='bots', help_text=_("User who owns the bot."))
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='bots', help_text=_("User who owns the bot"))
token = models.CharField(_('Token'), max_length=100, db_index=True, validators=[validators.validate_token],
help_text=_("Set token provided by Telegram API."))
help_text=_("Token provided by Telegram API https://core.telegram.org/bots"))
user_api = models.OneToOneField(User, verbose_name=_("Bot User"), related_name='bot',
on_delete=models.CASCADE, blank=True, null=True,
help_text=_("Telegram API info. Automatically retrieved from Telegram."))
enabled = models.BooleanField(_('Enable'), default=True, help_text=_("enable/disable bot wehbook."))
help_text=_("Telegram API info. Automatically retrieved from Telegram"))
enabled = models.BooleanField(_('Enable'), default=True, help_text=_("Enable/disable bot"))

class Meta:
verbose_name = _('Bot')
Expand Down
4 changes: 2 additions & 2 deletions microbot/models/environment_vars.py
Expand Up @@ -11,8 +11,8 @@
@python_2_unicode_compatible
class EnvironmentVar(MicrobotModel):
bot = models.ForeignKey(Bot, verbose_name=_('Bot'), related_name="env_vars", help_text=_("Bot which variable is attached."))
key = models.CharField(_('Key'), max_length=255, help_text=_("Set the name of the variable"))
value = models.CharField(_('Value'), max_length=255, help_text=_("Set the value of the variable"))
key = models.CharField(_('Key'), max_length=255, help_text=_("Name of the variable"))
value = models.CharField(_('Value'), max_length=255, help_text=_("Value of the variable"))

class Meta:
verbose_name = _('Environment Var')
Expand Down
29 changes: 15 additions & 14 deletions microbot/models/handler.py
Expand Up @@ -15,9 +15,9 @@


class AbstractParam(MicrobotModel):
key = models.CharField(_('Key'), max_length=255, help_text=_("Set the name of the parameter"))
key = models.CharField(_('Key'), max_length=255, help_text=_("Name of the parameter"))
value_template = models.CharField(_('Value template'), max_length=255, validators=[validators.validate_template],
help_text=_("Set the value of the parameter. A jinja2 template."))
help_text=_("Value template of the parameter. In jinja2 format. http://jinja.pocoo.org/"))

class Meta:
abstract = True
Expand All @@ -34,7 +34,7 @@ def process(self, **context):
@python_2_unicode_compatible
class Request(MicrobotModel):
url_template = models.CharField(_('Url template'), max_length=255, validators=[validators.validate_template],
help_text=_("Set the url to request. A jinja2 template."))
help_text=_("Url to request. A jinja2 template. http://jinja.pocoo.org/"))
GET, POST, PUT, PATCH, DELETE = ("Get", "Post", "Put", "Patch", "Delete")
METHOD_CHOICES = (
(GET, _("Get")),
Expand Down Expand Up @@ -100,15 +100,15 @@ def process(self, **context):

class UrlParam(AbstractParam):
request = models.ForeignKey(Request, verbose_name=_('Request'), related_name="url_parameters",
help_text=_("Request which this Url Parameter is attached to."))
help_text=_("Request which this Url Parameter is attached to"))

class Meta:
verbose_name = _("Url Parameter")
verbose_name_plural = _("Url Parameters")

class HeaderParam(AbstractParam):
request = models.ForeignKey(Request, verbose_name=_('Request'), related_name="header_parameters",
help_text=_("Request which this Url Parameter is attached to."))
help_text=_("Request which this Url Parameter is attached to"))

class Meta:
verbose_name = _("Header Parameter")
Expand All @@ -117,20 +117,21 @@ class Meta:
@python_2_unicode_compatible
class Handler(MicrobotModel):
bot = models.ForeignKey(Bot, verbose_name=_('Bot'), related_name="handlers",
help_text=_("Bot which Handler is attached to."))
name = models.CharField(_('Name'), max_length=100, db_index=True, help_text=_("Set a name for the handler which helps you to remember it."))
help_text=_("Bot which Handler is attached to"))
name = models.CharField(_('Name'), max_length=100, db_index=True, help_text=_("Name for the handler"))
pattern = models.CharField(_('Pattern'), max_length=255, validators=[validators.validate_pattern],
help_text=_("Regular expression the Handler will be triggered."))
request = models.OneToOneField(Request, null=True, blank=True, help_text=_("Request the Handler processes."),
help_text=_("""Regular expression the Handler will be triggered.
Using https://docs.python.org/2/library/re.html#regular-expression-syntax"""))
request = models.OneToOneField(Request, null=True, blank=True, help_text=_("Request the Handler processes"),
on_delete=models.SET_NULL)
response = models.OneToOneField(Response, help_text=_("Set how Handler responses."))
enabled = models.BooleanField(_('Enable'), default=True, help_text=_("enable/disable Handler."))
response = models.OneToOneField(Response, help_text=_("Template the handler uses to generate response"))
enabled = models.BooleanField(_('Enable'), default=True, help_text=_("Enable/disable handler"))
source_states = models.ManyToManyField('State', verbose_name=_('Source States'), related_name='source_handlers', blank=True,
help_text=_("Bot states the Handler executes. Set none if any."))
help_text=_("Bot states the Handler needs to be to execute. Set none if any"))
target_state = models.ForeignKey('State', verbose_name=_('Target State'), related_name='target_handlers', null=True, blank=True,
help_text=_("Bot state it is set when Handler finishes."))
help_text=_("This state will be set when handler ends processing"))
priority = models.IntegerField(_('Priority'), default=0,
help_text=_("Set priority execution. Higher value higher priority."))
help_text=_("Set priority execution. Higher value higher priority"))

class Meta:
verbose_name = _('Handler')
Expand Down
16 changes: 8 additions & 8 deletions microbot/models/hook.py
Expand Up @@ -15,14 +15,14 @@
@python_2_unicode_compatible
class Hook(MicrobotModel):
bot = models.ForeignKey(Bot, verbose_name=_('Bot'), related_name="hooks",
help_text=_("Bot which Hook is attached."))
help_text=_("Bot which Hook is attached"))
name = models.CharField(_('Name'), max_length=100, db_index=True,
help_text=_("Set a name for the hook which helps you to remember."))
help_text=_("Name of the hook"))
key = models.CharField(max_length=30, db_index=True, editable=False, unique=True,
help_text=_("Key generated to complete the Hoom url."))
help_text=_("Key generated to complete the Hook url. http://permabots.com/process/hook/{{key}}"))
response = models.OneToOneField(Response, verbose_name=_('Response'),
help_text=_("Set how Hook responses."))
enabled = models.BooleanField(_('Enable'), default=True, help_text="enable/disbale Hook.")
help_text=_("Template the hook uses to generate the response"))
enabled = models.BooleanField(_('Enable'), default=True, help_text="Enable/disable hook")

class Meta:
verbose_name = _('Hook')
Expand Down Expand Up @@ -50,10 +50,10 @@ def set_key(sender, instance, **kwargs):

@python_2_unicode_compatible
class Recipient(MicrobotModel):
chat_id = models.BigIntegerField(_('Chat id'), db_index=True, help_text=_("Chat identifier provided by Telegram API."))
name = models.CharField(_('Name'), max_length=100, db_index=True, help_text=_("Set name for recipient which helps you to remember it."))
chat_id = models.BigIntegerField(_('Chat id'), db_index=True, help_text=_("Chat identifier provided by Telegram API"))
name = models.CharField(_('Name'), max_length=100, db_index=True, help_text=_("Name of recipient"))
hook = models.ForeignKey(Hook, verbose_name=_('Recipient'), related_name="recipients",
help_text=_("Hook which recipient is attached to."))
help_text=_("Hook which recipient is attached to"))

class Meta:
verbose_name = _('Recipient')
Expand Down

0 comments on commit eb77df8

Please sign in to comment.