def choose_body(parts): """Given a list of sibling MIME parts, choose the one with a content_type of "text/plain", if it exists""" if len(parts) == 1: return unicode_damnit(parts[0].body.data, parts[0].charset) elif len(parts) > 1: data = u"" for p in parts: if p.content_type == "text/plain": data = unicode_damnit(p.body.data, p.charset) break return data else: return u""
def index_search_b(self): try: from_header = HeaderData.objects.filter( header__part__parent__isnull=True, header__name__name="From", header__part__email__id=self.id, ).first() return unicode_damnit(from_header.data) except AttributeError: return ""
def get_description(self, obj): """""" from inboxen.models import HeaderData try: from_header = HeaderData.objects.filter( header__part__parent__isnull=True, header__name__name="From", header__part__email__id=obj.id, ).first() return unicode_damnit(from_header.data) except AttributeError: return u""
def get_title(self, obj): """Fetch subject for obj""" from inboxen.models import HeaderData try: subject = HeaderData.objects.filter( header__part__parent__isnull=True, header__name__name="Subject", header__part__email__id=obj.id, ).first() return unicode_damnit(subject.data) except AttributeError: return u""
def get_meta(self, obj): """Extra meta data to save DB queries later""" from inboxen.models import HeaderData try: from_header = HeaderData.objects.filter( header__part__parent__isnull=True, header__name__name="From", header__part__email__id=obj.id, )[0] from_header = unicode_damnit(from_header.data) except IndexError: from_header = u"" return { "from": from_header, "inbox": obj.inbox.inbox, "domain": obj.inbox.domain.domain, }
def test_invalid_charset(self): text = "Växjö".encode("utf-8") self.assertEqual(email_utils.unicode_damnit(text, "utf-8"), u"Växjö") self.assertEqual(email_utils.unicode_damnit(text, "six.text_type"), u"V\ufffd\ufffdxj\ufffd\ufffd")
def test_unicode_passthrough(self): already_unicode = u"€" # if this doesn't passthrough, it will error email_utils.unicode_damnit(already_unicode, "ascii", "strict")
def test_is_unicode(self): string = "Hey there!" self.assertTrue( isinstance(email_utils.unicode_damnit(string), six.text_type))
def test_invalid_charset(self): text = "Växjö".encode("utf-8") self.assertEqual(email_utils.unicode_damnit(text, "utf-8"), u"Växjö") self.assertEqual(email_utils.unicode_damnit(text, "str"), u"V\ufffd\ufffdxj\ufffd\ufffd")
def test_is_unicode(self): string = "Hey there!" self.assertTrue(isinstance(email_utils.unicode_damnit(string), str))
def __call__(self, value): if '\x00' in unicode_damnit(value): raise ValidationError(self.message, code=self.code)