from .models import *

def get_options_by_opt_types(opt_types, only_vals=False):
    if type(opt_types) == str:
        kwargs = {'opt_type': opt_types}
    elif type(opt_types) == dict:
        kwargs = opt_types
    else:
        kwargs = {'opt_type__in': opt_types}

    opts = Option.objects.filter(**kwargs)
    if opts and only_vals:
        res = {}
        opts = opts.values('opt_type', 'value', 'prefix')
        for item in opts:
            if item['opt_type'] == 'domain':

                try:
                    from django.contrib.sites.models import Site
                    current_site = Site.objects.get_current()
                    res.update({item['opt_type']: current_site.domain})
                    continue
                except Exception as e:
                    print(str(e))

            if item['prefix']:
                res.update({item['opt_type']: f"{item['prefix']}{item['value']}"})
            else:
                res.update({item['opt_type']: f"{item['value']}"})
        return res

    return opts

def get_first_option_value_by_opt_type(opt_type):
    opts = get_options_by_opt_types(opt_type)
    if opts:
        return opts[0].value
    else:
        return None

def get_mail_send_options():
    opt_types = ['mail_server_url', 'mail_server_smtp_port', 'sender_mail_login', 'sender_mail_password', 'sender_email', 'project_name']

    return get_options_by_opt_types(opt_types, only_vals=True)
