Esempio n. 1
0
 def addEducation(self, year, grad, major):
     self.doc.append(Command("begin", ["rSection", "Education"]))
     self.doc.append(Command("EducationEntry", year))
     self.doc.append(LineBreak())
     self.doc.append("Bachelor of Science in " + major)
     self.doc.append(LineBreak())
     self.doc.append("Projected graduation date: June " + grad)
     self.doc.append(Command("end", "rSection"))
Esempio n. 2
0
    def constroiCorpo(self):

        with self.documento.create(Tabu("X[l] X[r]")) as first_page_table:
            customer = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h')
            customer.append(bold("Nome fantasia: "))
            customer.append(self.usuarioModel.nomeFantasia)
            customer.append("\n")
            customer.append(bold("CNPJ: "))
            customer.append(mascaraCNPJ(self.usuarioModel.cnpj))
            customer.append("\n")
            customer.append(bold("Endereço: "))
            if self.usuarioModel.endereco == 'None':
                customer.append('---')
            else:
                customer.append(self.usuarioModel.endereco)

            # Add branch information
            branch = MiniPage(width=NoEscape(r"0.49\textwidth"),
                              pos='t!',
                              align='r')
            branch.append(f"Total de clientes: {self.totalClientes}")
            branch.append(LineBreak())
            branch.append(f"Total de clientes Ativos: {self.clientesAtivos}")
            branch.append(LineBreak())
            branch.append(
                f"Média de clientes ativos: {round((self.clientesAtivos / self.totalClientes)*100)} % "
            )
            branch.append(LineBreak())

            first_page_table.add_row([customer, branch])
            first_page_table.add_empty_row()

        self.documento.change_document_style("firstpage")

        with self.documento.create(
                LongTabu("X[1.5l] X[2l] X[r] X[r] X[r]",
                         row_height=1.5)) as data_table:
            data_table.add_row([
                "Última atualização", "Nome do cliente", "Turma", "credits($)",
                "balance($)"
            ],
                               mapper=bold,
                               color="lightgray")
            data_table.add_empty_row()
            data_table.add_hline()
            for i, cliente in enumerate(self.clientesList):
                clienteRow = list()
                clienteRow.append(mascaraMeses(cliente[13]))
                clienteRow.append(cliente[1] + ' ' + cliente[2])
                clienteRow.append('Teste 1')
                clienteRow.append('Teste 2')
                clienteRow.append('Teste 3')
                if (i % 2) == 0:
                    data_table.add_row(clienteRow, color="lightgray")
                else:
                    data_table.add_row(clienteRow)
Esempio n. 3
0
    def addProjects(self, projects):
        self.doc.append(Command("begin", ["rSection", "Projects"]))
        for i in range(len(projects)):
            self.doc.append(Command("BoldHeading", projects[i][0]))
            self.doc.append(LineBreak())
            self.doc.append(projects[i][1])

            if i < len(projects) - 1:
                self.doc.append(LineBreak())
                self.doc.append(LineBreak())

        self.doc.append(Command("end", "rSection"))
Esempio n. 4
0
    def create_comp_table(self):

        self.append(LineBreak())
        self.append(Command("scriptsize"))
        total_concp = 0

        with self.create(
                Tabu(r"|X[2]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|",
                     to=r"\textwidth",
                     width=8)) as data_table:
            data_table.add_hline()
            data_table.add_row(
                [
                    "Компонент", "Сод., \%", "$C_i$", "$X_i$", "$Z_i$",
                    "$\lg W_i$", "$W_i$", "$K_i$"
                ],
                #mapper=bold,
                color="gray",
                escape=False)
            data_table.add_hline()
            for key, val in self.components.items():

                data_table.add_row([
                    key, val['concp'], val['concr'], val['xi'], val['zi'],
                    val['lgw'], val['w'], val['k']
                ])
                total_concp += float(val['concp'])

                data_table.add_hline()

            data_table.add_row(("Компонентов учтено", str(total_concp) + " %",
                                MultiColumn(6, align='r|', data='')))
            data_table.add_hline()
            data_table.add_row([
                MultiColumn(7,
                            align='|r|',
                            data='Показатель К степени опасности отхода:'),
                self.k
            ])
            data_table.add_hline()
            data_table.add_row((MultiColumn(7,
                                            align='|r|',
                                            data='Класс опасности отхода:'),
                                self.safety_class))
            data_table.add_hline()

        self.append(Command("normalsize"))
        self.append(Command("bigskip"))
        self.append(LineBreak())
