def as_generic(self): """ Output report as list of lists, containing cells that would appear in COUNTER report (suitable for writing as CSV, TSV, etc.) """ output_lines = [] rep_type = "" for name, code in CODES.items(): if code == self.report_type[0:2]: rep_type = name report_name = "%s Report %s (R%s)" % (rep_type, self.report_type[-1], self.report_version) output_lines.append([report_name, REPORT_DESCRIPTIONS[self.report_type]]) output_lines.append([self.customer]) output_lines.append([self.institutional_identifier]) output_lines.append([u"Period covered by Report:"]) period = "%s to %s" % (self.period[0].strftime("%Y-%m-%d"), self.period[1].strftime("%Y-%m-%d")) output_lines.append([period]) output_lines.append([u"Date run:"]) output_lines.append([self.date_run.strftime("%Y-%m-%d")]) output_lines.append(self._table_header()) output_lines.append(self._totals_line()) for pub in self.pubs: output_lines.append(pub.as_generic()) return output_lines
def as_generic(self): """ Output report as list of lists. Nested list will contain cells that would appear in COUNTER report (suitable for writing as CSV, TSV, etc.) """ output_lines = [] rep_type = "" for name, code in CODES.items(): if code == self.report_type[0:2]: rep_type = name report_name = "%s Report %s (R%s)" % ( rep_type, self.report_type[-1], self.report_version, ) output_lines.append( [report_name, REPORT_DESCRIPTIONS[self.report_type]]) if self.report_type == "BR2": output_lines.append([self.customer, u"Section Type:"]) output_lines.append( [self.institutional_identifier, self.section_type]) else: output_lines.append([self.customer]) output_lines.append([self.institutional_identifier]) output_lines.append([u"Period covered by Report:"]) period = "%s to %s" % ( self.period[0].strftime("%Y-%m-%d"), self.period[1].strftime("%Y-%m-%d"), ) output_lines.append([period]) output_lines.append([u"Date run:"]) output_lines.append([self.date_run.strftime("%Y-%m-%d")]) output_lines.append(self._table_header()) if self.report_type in ("JR1", "BR1", "BR2", "DB2"): output_lines.extend(self._totals_lines()) elif self.report_type.startswith("DB"): self._ensure_required_metrics() try: self.pubs.sort( key=lambda x: METRICS[self.report_type].index(x.metric)) except ValueError: pass for pub in sorted(self.pubs, key=lambda x: x.title): output_lines.append(pub.as_generic()) return output_lines
def as_generic(self): """ Output report as list of lists. Nested list will contain cells that would appear in COUNTER report (suitable for writing as CSV, TSV, etc.) """ output_lines = [] rep_type = "" for name, code in CODES.items(): if code == self.report_type[0:2]: rep_type = name report_name = "%s Report %s (R%s)" % ( rep_type, self.report_type[-1], self.report_version, ) output_lines.append([report_name, REPORT_DESCRIPTIONS[self.report_type]]) if self.report_type == "BR2": output_lines.append([self.customer, u"Section Type:"]) output_lines.append([self.institutional_identifier, self.section_type]) else: output_lines.append([self.customer]) output_lines.append([self.institutional_identifier]) output_lines.append([u"Period covered by Report:"]) period = "%s to %s" % ( self.period[0].strftime("%Y-%m-%d"), self.period[1].strftime("%Y-%m-%d"), ) output_lines.append([period]) output_lines.append([u"Date run:"]) output_lines.append([self.date_run.strftime("%Y-%m-%d")]) output_lines.append(self._table_header()) if self.report_type in ("JR1", "BR1", "BR2", "DB2"): output_lines.extend(self._totals_lines()) elif self.report_type.startswith("DB"): self._ensure_required_metrics() try: self.pubs.sort(key=lambda x: METRICS[self.report_type].index(x.metric)) except ValueError: pass for pub in sorted(self.pubs, key=lambda x: x.title): output_lines.append(pub.as_generic()) return output_lines
def as_generic(self): """ Output report as list of lists, containing cells that would appear in COUNTER report (suitable for writing as CSV, TSV, etc.) """ output_lines = [] rep_type = "" for name, code in CODES.items(): if code == self.report_type[0:2]: rep_type = name report_name = ("%s Report %s (R%s)" % (rep_type, self.report_type[-1], self.report_version)) output_lines.append([report_name, REPORT_DESCRIPTIONS[self.report_type]]) if self.report_type == 'BR2': output_lines.append([self.customer, u'Section Type:']) # FIXME: maybe not chapters? output_lines.append([self.institutional_identifier, u'Chapter']) else: output_lines.append([self.customer]) output_lines.append([self.institutional_identifier]) output_lines.append([u'Period covered by Report:']) period = "%s to %s" % ( self.period[0].strftime('%Y-%m-%d'), self.period[1].strftime('%Y-%m-%d') ) output_lines.append([period]) output_lines.append([u'Date run:']) output_lines.append([self.date_run.strftime('%Y-%m-%d')]) output_lines.append(self._table_header()) if self.report_type in ('JR1', 'BR1', 'BR2', 'DB2'): output_lines.extend(self._totals_lines()) elif self.report_type.startswith('DB'): self._ensure_required_metrics() for pub in sorted(self.pubs, key=lambda x: x.title): output_lines.append(pub.as_generic()) return output_lines