+ multivalues = {}
+ for key in ("distribution", "architecture", "binary"):
+ if isinstance(self.changes[key], dict):
+ multivalues[key] = " ".join(self.changes[key].keys())
+ else:
+ multivalues[key] = self.changes[key]
+
+ chg = DBChange()
+ chg.chagnesfile = self.change_file
+ chg.seen = filetime
+ chg.in_queue_id = in_queue
+ chg.source = self.chagnes["source"]
+ chg.binaries = multivalues["binary"]
+ chg.architecture = multivalues["architecture"]
+ chg.version = self.changes["version"]
+ chg.distribution = multivalues["distribution"]
+ chg.urgency = self.changes["urgency"]
+ chg.maintainer = self.changes["maintainer"]
+ chg.fingerprint = self.changes["fingerprint"]
+ chg.changedby = self.changes["changed-by"]
+ chg.date = self.changes["date"]
+
+ session.add(chg)
+
+ chg_files = []
+ for chg_fn in self.files.keys():
+ cpf = ChangePendingFile()
+ cpf.filename = chg_fn
+ cpf.size = self.files[chg_fn]['size']
+ cpf.md5sum = self.files[chg_fn]['md5sum']
+
+ session.add(cpf)
+ chg_files.append(cpf)
+
+ chg.files = chg_files
+
+ session.commit()
+ chg = session.query(DBChange).filter_by(changesname = self.changes_file).one();
+
+ return chg
+
+ def unknown_files_fields(self, name):
+ return sorted(list( set(self.files[name].keys()) -
+ set(CHANGESFIELDS_FILES)))
+
+ def unknown_changes_fields(self):
+ return sorted(list( set(self.changes.keys()) -
+ set(CHANGESFIELDS_MANDATORY + CHANGESFIELDS_OPTIONAL)))
+
+ def unknown_dsc_fields(self):
+ return sorted(list( set(self.dsc.keys()) -
+ set(CHANGESFIELDS_DSC)))
+
+ def unknown_dsc_files_fields(self, name):
+ return sorted(list( set(self.dsc_files[name].keys()) -
+ set(CHANGESFIELDS_DSCFILES_MANDATORY + CHANGESFIELDS_DSCFILES_OPTIONAL)))
+
+ def str_files(self):
+ r = []