Esempio n. 5
0
    def constroiCabecalho(self):
        self.firstPage = PageStyle('firstpage')

        with self.firstPage.create(Head("L")) as header_left:
            with header_left.create(
                    MiniPage(width=NoEscape(r"0.3\textwidth"),
                             pos='l')) as logo_wrapper:
                with logo_wrapper.create(
                        Tabularx('X X',
                                 width_argument=NoEscape(
                                     r"0.5\textwidth"))) as logo:
                    logo.add_row([MultiColumn(2, align='c')])
                    logo_file = os.path.join(os.getcwd(), 'Telas', 'Imagens',
                                             'nautilusDash.png')
                    imagem = StandAloneGraphic(image_options="width=36px",
                                               filename=logo_file)
                    textLogo = MiniPage(width=NoEscape(r"0.6\textwidth"),
                                        content_pos='t',
                                        align='l')

                    textLogo.append(LargeText(bold('Nautilus')))
                    textLogo.append(LineBreak())
                    textLogo.append('Navegue sem medo')
                    textLogo.append(LineBreak())
                    textLogo.append('\n')

                    logo.add_row([imagem, textLogo])

        with self.firstPage.create(Head("C")) as headerCenter:
            with headerCenter.create(
                    MiniPage(width=NoEscape(r"0.4\textwidth"),
                             pos='c')) as centro:
                centro.append(LargeText(bold('Relatório geral de clientes')))

        # Add document title
        with self.firstPage.create(Head("R")) as right_header:
            with right_header.create(
                    MiniPage(width=NoEscape(r"0.3\textwidth"),
                             pos='R',
                             align='r')) as title_wrapper:
                title_wrapper.append(
                    LargeText(bold(self.usuarioModel.nomeEmpresa)))
                title_wrapper.append(LineBreak())
                title_wrapper.append(
                    MediumText(mascaraMeses(data=datetime.date.today())))
    def print_component_data(self, name, props):
        self.append(LineBreak())
        self.append(f'Первичные показатели опасности компонента: {name}')
        self.append(LineBreak())
        self.append(LineBreak())
        self.append(Command("scriptsize"))
        if len(props) < 6:
            Binf = 1
        elif 6 <= len(props) <= 8:
            Binf = 2
        elif 8 < len(props) <= 10:
            Binf = 3
        else:
            Binf = 4
        with self.create(
                Tabu(r"|X[3]|X[c]|X[c]|X[c]|", to=r"\textwidth",
                     width=4)) as data_table:
            data_table.add_hline()
            data_table.add_row([
                "Показатель опасности", "Значения показателя", "Балл",
                "Источник информации"
            ],
                               mapper=bold,
                               color="lightgray")
            data_table.add_hline()

            for prop in props:
                sources = ""
                for litsource in prop['literature_source']:
                    self.litsources[litsource['name']] = litsource['latexpart']
                    sources += "\\" + f'cite{{{litsource["name"]}}}'

                data_table.add_row([
                    prop['name'], prop['value'], prop['score'],
                    NoEscape(sources)
                ])
                data_table.add_hline()
            data_table.add_row(("Показатель информационного обеспечения",
                                MultiColumn(3,
                                            align='l|',
                                            data=Math(data=f"Binf={Binf}",
                                                      inline=True))))
            data_table.add_hline()
        self.append(Command("normalsize"))
        self.append(LineBreak())
