def __setstate__(self, dict): mimetype = dict.get('mimetype', None) if IMimetype.isImplementedBy(mimetype): dict['mimetype'] = str(mimetype) dict['binary'] = not not mimetype.binary assert(dict.has_key('mimetype'), 'no mimetype in setstate dict') File.__setstate__(self, dict)
def register(self, mimetype): """ Register a new mimetype mimetype must implement IMimetype """ mimetype = aq_base(mimetype) assert IMimetype.providedBy(mimetype) for t in mimetype.mimetypes: self.register_mimetype(t, mimetype) for extension in mimetype.extensions: self.register_extension(extension, mimetype) for glob in mimetype.globs: self.register_glob(glob, mimetype)
def testInstallation(self): """Checking installation of our Mime types""" mtr = self.mtr for mt_dict in office_mimetypes: mt_string = mt_dict['mimetypes'][0] mimetype = mtr.lookup(mt_string) self.failUnless( len(mimetype) > 0, "Didn't find MimeType obj for %s" % mt_string) if len(mimetype) > 0: self.failUnless( IMimetype.isImplementedBy(mtr.lookup(mt_string)[0]), "Didn't find MimeType obj for %s" % mt_string) return
def mimetype_lookup(mtr, contenttype): """Reimplemented as case insensitive from Products.MimetypesRegistry.""" __traceback_info__ = (repr(contenttype), str(contenttype)) mapping = mtr._mimetypes contenttype = contenttype.lower() if IMimetype.providedBy(contenttype): return (aq_base(contenttype), ) try: major, minor = contenttype.split('/', 1) except ValueError: raise MimeTypeException('Malformed MIME type ({})'.format(contenttype)) mapping = {k.lower(): v for k, v in mapping.items()} group = {k.lower(): v for k, v in mapping.get(major, {}).items()} if not minor or minor == '*': res = group.values() else: res = group.get(minor) if res: res = (res,) else: return () return tuple(aq_base(mtitem) for mtitem in res)
def unregister(self, mimetype): """ Unregister a new mimetype mimetype must implement IMimetype """ assert IMimetype.providedBy(mimetype) for t in mimetype.mimetypes: major, minor = split(t) group = self._mimetypes.get(major, {}) if group.get(minor) == mimetype: del group[minor] for e in mimetype.extensions: if self.extensions.get(e) == mimetype: del self.extensions[e] globs = getattr(self, 'globs', None) if globs is not None: for glob in mimetype.globs: existing = globs.get(glob) if existing is None: continue regex, mt = existing if mt == mimetype: del globs[glob]
def lookup(self, mimetypestring): """Lookup for IMimetypes object matching mimetypestring mimetypestring may have an empty minor part or containing a wildcard (*) mimetypestring may and IMimetype object (in this case it will be returned unchanged Return a list of mimetypes objects associated with the RFC-2046 name return an empty list if no one is known. """ if IMimetype.providedBy(mimetypestring): return (aq_base(mimetypestring), ) __traceback_info__ = (repr(mimetypestring), str(mimetypestring)) major, minor = split(str(mimetypestring)) group = self._mimetypes.get(major, {}) if not minor or minor == '*': res = group.values() else: res = group.get(minor) if res: res = (res, ) else: return () return tuple([aq_base(mtitem) for mtitem in res])
def lookup(self, mimetypestring): """Lookup for IMimetypes object matching mimetypestring mimetypestring may have an empty minor part or containing a wildcard (*) mimetypestring may and IMimetype object (in this case it will be returned unchanged Return a list of mimetypes objects associated with the RFC-2046 name return an empty list if no one is known. """ if IMimetype.providedBy(mimetypestring): return (aq_base(mimetypestring), ) __traceback_info__ = (repr(mimetypestring), str(mimetypestring)) major, minor = split(str(mimetypestring)) group = self._mimetypes.get(major, {}) if not minor or minor == '*': res = group.values() else: res = group.get(minor) if res: res = (res,) else: return () return tuple([aq_base(mtitem) for mtitem in res])
def __cmp__(self, other): if IMimetype.providedBy(other): other = other.normalized() return not (other in self.mimetypes)
def __setstate__(self, dict): mimetype = dict.get('mimetype', None) if IMimetype.providedBy(mimetype): dict['mimetype'] = str(mimetype) dict['binary'] = not not mimetype.binary File.__setstate__(self, dict)
def __cmp__(self, other): if IMimetype.isImplementedBy(other): other = other.normalized() return not (other in self.mimetypes)
def __setstate__(self, dict): mimetype = dict.get("mimetype", None) if IMimetype.providedBy(mimetype): dict["mimetype"] = str(mimetype) dict["binary"] = not not mimetype.binary File.__setstate__(self, dict)