Example #1
0
    def update(self):
        now = datetime.datetime.now()
        if 'X-First-Seen' not in self.data:
            self.data['X-First-Seen'] = util.iso8601_datetime_format(now.timetuple())
        envelope = (
                #('X-Meta-Checksum', lambda x: self.get_meta_hash()),
                ('X-Last-Modified', util.last_modified_header),
                ('X-Last-Update', lambda x: util.iso8601_datetime_format(now.timetuple())),
                ('X-Last-Seen', lambda x: util.iso8601_datetime_format(now.timetuple())),
            )
        for handlers in self.handlers, envelope:
            for header, handler in handlers:

                value = None

                try:
                    value = handler(self.path)
                except Exception, e:
                    traceback.print_exc()
                    log.err("%s: %s", header, e)
                    continue

                #print header, value
                if header in self.allow_multiple:
                    if header not in self.data:
                        self.data[header] = []
                    elif not isinstance(self.data[header], list):
                        self.data[header] = [ self.data[header] ]

                    self.data[header].append(value)
                else:
                    self.data[header] = value
Example #2
0
 def write(self):
     fl = open(self.__class__.get_metafile(self.path, self.basedir), 'w+')
     now = datetime.datetime.now() # XXX: ctime?
     envelope = {
             'X-Meta-Checksum': self.get_meta_hash(),
             'X-Last-Update': util.iso8601_datetime_format(now.timetuple()),
             'Location': self.path,
         }
     for key in envelope.keys():
         if key in self.data:
             del self.data[key]
     for data in self.data, envelope:
         for header in data:
             value = data[header]
             if isinstance(value, list):
                 value = ", ".join(value)
             fl.write("%s: %s\r\n" % (header, value))
     fl.close()
     mtime = calendar.timegm( now.timetuple() )#[:6] )
     os.utime(self.__class_.get_metafile(self.path, self.basedir), (mtime, mtime))