import tg
from webob.exc import HTTPNotFound

from bazbase import conversion, structure
from . import zampolit

class Admin:
    zampolit = zampolit.Zampolit()

    @tg.expose(template="mako:gameki.templates.email")
    def email(self, ename, send=False):
        elm = structure.get_element(ename)
        if elm is None:
            raise HTTPNotFound(ename)
        from . import macros
        from bazjunk.email import format
        emails = conversion.to_python(elm, u'product', 'email', 'email')

        msgs = []
        for e in emails:
            atturl = e.get('attachment', None)
            if atturl is not None:
                res, res_type = data_for_url(atturl)
                attachment = (atturl.rsplit('/', 1)[-1],
                              res,
                              res_type)
                
            else:
                attachment = None
            kw = dict(msg=e['msg'], subject=e['subject'],
                        from_addr=e['from'], to_addr=e['to'],
                        cc=e.get('cc', None))
            if send:
                if attachment:
                    kw['attachment'] = attachment
                util.send_email(**kw)
            else:
                msgs.append((format(**kw), atturl, attachment))
        if send:
            tg.flash('%s emails sent.' % len(emails))
            tg.redirect(edit_url(ename))
        else:
            return {'ename': ename, 'messages': msgs}