def add_left_column(doc):
    with column_with_margin(doc) as page:
        with page.create(Center()) as c:
            c.append(
                StandAloneGraphic(image_options="width=130px",
                                  filename=os.path.join(BASE_DIR, "logo.png")))
            add_space_plus_new_line(c, 1.5)
            c.append(MediumText(bold("Triple Verified Grading Report")))
            add_space_plus_new_line(c, 0.7)
            c.append(MediumText("No.: G00000013"))
            add_space_plus_new_line(c, 0.5)

        table = Tabular("l l", row_height=1.3)
        qr_code = StandAloneGraphic(image_options="width=50px",
                                    filename=os.path.join(
                                        BASE_DIR, "qr_code.png"))
        table.add_row(MultiRow(3, data=qr_code), "View digital report at:")
        table.add_row(
            "",
            hyperlink("https://www.gradia.net/verify/G00000013",
                      "gradia.net/verify"))
        table.add_row("", "and also on the blockchain")
        page.append(table)

        # we want to match this with the center line
        add_space_plus_new_line(page, 2.5)

        make_heading_divider(page, "report details")
        table = Tabular("l l", row_height=1.5, col_space="1em")
        table.add_row("Origin Testing", bold("Natural"))
        table.add_row("Shape & Cutting", bold("Round Brilliant"))
        table.add_row("Measurements", bold("2.89 - 2.92 x 1.802"))
        page.append(table)

        add_space_plus_new_line(page, 2)
        make_heading_divider(page, "diamond attributes")

        table = Tabular("l l l l", row_height=1.5, col_space="1em")
        table.add_row("Carat", "Color", "Clarity", "Fluoresence")
        table.add_row(bold("0.09"), bold("F"), bold("VS2"), bold("None"))
        page.append(table)
        add_space_plus_new_line(page, 1.5)
        table = Tabular("l l l", row_height=1.5, col_space="1em")
        table.add_row("Cut", "Polish", "Symmetry")
        table.add_row(bold("Very Good"), bold("Very Good"), bold("Good"))
        page.append(table)

        add_space_plus_new_line(page, 2)
        make_heading_divider(page, "comments")
        page.append(bold("This is a sample report."))
        page.append(LineBreak())
        page.append(bold("This is a second sentence."))
Esempio n. 8
0
    def print_component_data(self, props):

        with self.create(
                Tabu(r"|X[c]|X[c]|X[c]|X[c]|", to=r"\textwidth",
                     width=4)) as data_table:
            data_table.add_hline()
            data_table.add_row([
                "Показатель опасности", "Значения показателя", "Балл",
                "Источник информации"
            ],
                               mapper=bold,
                               color="lightgray")
            data_table.add_hline()
            for name, value in props.items():
                data_table.add_row(
                    [name, value['value'], value['score'], value['litsource']])
                data_table.add_hline()

        self.append(LineBreak())
