X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fchanges.py;h=5cd26e2a69e071689e5adba343f0590a1973b3f1;hb=3b1a95b1ac0b05ca86ac1fde96ca51fdae429ccd;hp=150e7c5327a17b168dc2c9f65f3d4d8531ac0a38;hpb=126a1c72aa67a25d615e4417c15e8fa74419ca78;p=dak.git diff --git a/daklib/changes.py b/daklib/changes.py index 150e7c53..5cd26e2a 100755 --- a/daklib/changes.py +++ b/daklib/changes.py @@ -287,4 +287,103 @@ class Changes(object): dump_file.close() + 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 = [] + for name, entry in self.files.items(): + r.append(" %s:" % (name)) + for i in CHANGESFIELDS_FILES: + if entry.has_key(i): + r.append(" %s: %s" % (i.capitalize(), entry[i])) + xfields = self.unknown_files_fields(name) + if len(xfields) > 0: + r.append("files[%s] still has following unrecognised keys: %s" % (name, ", ".join(xfields))) + + return r + + def str_changes(self): + r = [] + for i in CHANGESFIELDS_MANDATORY: + val = self.changes[i] + if isinstance(val, list): + val = " ".join(val) + elif isinstance(val, dict): + val = " ".join(val.keys()) + r.append(' %s: %s' % (i.capitalize(), val)) + + for i in CHANGESFIELDS_OPTIONAL: + if self.changes.has_key(i): + r.append(' %s: %s' % (i.capitalize(), self.changes[i])) + + xfields = self.unknown_changes_fields() + if len(xfields) > 0: + r.append("Warning: changes still has the following unrecognised fields: %s" % ", ".join(xfields)) + + return r + + def str_dsc(self): + r = [] + for i in CHANGESFIELDS_DSC: + if self.dsc.has_key(i): + r.append(' %s: %s' % (i.capitalize(), self.dsc[i])) + + xfields = self.unknown_dsc_fields() + if len(xfields) > 0: + r.append("Warning: dsc still has the following unrecognised fields: %s" % ", ".join(xfields)) + + return r + + def str_dsc_files(self): + r = [] + for name, entry in self.dsc_files.items(): + r.append(" %s:" % (name)) + for i in CHANGESFIELDS_DSCFILES_MANDATORY: + r.append(" %s: %s" % (i.capitalize(), entry[i])) + for i in CHANGESFIELDS_DSCFILES_OPTIONAL: + if entry.has_key(i): + r.append(" %s: %s" % (i.capitalize(), entry[i])) + xfields = self.unknown_dsc_files_fields(name) + if len(xfields) > 0: + r.append("dsc_files[%s] still has following unrecognised keys: %s" % (name, ", ".join(xfields))) + + return r + + def __str__(self): + r = [] + + r.append(" Changes:") + r += self.str_changes() + + r.append("") + + r.append(" Dsc:") + r += self.str_dsc() + + r.append("") + + r.append(" Files:") + r += self.str_files() + + r.append("") + + r.append(" Dsc Files:") + r += self.str_dsc_files() + + return "\n".join(r) + __all__.append('Changes')