Ejemplo n.º 1
0
    def _render_name_freq(self, freq_table):
        """Produces name statistics table.

        :param freq_table: list of (name, count) tuples.
        """
        def _gencouples(namefreq):
            halflen = (len(namefreq) + 1) // 2
            for i in range(halflen):
                n1, c1 = namefreq[2 * i]
                n2, c2 = None, None
                if 2 * i + 1 < len(namefreq):
                    n2, c2 = namefreq[2 * i + 1]
                yield n1, c1, n2, c2

        total = float(sum(count for _, count in freq_table))

        tbl = table.Table()
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())

        for name1, count1, name2, count2 in _gencouples(freq_table):

            row = table.TableRow()

            cell = table.TableCell()
            cell.addElement(text.P(text=name1 or '-'))
            row.addElement(cell)

            cell = table.TableCell()
            cell.addElement(
                text.P(text='%d (%.1f%%)' % (count1, count1 / total * 100)))
            row.addElement(cell)

            if count2 is not None:

                cell = table.TableCell()
                cell.addElement(text.P(text=name2 or '-'))
                row.addElement(cell)

                cell = table.TableCell()
                cell.addElement(
                    text.P(text='%d (%.1f%%)' %
                           (count2, count2 / total * 100)))
                row.addElement(cell)

            tbl.addElement(row)

        self.doc.text.addElement(tbl)
Ejemplo n.º 2
0
    def dset_sheet(cls, dataset, ws):
        """Completes given worksheet from given Dataset."""
        _package = dataset._package(dicts=False)

        for i, sep in enumerate(dataset._separators):
            _offset = i
            _package.insert((sep[0] + _offset), (sep[1], ))

        for i, row in enumerate(_package):
            row_number = i + 1
            odf_row = table.TableRow(stylename=bold,
                                     defaultcellstylename='bold')
            for j, col in enumerate(row):
                try:
                    col = str(col, errors='ignore')
                except TypeError:
                    # col is already str
                    pass
                ws.addElement(table.TableColumn())

                # bold headers
                if (row_number == 1) and dataset.headers:
                    odf_row.setAttribute('stylename', bold)
                    ws.addElement(odf_row)
                    cell = table.TableCell()
                    p = text.P()
                    p.addElement(text.Span(text=col, stylename=bold))
                    cell.addElement(p)
                    odf_row.addElement(cell)

                # wrap the rest
                else:
                    try:
                        if '\n' in col:
                            ws.addElement(odf_row)
                            cell = table.TableCell()
                            cell.addElement(text.P(text=col))
                            odf_row.addElement(cell)
                        else:
                            ws.addElement(odf_row)
                            cell = table.TableCell()
                            cell.addElement(text.P(text=col))
                            odf_row.addElement(cell)
                    except TypeError:
                        ws.addElement(odf_row)
                        cell = table.TableCell()
                        cell.addElement(text.P(text=col))
                        odf_row.addElement(cell)
Ejemplo n.º 3
0
    def _render_name_freq(self, freq_table):
        # docstring inherited from base class
        def _gencouples(namefreq):
            halflen = (len(namefreq) + 1) // 2
            for i in range(halflen):
                n1, c1 = namefreq[2 * i]
                n2, c2 = None, None
                if 2 * i + 1 < len(namefreq):
                    n2, c2 = namefreq[2 * i + 1]
                yield n1, c1, n2, c2

        total = float(sum(count for _, count in freq_table))

        tbl = table.Table()
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())
        tbl.addElement(table.TableColumn())

        for name1, count1, name2, count2 in _gencouples(freq_table):

            row = table.TableRow()

            cell = table.TableCell()
            cell.addElement(text.P(text=name1 or '-'))
            row.addElement(cell)

            cell = table.TableCell()
            cell.addElement(
                text.P(text='%d (%.1f%%)' % (count1, count1 / total * 100)))
            row.addElement(cell)

            if count2 is not None:

                cell = table.TableCell()
                cell.addElement(text.P(text=name2 or '-'))
                row.addElement(cell)

                cell = table.TableCell()
                cell.addElement(
                    text.P(text='%d (%.1f%%)' %
                           (count2, count2 / total * 100)))
                row.addElement(cell)

            tbl.addElement(row)

        self.doc.text.addElement(tbl)
Ejemplo n.º 4
0
    def __call__(self):
        datatable = table.Table(name="local-table")
        if self.datasourcehaslabels in ('row', 'both'):
            t = table.TableHeaderColumns()
            t.addElement(table.TableColumn())
            datatable.addElement(t)

        t = table.TableColumns()
        if self.datasourcehaslabels in ('row', 'both'):
            t.addElement(
                table.TableColumn(numbercolumnsrepeated=str(self.numcols - 1)))
        else:
            t.addElement(
                table.TableColumn(numbercolumnsrepeated=str(self.numcols)))
        datatable.addElement(t)

        if self.datasourcehaslabels in ('column', 'both'):
            t = table.TableHeaderRows()
            datatable.addElement(t)
            tr = table.TableRow()
            t.addElement(tr)
            content = self.values[0]
            for val in content:
                tc = table.TableCell(valuetype=valuetype(val))
                tr.addElement(tc)
                tc.addElement(text.P(text=str(val)))

        t = table.TableRows()
        datatable.addElement(t)
        rownum = 0
        for content in self.values:
            if rownum == 0 and self.datasourcehaslabels in ('column', 'both'):
                rownum += 1
                continue
            tr = table.TableRow()
            t.addElement(tr)
            for val in content:
                tc = table.TableCell(valuetype=valuetype(val), value=val)
                tr.addElement(tc)
                tc.addElement(text.P(text=str(val)))
            rownum += 1
        return datatable