Esempio n. 9
0
    def fill_document(self):
        """Add a section, a subsection and some text to the document."""
        self.append(Section('Протокол расчета класса опасности отхода'))
        self.create_head("Наименование отхода:", self.name)
        self.append(Command("bigskip"))
        self.append(LineBreak())
        if self.fkko:
            self.create_head("Код ФККО (2020):", self.fkko)
            self.append(Command("bigskip"))
            self.append(LineBreak())
        self.append("Расчет класса опасности отхода выполнен в соответствии с \
        <<Критериями отнесения отходов к I-V классам опасности по степени негативного воздействия на окружающую среду>>, \
        утвержденными приказом МПР России от 04 декабря 2014 г. № 536.")

        self.append(Command("bigskip"))
        self.append(Command("noindent"))

        self.create_comp_table()

        self.append("Показатель ")
        self.append(Math(data="K", inline=True))
        self.append(
            " степени опасности отхода для окружающей среды рассчитывается по следующей формуле:"
        )
        self.append(Math(data="K=K_1+K_2+\dots +K_n,", escape=False))
        self.append("где ")
        self.append(
            Math(data="K_1, K_2, \ldots, K_n", inline=True, escape=False))
        self.append(
            NoEscape(
                " --- показатели степени опасности отдельных компонентов отхода для окружающей среды, "
            ))

        self.append(Math(data="n ", inline=True))
        self.append(NoEscape(" --- количество компонентов отхода."))
        self.append(LineBreak())
        self.append(
            "Отнесение отходов к классу опасности расчетным методом по показателю\
         степени опасности отхода для окружающей среды осуществляется в соответствии с таблицей:"
        )

        self.append(LineBreak())
        self.append(Command("bigskip"))
        self.append(LineBreak())
        self.append(Command("noindent"))

        with self.create(Tabu(r"|X[c]|X[c]|", to=r"\textwidth",
                              width=2)) as data_table:
            data_table.add_hline()
            data_table.add_row([
                "Класс опасности отхода",
                "Степень опасности 	отхода для окружающей среды"
            ],
                               mapper=bold,
                               color="lightgray")
            data_table.add_hline()
            data_table.add_row(["I", "$10^4 \leq  K < 10^6 $"], escape=False)
            data_table.add_hline()
            data_table.add_row(["II", "$10^3 \leq  K < 10^4 $"], escape=False)
            data_table.add_hline()
            data_table.add_row(["III", "$10^2 \leq   K  < 10^3 $"],
                               escape=False)
            data_table.add_hline()
            data_table.add_row(["IV", "$10 \leq  K < 10^2 $"], escape=False)
            data_table.add_hline()

            data_table.add_row(["V", "$K < 10 $"], escape=False)
            data_table.add_hline()
        self.append(Command("bigskip"))
        self.append(LineBreak())

        self.append(
            NoEscape(
                r"""Степень опасности компонента отхода для окружающей среды $K_i$
        рассчитывается как отношение концентрации компонента отхода $C_i$ к коэффициенту его степени опасности для окружающей среды $W_i$:
        $$K_i = \frac{C_i}{W_i},$$
        где	$C_i$ --- концентрация $i$--тогo компонента в отходе [мг/кг]; 

        $W_i$ --- коэффициент степени опасности $i$-того компонента отхода для окружающей среды.
        """))

        if len(self.safe_components) == 1:
            string = f"В соответствии с компонент {self.safe_components[0]['name'].lower()} относится"

        elif len(self.safe_components) > 1:
            comps = ""
            for comp in self.safe_components[:-1]:
                comps = comps + comp["name"] + ", "
            comps += self.safe_components[-1]["name"]
            string = f"В соответствии с компоненты: {comps.lower()} относятся"
        else:
            string = ""

        if string:
            self.append(
                NoEscape(
                    string +
                    r""" к практически неопасным компонентам со средним баллом 
        $X_i$, равным 4 и, следовательно, коэффициентом степени опасности для ОПС $W_i$, равным $10^6$."""
                ))
        self.append(LineBreak())
        self.append(
            """Для определения коэффициента степени опасности компонента отхода \
         для окружающей среды по каждому компоненту отхода устанавливаются степени их \
         опасности для окружающей среды для различных компонентов природной среды."""
        )
        self.append(LineBreak())

        for name, data in self.components.items():
            if data['props']:
                self.append(LineBreak())
                self.append(
                    f"Первичные показатели опасности компонента: {name}")
                self.append(LineBreak())
                self.print_component_data(data['props'])

        self.append(Command("bigskip"))
        self.generate_pdf(f'/tmp/temp{self.filename}', clean_tex=False)
    def create_comp_table(self):

        self.append(LineBreak())
        self.append(Command("scriptsize"))
        total_concp = 0
        has_known_components = False  # flag that the waste has components
        #has_soil_components = False

        with self.create(
                Tabu(r"|X[2.2]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|X[c]|",
                     to=r"\textwidth",
                     width=8)) as data_table:
            data_table.add_hline()
            data_table.add_row(
                [
                    "Компонент", "Сод., \%", "$C_i$, мг/кг", "$X_i$", "$Z_i$",
                    "$\lg W_i$", "$W_i$, мг/кг", "$K_i$"
                ],
                #mapper=bold,
                color="gray",
                escape=False)
            data_table.add_hline()
            for compnt in self.components:
                concp = float(compnt['concp'])
                concr = float(compnt['concr'])
                k = float(compnt['k'])
                name = compnt['component']['name']
                x = compnt['component']['get_x']
                z = compnt['component']['get_z']
                log_w = compnt['component']['get_log_w']
                w = compnt['component']['get_w']

                x_lit_source = compnt['component']['x_value_lit_source']
                binf = compnt['component']['Binf']
                if compnt['component']['props']:
                    self.props[name] = compnt['component']['props']

            #  land_concentration = compnt['component']['land_concentration']
            # land_concentration_lit_source = compnt['component']['land_concentration_lit_source']

                if x_lit_source:
                    name = NoEscape(name + r"\footnotemark[1]")
                    has_known_components = True
            # elif val['has_soil_c']:
            #     key2 = NoEscape(key + r"\footnotemark[2]")
            #     if has_soil_components:
            #         key2 =  NoEscape(key + r"\footnotemark[2]")
            #     has_soil_components = True
            # else:
            #     key2=key

                data_table.add_row([
                    name,
                    "%.2f" % concp,
                    "%.0f" % concr,
                    "%.2f" % x,
                    "%.2f" % z,
                    "%.2f" % log_w,
                    "%.0f" % w,
                    "%.1f" % k
                ])
                total_concp += concp

                data_table.add_hline()

            data_table.add_row(
                ("Компонентов учтено", "%.0f" % total_concp + " %",
                 MultiColumn(6, align='r|', data='')))
            data_table.add_hline()
            data_table.add_row([
                MultiColumn(7,
                            align='|r|',
                            data='Показатель К степени опасности отхода:'),
                "%.1f" % self.k
            ])
            data_table.add_hline()
            data_table.add_row((MultiColumn(7,
                                            align='|r|',
                                            data='Класс опасности отхода:'),
                                self.safety_class))
            data_table.add_hline()

        if has_known_components:
            self.append(
                NoEscape(
                    r"\footnotetext[1]{Данные приведены согласно приказу Министерства природных ресурсов и экологии РФ от 4 декабря 2014 г. N 536}"
                ))
    #   if has_soil_components:

    #        self.append(NoEscape(r"\footnotetext[2]{Концентрация не превышает содержание в основных типах почв, принято W=10\textsuperscript{6} (МПР 536)}"))

        self.append(Command("normalsize"))
        self.append(Command("bigskip"))
        self.append(LineBreak())
    def fill_document(self):
        """Add a section, a subsection and some text to the document."""
        self.append(Section('Протокол расчета класса опасности отхода'))
        self.create_head("Наименование отхода:", self.name)
        self.append(Command("bigskip"))
        self.append(LineBreak())
        if self.fkko:
            self.create_head("Код ФККО:", self.fkko)
            self.append(Command("bigskip"))
            self.append(LineBreak())
        self.append("Расчет класса опасности отхода выполнен в соответствии с \
        <<Критериями отнесения отходов к I-V классам опасности по степени негативного воздействия на окружающую среду>>, \
        утвержденными приказом МПР России от 04 декабря 2014 г. № 536.")

        self.append(Command("bigskip"))
        self.append(Command("noindent"))

        self.create_comp_table()

        self.append("Показатель ")
        self.append(Math(data="K", inline=True))
        self.append(
            " степени опасности отхода для окружающей среды рассчитывается по следующей формуле:"
        )
        self.append(Math(data="K=K_1+K_2+\dots +K_n,", escape=False))
        self.append("где ")
        self.append(
            Math(data="K_1, K_2, \ldots, K_n", inline=True, escape=False))
        self.append(
            NoEscape(
                " --- показатели степени опасности отдельных компонентов отхода для окружающей среды, "
            ))

        self.append(Math(data=" n ", inline=True))
        self.append(NoEscape(" --- количество компонентов отхода."))
        self.append(LineBreak())
        self.append(
            "Отнесение отходов к классу опасности расчетным методом по показателю\
         степени опасности отхода для окружающей среды осуществляется в соответствии с таблицей:"
        )

        self.append(LineBreak())
        self.append(Command("bigskip"))
        self.append(LineBreak())
        self.append(Command("noindent"))

        with self.create(Tabu(r"|X[c]|X[c]|", to=r"\textwidth",
                              width=2)) as data_table:
            data_table.add_hline()
            data_table.add_row([
                "Класс опасности отхода",
                "Степень опасности 	отхода для окружающей среды"
            ],
                               mapper=bold,
                               color="lightgray")
            data_table.add_hline()
            data_table.add_row(["I", "$10^4 \leq  K < 10^6 $"], escape=False)
            data_table.add_hline()
            data_table.add_row(["II", "$10^3 \leq  K < 10^4 $"], escape=False)
            data_table.add_hline()
            data_table.add_row(["III", "$10^2 \leq   K  < 10^3 $"],
                               escape=False)
            data_table.add_hline()
            data_table.add_row(["IV", "$10 < K < 10^2 $"], escape=False)
            data_table.add_hline()

            data_table.add_row(["V", "$K \leq 10 $"], escape=False)
            data_table.add_hline()
        self.append(Command("bigskip"))
        self.append(LineBreak())

        self.append(
            NoEscape(
                r"""Степень опасности компонента отхода для окружающей среды $K_i$
        рассчитывается как отношение концентрации компонента отхода $C_i$ к коэффициенту его степени опасности для окружающей среды $W_i$:
        $$K_i = \frac{C_i}{W_i},$$
        где	$C_i$ --- концентрация $i$--тогo компонента в отходе [мг/кг]; 
         $W_i$ --- коэффициент степени опасности $i$-того компонента отхода для окружающей среды, [мг/кг].
        """))

        self.append(LineBreak())
        self.append(
            """Для определения коэффициента степени опасности компонента отхода \
         для окружающей среды по каждому компоненту отхода устанавливаются степени их \
         опасности для окружающей среды для различных компонентов природной среды."""
        )
        self.append(LineBreak())

        for name, props in self.props.items():
            self.print_component_data(name, props)

        self.create_bibliography()

        self.append(Command("bigskip"))
        self.print_shortcuts()
def add_space_plus_new_line(doc, ems):
    doc.append(VerticalSpace(f"{ems}em"))
    doc.append(LineBreak())