def generateReportFile(reportfilename, datamap, compliance_test=False, thesaurus_test=True, verbose=True): """Obtain all data and write to HTML. This method is called by regenAll. Datamap is a mapping of museum data files. (the museum objects defined in regenAll)""" output = getOutputFile(reportfilename) output.write(get_header()) if "name" in datamap: output.write("<div class='title'>Statistieken <strong>%s</strong></div>\n" % (datamap["name"])) utils.verbose = verbose thesaurus.setCustomThesauri(ensureList(datamap, "reference_thesauri")) utils.s("START") x = ensureList(datamap, "objects") for infile in ensureList(datamap, "objects"): generate_compliancereport(output, infile, not compliance_test, not thesaurus_test) for infile in ensureList(datamap, "thesaurus"): generate_thesaurusreport(output, infile) for infile in ensureList(datamap, "fieldstats"): generate_report(output, infile) for infile in ensureList(datamap, "csvfieldstats"): generate_csvreport(output, infile) utils.s("DONE") output.write(get_footer()) output.close()
def start(self): museumName = self.museumnaamField.get() museumName = utils.ensureUnicode(museumName) if not museumName.strip(): tkMessageBox.showerror('Geen naam voor de collectie opgegeven', 'Vul de naam van de collectie in, aub.'); return outputFile = self.outputField.get() if not isValidOutputFile(outputFile): tkMessageBox.showerror('Fout bij het starten', 'Kon niet starten omdat er geen correct "Output" bestand is opgegeven.'); return if os.path.exists(outputFile): doOverwrite = tkMessageBox.askyesno('Bestand overschrijven?', 'Het gekozen "Output" bestand bestaat reeds. Wilt u verder gaan en het overschrijven?') if not doOverwrite: return try: waitDialog = WaitDialog(self.parent) utils.setMaxDetail(self.settings.maxUniqueValues) # Will only return input files with valid files and names filled in inputFiles = self.inputFilesTable.getValues() if inputFiles.size() == 0: waitDialog.close() tkMessageBox.showerror('Fout bij het starten', u'Kon niet starten omdat er geen geldige "Input" bestanden zijn opgegeven.\nEr is minstens één input bestand met ingevulde naam, type en bestandslocatie vereist.'); return if self.checkb["state"] != DISABLED and self.checkThesaurus.get(): checkThesaurus = True else: checkThesaurus = False # Set configured reference thesauri err = None if (checkThesaurus): referenceThesauri = self.settings.thesauri err = setCustomThesauri(referenceThesauri) else: err = setCustomThesauri(TEntries()) if (not (err is None)): waitDialog.close() tkMessageBox.showerror('Fout bij het starten', err); return # Set specified input files to analyse objects = [] thesauri = [] fieldstats = [] csvfieldstats = [] inputFiles.sort() for entry in inputFiles.values: utils.s("%s - %s - %s\n" % (entry.name, entry.type, entry.path)) if entry.type == 'Adlib XML Objecten': objects.append(entry.path) elif entry.type == 'XML Fieldstats' or entry.type == "Adlib XML Personen": fieldstats.append(entry.path) elif entry.type == 'CSV Fieldstats': csvfieldstats.append(entry.path) elif entry.type == 'Adlib XML Thesaurus': thesauri.append(entry.path) else: print "ERROR: Input bestand %s met type %s kan niet gebruikt worden" % (entry.name, entry.type) generateReport(museumName, objects, thesauri, fieldstats, csvfieldstats, outputFile, False) except Exception, e: waitDialog.close() stacktrace = traceback.format_exc() print "exception ..." print stacktrace print "done" ExceptionDialog(self.parent, e, stacktrace) return