#!/usr/bin/env python
# -*- coding: iso8859-1 -*-
import email, email.Message

def make_meta(mime='text/wiki', charset='utf-8', **kw):
    meta = email.Message.Message()
    meta.set_type(mime)
    meta.set_charset(charset)
    for k,v in kw.items():
        if isinstance(v, unicode):
            meta[k] = v.encode(charset)
        else:
            meta[k] = str(v)
    # remove stuff we don't need:
    del meta['Content-Transfer-Encoding']
    del meta['Mime-Version']
    return meta.as_string()

def parse_meta(metastr):
    meta = email.message_from_string(metastr)
    mime = meta.get_content_type()
    charset = 'ascii'
    for k,v in meta.get_params():
        if k == 'charset':
            charset = v
    # we only need it once:
    del meta['Content-Type']
    d = {}
    for k in meta.keys():
        d[k] = unicode(meta[k], charset)
    return mime, charset, d

meta = make_meta('text/wiki', 'utf-8',
                 current = 3, 
                 acl = 'WikiAdmin:read,write,revert,delete,admin All:',
                 lasteditor = u'JürgenHermann',
                 lastchange = 12345678)

print meta

print parse_meta(meta)