Ejemplo n.º 5
0
 def owriteCell(self, cell):
     t =  table.TableCell()
     p = ParagraphProxy(stylename=style.textbody)
     t.addElement(p)
     t.writeto = p
     # handle rowspan FIXME
     # 
     #rs = cell.rowspan
     #if rs:
     #    t.setAttribute(":numberrowsspanned",str(rs))
     return t    
Ejemplo n.º 6
0
def __add_cell_to_row(row,
                      cell_style,
                      text_style,
                      text: str,
                      spanned_columns=None):
    value_cell = odf_table.TableCell(valuetype="string")
    value_cell.setAttribute("stylename", cell_style)

    if spanned_columns is not None:
        value_cell.setAttribute("numbercolumnsspanned", spanned_columns)

    row.addElement(value_cell)

    __add_text_to_element(value_cell, text_style, text)
Ejemplo n.º 7
0
def __add_row_with_texts_to_table(table, text_style, cell_style, texts: list,
                                  row_length_in_cells):
    """
    В __add_row_with_text_to_table нельзя вставлять переводы строки, в этой функции можно
    """
    table_row = __add_row_to_table(table)

    value_cell = odf_table.TableCell(valuetype="string")
    value_cell.setAttribute("stylename", cell_style)
    value_cell.setAttribute("numbercolumnsspanned", row_length_in_cells)
    table_row.addElement(value_cell)

    for t in texts:
        __add_text_to_element(value_cell, text_style, t)
Ejemplo n.º 8
0
    def _write_journal(self, journal):
        path = os.path.join(
            options.REPORTS_DIR, 'Журнал {} {} {}.odt'.format(
                self.year,
                self.months[self.month],
                self.doctor[1],
            ))

        doc = opendocument.OpenDocumentText()
        table_style = style.Style(name='tableStyle',
                                  family='table',
                                  masterpagename='masterQ')
        page_layout = style.PageLayout(name='pageStyle')
        page_layout.addElement(
            style.PageLayoutProperties(
                printorientation='landscape',
                margin='0cm',
                pagewidth='290cm',
                pageheight='21cm',
            ))
        master_q = style.MasterPage(name='masterQ', pagelayoutname=page_layout)
        doc.automaticstyles.addElement(table_style)
        doc.automaticstyles.addElement(page_layout)
        doc.masterstyles.addElement(master_q)

        journal = ([['Дата', 'ФИО', 'Дата Рождения', 'Адрес', 'Заключение']] +
                   journal)

        _table = table.Table(name='journal')
        _table.addElement(
            table.TableColumn(numbercolumnsrepeated=len(journal[0])))
        for data in journal:
            row = table.TableRow()
            _table.addElement(row)
            for col in data:
                cell = table.TableCell(valuetype='string')
                cell.addElement(text.P(text=str(col or '')))
                row.addElement(cell)

        doc.text.addElement(_table)
        try:
            doc.save(path)
        except PermissionError:
            self.main_window.create_alert(
                'Файл журнала используется.\nЗакройте его и создайте снова.')
            return
        self._open(path)
Ejemplo n.º 9
0
    def __newCell__(self) -> Tuple[table.TableCell, style.Style]:
        """
        Return new cell This is created by assigning the value to the previous one.

        @return Tuple(TableCell, Style)
        """

        style_cell = style.Style(
            name="stylecell_%s_%s" % (len(self.cells_list_), self.sheet_.rowsCount()),
            family="table-cell",
        )
        if self.row_color_:  # Guardo color si hay
            style_cell.addElement(
                style.TableCellProperties(backgroundcolor="#%s" % self.row_color_)
            )

        for prop in self.property_cell_:  # Guardo prop cell si hay
            style_cell.addElement(prop)

        self.property_cell_ = []
        return table.TableCell(valuetype="string", stylename=style_cell), style_cell
Ejemplo n.º 10
0
uf = UserFieldDecls()
textdoc.text.addElement(uf)

# Add user fields
for id,transunit in body_info.items():
    uf.addElement(UserFieldDecl(name=id,valuetype="string", stringvalue=transunit['target']))
   

# Start the table, and describe the columns
mytable = table.Table(protected="true")
mytable.addElement(table.TableColumn(numbercolumnsrepeated=2,stylename=widthwide))

for id,transunit in body_info.items():
    tr = table.TableRow()
    mytable.addElement(tr)

    tc = table.TableCell(stylename=tcstyle, qattributes={(TABLENS,'protected'):'true'})
    tr.addElement(tc)
    p = P(stylename=tablecontents,text=transunit['source'])
    tc.addElement(p)

    tc = table.TableCell(qattributes={(TABLENS,'protected'):'true'})
    tr.addElement(tc)
    p = P(stylename=tablecontents)
    tc.addElement(p)
    f = UserFieldInput(name=id,description="Enter translation")
    p.addElement(f)

textdoc.text.addElement(mytable)
textdoc.save("translations.odt")
Ejemplo n.º 11
0
 def s_html_td(self, tag, attrs):
     e = table.TableCell()
     self.curr.addElement(e)
     self.curr = e
Ejemplo n.º 12
0
def create_cell(text, *args, **kwargs):
    tc = table.TableCell(*args, **kwargs)
    tc.addElement(P(text=text))
    return tc