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.isImplementedBy(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 unregister(self, mimetype): """ Unregister a new mimetype mimetype must implement IMimetype """ assert IMimetype.isImplementedBy(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.isImplementedBy(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.isImplementedBy(other): other = other.normalized() return not (other in self.mimetypes)