from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Fieldset
from django import forms
from django.forms import ModelForm
from djconfig.forms import ConfigForm

from bots.models import TelegramBot


class BotForm(ModelForm):
    prefix = 'bot'

    def __init__(self, *args, module, **kwargs):
        super().__init__(*args, **kwargs)
        if not hasattr(module, 'rpc_dispatcher'):
            self.fields.pop('rpc_name')
        if not hasattr(module, 'periodic_task'):
            self.fields.pop('periodic_interval')
            self.fields.pop('periodic_last_run')

    class Meta:
        model = TelegramBot
        exclude = 'owner', 'config_type', 'config_id',


class BotsAppConfigForm(ConfigForm):
    slug = 'bots'
    title = 'Bots'

    tmp_uploads_chat_id = forms.CharField(required=True)
    aws_access_key_id = forms.CharField(required=True)
    aws_secret_access_key = forms.CharField(required=True)
    s3_bucket = forms.CharField(required=True)

    helper = FormHelper()
    helper.form_class = 'form-horizontal'
    helper.label_class = 'col-sm-2'
    helper.field_class = 'col-sm-10'
    helper.form_tag = False
    helper.layout = Layout(
        Fieldset('Global', 'tmp_uploads_chat_id'),
        Fieldset('Amazon S3', 'aws_access_key_id', 'aws_secret_access_key', 's3_bucket'),
    )
