示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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