-
Notifications
You must be signed in to change notification settings - Fork 24
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
37 changed files
with
1,599 additions
and
77 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
# -*- coding: utf-8 -*- | ||
# Generated by Django 1.9.4 on 2016-04-22 11:54 | ||
from __future__ import unicode_literals | ||
|
||
from django.db import migrations, models | ||
import django.db.models.deletion | ||
import uuid | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('microbot', '0003_auto_20160420_0401'), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='MessengerBot', | ||
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')), | ||
('enabled', models.BooleanField(default=True, help_text='Enable/disable telegram bot', verbose_name='Enable')), | ||
('token', models.CharField(db_index=True, max_length=512, verbose_name='Messenger Token')), | ||
], | ||
options={ | ||
'verbose_name': 'Messenger Bot', | ||
'verbose_name_plural': 'Messenger Bots', | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name='MessengerChatState', | ||
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.CharField(db_index=True, max_length=255, verbose_name='Sender Id')), | ||
('state', models.ForeignKey(help_text='State related to the chat', on_delete=django.db.models.deletion.CASCADE, related_name='messengerchatstate_chat', to='microbot.State', verbose_name='State')), | ||
], | ||
options={ | ||
'verbose_name': 'Messenger Chat State', | ||
'verbose_name_plural': 'Messenger Chats States', | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name='MessengerMessage', | ||
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')), | ||
('sender', models.CharField(max_length=255, verbose_name='Sender Id')), | ||
('recipient', models.CharField(max_length=255, verbose_name='Recipient Id')), | ||
('timestamp', models.DateTimeField(verbose_name='Timestamp')), | ||
('type', models.CharField(choices=[(b'message', 'Message'), (b'postback', 'Postback'), (b'delivery', 'Delivery')], max_length=255)), | ||
('postback', models.CharField(blank=True, max_length=255, null=True, verbose_name='PostBack')), | ||
('text', models.TextField(blank=True, null=True, verbose_name='Text')), | ||
('bot', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='microbot.MessengerBot', verbose_name='Messenger Bot')), | ||
], | ||
options={ | ||
'ordering': ['-timestamp'], | ||
'verbose_name': 'Messenger Message', | ||
'verbose_name_plural': 'Messenger Messages', | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name='MessengerRecipient', | ||
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.CharField(db_index=True, help_text='Chat identifier provided by Messenger API', max_length=150, 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='messenger_recipients', to='microbot.Hook', verbose_name='Hook')), | ||
], | ||
options={ | ||
'verbose_name': 'Messenger Recipient', | ||
'verbose_name_plural': 'Messenger Recipients', | ||
}, | ||
), | ||
migrations.AlterModelOptions( | ||
name='kikchatstate', | ||
options={'verbose_name': 'Kik Chat State', 'verbose_name_plural': 'Kik Chats States'}, | ||
), | ||
migrations.AlterModelOptions( | ||
name='telegramchatstate', | ||
options={'verbose_name': 'Telegram Chat State', 'verbose_name_plural': 'Telegram Chats States'}, | ||
), | ||
migrations.AddField( | ||
model_name='bot', | ||
name='messenger_bot', | ||
field=models.OneToOneField(blank=True, help_text='Messenger Bot', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='bot', to='microbot.MessengerBot', verbose_name='Messenger Bot'), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# -*- coding: utf-8 -*- | ||
from django.db import models | ||
from django.utils.encoding import python_2_unicode_compatible | ||
from django.utils.translation import ugettext_lazy as _ | ||
from microbot.models.base import MicrobotModel | ||
|
||
|
||
@python_2_unicode_compatible | ||
class MessengerMessage(MicrobotModel): | ||
bot = models.ForeignKey('MessengerBot', related_name='messages', verbose_name=_("Messenger Bot")) | ||
sender = models.CharField(_("Sender Id"), max_length=255) | ||
recipient = models.CharField(_("Recipient Id"), max_length=255) | ||
timestamp = models.DateTimeField(_('Timestamp')) | ||
MESSAGE, POSTBACK, DELIVERY = 'message', 'postback', 'delivery' | ||
|
||
TYPE_CHOICES = ( | ||
(MESSAGE, _('Message')), | ||
(POSTBACK, _('Postback')), | ||
(DELIVERY, _('Delivery')), | ||
) | ||
type = models.CharField(max_length=255, choices=TYPE_CHOICES) | ||
postback = models.CharField(_("PostBack"), null=True, blank=True, max_length=255) | ||
text = models.TextField(null=True, blank=True, verbose_name=_("Text")) | ||
|
||
class Meta: | ||
verbose_name = 'Messenger Message' | ||
verbose_name_plural = 'Messenger Messages' | ||
ordering = ['-timestamp', ] | ||
|
||
@property | ||
def is_message(self): | ||
return self.type == self.MESSAGE | ||
|
||
@property | ||
def is_postback(self): | ||
return self.type == self.POSTBACK | ||
|
||
@property | ||
def is_delivery(self): | ||
return self.type == self.DELIVERY | ||
|
||
@property | ||
def data(self): | ||
if self.is_message: | ||
return self.text | ||
elif self.is_postback: | ||
return self.postback | ||
else: | ||
return None | ||
|
||
def __str__(self): | ||
|
||
return "(%s,%s:%s)" % (self.id, self.type, self.data) | ||
|
||
def to_dict(self): | ||
message_dict = {'sender': self.sender, | ||
'recipient': self.recipient, | ||
'timestamp': self.timestamp, | ||
} | ||
if self.is_message: | ||
message_dict.update({'text': self.text}) | ||
elif self.is_postback: | ||
message_dict.update({'postback': self.postback}) | ||
return message_dict |
Oops, something went wrong.