Source code for permabots.signals

from django.core.urlresolvers import reverse
from django.conf import settings
import logging
from permabots.validators import validate_token
from django.apps import apps
from permabots import caching

logger = logging.getLogger(__name__)

[docs]def set_bot_webhook(sender, instance, **kwargs): def get_site_domain(): from django.contrib.sites.models import Site current_site = Site.objects.get_current() return current_site.domain # set bot api if not yet if not instance._bot: instance.init_bot() try: # set webhook url = instance.null_url if instance.enabled: webhook = reverse(instance.hook_url, kwargs={'hook_id': instance.hook_id}) url = 'https://' + getattr(settings, 'MICROBOT_WEBHOOK_DOMAIN', get_site_domain()) + webhook instance.set_webhook(url) logger.info("Success: Webhook url %s for bot %s set" % (url, str(instance))) except: logger.error("Failure: Webhook url %s for bot %s not set" % (url, str(instance))) raise
[docs]def set_bot_api_data(sender, instance, **kwargs): # set bot api if not yet if not instance._bot: instance.init_bot() try: # complete Bot instance with api data if not instance.user_api: bot_api = instance._bot.get_me() User = apps.get_model('permabots', 'User') user_dict = bot_api.to_dict() user_dict.pop('type') user_api, _ = User.objects.get_or_create(**user_dict) instance.user_api = user_api logger.info("Success: Bot api info for bot %s set" % str(instance)) except: logger.error("Failure: Bot api info for bot %s no set" % str(instance)) raise
[docs]def validate_bot(sender, instance, **kwargs): validate_token(instance.token)
[docs]def delete_cache(sender, instance, **kwargs): caching.delete(sender, instance)
[docs]def delete_cache_env_vars(sender, instance, **kwargs): caching.delete(instance.bot._meta.model, instance.bot, 'env_vars')
[docs]def delete_cache_handlers(sender, instance, **kwargs): caching.delete(instance.bot._meta.model, instance.bot, 'handlers')
[docs]def delete_cache_source_states(sender, instance, **kwargs): caching.delete(instance._meta.model, instance, 'source_states')
[docs]def delete_bot_integrations(sender, instance, **kwargs): if instance.telegram_bot: instance.telegram_bot.delete() if instance.kik_bot: instance.kik_bot.delete() if instance.messenger_bot: instance.messenger_bot.delete()