def printSalary(request, id): teacher = Teacher.objects.get(pk=id) all_add = tAddEntry.objects.filter(teacher__id=id) all_del = tDelEntry.objects.filter(teacher__id=id) salary = Salary.objects.get(teacher=teacher) length = len(all_add) + 1 length2 = len(all_del) + 1 user = User.objects.get(pk=1) add = 0 sub = 0 total = 0 geometry_options = { "margin": "1in", "textwidth": "2in", "textheight": "2in", "headheight": "0pt", "headsep": "0pt", "footskip": "0pt" } doc = Document(geometry_options=geometry_options) doc.preamble.append(Command("usepackage", "times")) doc.preamble.append(Command("usepackage", "graphicx")) doc.documentclass = Command('documentclass', options=['11pt'], arguments=['article']) with doc.create(Tabu(" X[c] X[2r] ")) as table: table.add_row( (LargeText(bold(teacher.lastname + "," + teacher.firstname))), "") table.add_empty_row() with doc.create(Tabu(" | X[c] | X[2r] | ")) as table: table.add_hline() table.add_row(bold("Allowance"), "PHP " + str(user.amount)) table.add_hline() table.add_row(bold("Additional"), "") for i in all_add: table.add_empty_row() table.add_row(i.name, "PHP " + str(i.value)) table.add_hline() add = add + i.value table.add_row(bold("Deduction"), "") for i in all_del: table.add_empty_row() table.add_row(i.name, "PHP " + str(i.value)) table.add_hline() sub = sub + i.value total = user.amount + add - sub table.add_row(bold("TOTAL"), "PHP " + str(total)) table.add_hline() doc.generate_pdf(teacher.lastname + "_salary", clean_tex=False) image_data = open(teacher.lastname + "_salary.pdf", "rb") return HttpResponse(image_data, content_type='application/pdf')
def _add_timing_report(self, doc: Document, title: str = 'Timing Report') -> None: """Add timing report sub-section to document. :param doc: :param title: :return: """ with doc.create(Section(title)): doc.append( 'Here is a summary of the execution time of various parts of the algorithm.' ) with doc.create(Center()) as centered: with centered.create(Tabu("x[r] x[r] x[r]", to="4in")) as data_table: header_row = [ "Section", "Time Taken (s)", "Time Taken Percentage" ] data_table.add_row(header_row, mapper=[bold]) data_table.add_hline() labels, x, x_pct = self.experiment.get_timing_report() # sort by time for label, sec, pct in sorted(zip(labels, x, x_pct), key=lambda v: v[1], reverse=True): row = ('%s %0.2f %0.2f%%' % (label, sec, pct)).split(' ') data_table.add_row(row)
def genenerate_tabus(): geometry_options = { "landscape": True, "margin": "1.5in", "headheight": "20pt", "headsep": "10pt", "includeheadfoot": True } doc = Document(page_numbers=True, geometry_options=geometry_options) # Generate data table with 'tight' columns fmt = "X[r] X[r] X[r] X[r] X[r] X[r]" with doc.create(LongTabu(fmt, spread="0pt")) as data_table: header_row1 = ["Prov", "Num", "CurBal", "IntPay", "Total", "IntR"] data_table.add_row(header_row1, mapper=[bold]) data_table.add_hline() data_table.add_empty_row() data_table.end_table_header() data_table.add_row( ["Prov", "Num", "CurBal", "IntPay", "Total", "IntR"]) row = [ "aduiashdDASDASDASDSADSAuiasuidhasuidhasi", "9", "$100", "%10", "$1000", "Test" ] for i in range(40): data_table.add_row(row) with doc.create(Center()) as centered: with centered.create(Tabu("X[r] X[r]", spread="1in")) as data_table: header_row1 = ["X", "Y"] data_table.add_row(header_row1, mapper=[bold]) data_table.add_hline() row = [randint(0, 1000), randint(0, 1000)] for i in range(4): data_table.add_row(row) with doc.create(Center()) as centered: with centered.create(Tabu("X[r] X[r]", to="4in")) as data_table: header_row1 = ["X", "Y"] data_table.add_row(header_row1, mapper=[bold]) data_table.add_hline() row = [randint(0, 1000), randint(0, 1000)] for i in range(4): data_table.add_row(row) doc.generate_pdf("tabus", clean_tex=False)
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)
def quadro_empresa(self, ppra): with self.create(Tabu("|X[4,l]|X[6,l]|")) as tabela_empresa: tabela_empresa.add_hline() tabela_empresa.add_row((MultiColumn( 2, align='|c|', data=bold('COMPROVANTE DE INSCRIÇÃO E SITUAÇÃO CADASTRAL')), )) tabela_empresa.add_hline() tabela_empresa.add_row((bold('CNPJ'), ppra['CNPJFilial'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Data de abertura'), ppra['data'])) tabela_empresa.add_hline() tabela_empresa.add_row( (bold('Nome empresarial'), ppra['nomeEmpresa'].capitalize())) tabela_empresa.add_hline() tabela_empresa.add_row( (bold('Título do estabelecimento (Nome Fantasia)'), ppra['nomeFilial'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold( 'Código e descrição da atividade econômica principal CNAE'), ppra['CNAE'])) tabela_empresa.add_hline() tabela_empresa.add_row( (bold('Grau de risco pela NR'), ppra['grauRisco'])) tabela_empresa.add_hline() tabela_empresa.add_row( (bold('Número de funcionários:'), ppra['numFunc'])) tabela_empresa.add_hline() tabela_empresa.add_row( (bold('Horário de Trabalho'), ppra['horaTrabalho'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Atividade'), ppra['atividade'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Logradouro'), ppra['logradouro'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Número'), ppra['numero'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Complemento'), ppra['complemento'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Bairro'), ppra['bairro'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('CEP'), ppra['cep'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Município'), ppra['cidade'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('UF'), ppra['uf'])) tabela_empresa.add_hline() tabela_empresa.add_row((bold('Telefone'), ppra['telefone'])) tabela_empresa.add_hline()
def _add_comparison(self, doc: Document, title: str = 'Comparison to Other Models') -> None: """Add comparison sub-section to document. :param doc: :param title: :return: """ with doc.create(Subsection(title)): doc.append( 'This table contains the RMSE of the best model and others.') doc.append("\n") doc.append(VerticalSpace("1pt")) doc.append(LineBreak()) with doc.create(Center()) as centered: with centered.create(Tabu("|c|c|c|c|c|", to="4in")) as data_table: header_row = [ "Best Model", "Linear Regression", "Support Vector Regression", "GP (RBF kernel)", "k-NN Regression" ] data_table.add_row(header_row, mapper=[bold]) data_table.add_hline() rmse_best_model = compute_gpy_model_rmse( self.best_model, self.x_test, self.y_test) rmse_lr = rmse_lin_reg(self.x_train, self.y_train, self.x_test, self.y_test) rmse_svm = rmse_svr(self.x_train, self.y_train, self.x_test, self.y_test) se_rmse = rmse_rbf(self.x_train, self.y_train, self.x_test, self.y_test) knn_rmse = rmse_knn(self.x_train, self.y_train, self.x_test, self.y_test) row = ('%0.3f %0.3f %0.3f %0.3f %0.3f' % (rmse_best_model, rmse_lr, rmse_svm, se_rmse, knn_rmse)).split(' ') data_table.add_row(row)
def test_table(): # Tabular t = Tabular(table_spec='|c|c|', data=None, pos=None, width=2) t.add_hline(start=None, end=None) t.add_row((1, 2), escape=False, strict=True, mapper=[bold]) t.add_row(1, 2, escape=False, strict=True, mapper=[bold]) # MultiColumn/MultiRow. t.add_row((MultiColumn(size=2, align='|c|', data='MultiColumn'), ), strict=True) # One multiRow-cell in that table would not be proper LaTeX, # so strict is set to False t.add_row((MultiRow(size=2, width='*', data='MultiRow'), ), strict=False) repr(t) # TabularX tabularx = Tabularx(table_spec='X X X', width_argument=NoEscape(r"\textwidth")) tabularx.add_row(["test1", "test2", "test3"]) # Long Table longtable = LongTable(table_spec='c c c') longtable.add_row(["test", "test2", "test3"]) longtable.end_table_header() # Colored Tabu coloredtable = Tabu(table_spec='X[c] X[c]') coloredtable.add_row(["test", "test2"], color="gray", mapper=bold) # Colored Tabularx coloredtable = Tabularx(table_spec='X[c] X[c]') coloredtable.add_row(["test", "test2"], color="gray", mapper=bold) # Column column = ColumnType("R", "X", r"\raggedleft", parameters=2) repr(column)
def _add_model_summary(self, doc: Document, title: str = 'Best Model Summary') -> None: """Add model summary sub-section to document. :param doc: :param title: :return: """ with doc.create(Subsection(title)): doc.append('This table contains various scores of the best model.') doc.append("\n") doc.append(VerticalSpace("1pt")) doc.append(LineBreak()) with doc.create(Center()) as centered: with centered.create(Tabu("|c|c|c|c|c|c|", to="4in")) as data_table: header_row = [ "NLL", "NLL (normalized)", "Mean NLPD", "BIC", "AIC", "PL2" ] data_table.add_row(header_row, mapper=[bold]) data_table.add_hline() nll = -self.best_model.log_likelihood() nll_norm = log_likelihood_normalized(self.best_model) mean_nlpd = np.mean( -self.best_model.log_predictive_density( self.x_test, self.y_test)) aic = AIC(self.best_model) bic = BIC(self.best_model) pl2_score = pl2(self.best_model) row = ('%0.3f %0.3f %0.3f %0.3f %0.3f %0.3f' % (nll, nll_norm, mean_nlpd, bic, aic, pl2_score)).split(' ') data_table.add_row(row)
def test_table(): # Tabular t = Tabular(table_spec='|c|c|', data=None, pos=None, width=2) t.add_hline(start=None, end=None) t.add_row((1, 2), escape=False, strict=True, mapper=[bold]) t.add_row(1, 2, escape=False, strict=True, mapper=[bold]) # MultiColumn/MultiRow. t.add_row((MultiColumn(size=2, align='|c|', data='MultiColumn'),), strict=True) # One multiRow-cell in that table would not be proper LaTeX, # so strict is set to False t.add_row((MultiRow(size=2, width='*', data='MultiRow'),), strict=False) repr(t) # TabularX tabularx = Tabularx(table_spec='X X X', width_argument=NoEscape(r"\textwidth")) tabularx.add_row(["test1", "test2", "test3"]) # Long Table longtable = LongTable(table_spec='c c c') longtable.add_row(["test", "test2", "test3"]) longtable.end_table_header() # Colored Tabu coloredtable = Tabu(table_spec='X[c] X[c]') coloredtable.add_row(["test", "test2"], color="gray", mapper=bold) # Colored Tabularx coloredtable = Tabularx(table_spec='X[c] X[c]') coloredtable.add_row(["test", "test2"], color="gray", mapper=bold) # Column column = ColumnType("R", "X", r"\raggedleft", parameters=2) repr(column)
def general_report(complete, fails, matchIsolates, metadata, metaDf, args): newisolates = list(set(matchIsolates).difference(set(complete))) """ todo input dict of id to isolates cclis = get_merge_cclis(conn,cc,level,args.appname).split(",") """ doc = Multistrain('tgbonum') # Call function to add text # doc.fill_document() tp = "" lev = "" if args.stlev: tp = "ST" lev = args.stlev if args.cclev: tp = "CC" lev = args.cclev if args.odclev: tp = "ODC" lev = args.odclev search_restrictions = searchRestrictionList(args) # Add stuff to the document timerange="all",year="all",country="all",continent="all"postcode="all",source="all",sourcetype="all",host="all",disease="all" if not args.identifier: with doc.create(Section('Search Settings')): doc.append( 'Database was searched using {type} at level {lev}{restrict}'. format(type=tp, lev=lev, restrict=search_restrictions)) if args.list or args.file: with doc.create(Subsection('Input Isolates')): doc.append( 'Successfully processed isolates:\n {}\n'.format( ", ".join(complete))) doc.append('Failed isolates:\n') if len(list(fails.keys())) != 0: fmt = "X[l] X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: header_row1 = ["Isolate", "Failure Reason"] data_table.add_row(MultiColumn(1, data=header_row1)) data_table.add_hline() for reason in fails: for isolate in fails[reason]: d = [isolate, reason] data_table.add_row(MultiColumn(2, data=d)) else: doc.append('None\n') with doc.create(Subsection('Matching Isolates')): if len(newisolates) > 40: doc.append( 'The above isolates matched to {no} other isolates \n'. format(no=len(newisolates))) else: doc.append( 'The above isolates matched to the following {no} isolates \n' .format(no=len(newisolates))) fmt = "X[l]X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: search_level = tp + lev header_row1 = ["Name", search_level] data_table.add_row(MultiColumn(2, data=header_row1)) data_table.add_hline() sorted_isolates = sorted( newisolates, key=lambda i: int(metadata['used_id'][i])) print(newisolates) print(sorted_isolates) for i in sorted_isolates: isolate_used_id = metadata['used_id'][i] data = [i, isolate_used_id] data_table.add_row(MultiColumn(2, data=data)) else: with doc.create(Section('Search Settings')): doc.append( 'Database was searched using {type}={ident} at level {lev}{restrict}' .format(type=tp, ident=args.identifier, lev=lev, restrict=search_restrictions)) with doc.create(Subsection('Matching Isolates')): if len(newisolates) > 40: doc.append( 'The above settings matched to {no} other isolates \n'. format(no=len(newisolates))) else: doc.append( 'The above settings matched to the following {no} isolates \n' .format(no=len(newisolates))) doc.append(", ".join(newisolates)) fmt = "X[l]X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: search_level = tp + lev header_row1 = ["Name", search_level] data_table.add_row(MultiColumn(2, data=header_row1)) data_table.add_hline() sorted_isolates = sorted( newisolates, key=lambda i: int(metadata['used_id'][i])) print(newisolates) print(sorted_isolates) for i in sorted_isolates: isolate_used_id = metadata['used_id'][i] data = [i, isolate_used_id] data_table.add_row(MultiColumn(2, data=data)) with doc.create(Section('Graph By Year')): with doc.create(TikZ()): plot_options = 'height=4cm, width=6cm, grid=major' with doc.create(Axis(options=plot_options)) as plot: plot.append(Plot(name='model', func='-x^5 - 242')) plot.append(Plot(name='estimate', coordinates=coordinates)) # Generate data table with 'tight' columns # with doc.create(Center()) as centered: # with centered.create(Tabu("X[r] X[r]", spread="1in")) as data_table: # header_row1 = ["X", "Y"] # data_table.add_row(header_row1, mapper=[bold]) # data_table.add_hline() # row = [randint(0, 1000), randint(0, 1000)] # for i in range(4): # data_table.add_row(row) # # with doc.create(Center()) as centered: # with centered.create(Tabu("X[r] X[r]", to="4in")) as data_table: # header_row1 = ["X", "Y"] # data_table.add_row(header_row1, mapper=[bold]) # data_table.add_hline() # row = [randint(0, 1000), randint(0, 1000)] # for i in range(4): # data_table.add_row(row) doc.generate_pdf('MGT report', clean_tex=False) # make pdf tex = doc.dumps() # make latex file
def generate_unique(): geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c')) as logo_wrapper: logo_file = os.path.join(os.path.dirname(__file__), 'sample-logo.png') logo_wrapper.append( StandAloneGraphic(image_options="width=120px", filename=logo_file)) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='r')) as title_wrapper: title_wrapper.append(LargeText(bold("Bank Account Statement"))) title_wrapper.append(LineBreak()) title_wrapper.append(MediumText(bold("Date"))) # Add footer with first_page.create(Foot("C")) as footer: message = "Important message please read" with footer.create( Tabularx( "X X X X", width_argument=NoEscape(r"\textwidth"))) as footer_table: footer_table.add_row( [MultiColumn(4, align='l', data=TextColor("blue", message))]) footer_table.add_hline(color="blue") footer_table.add_empty_row() branch_address = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t') branch_address.append("960 - 22nd street east") branch_address.append("\n") branch_address.append("Saskatoon, SK") document_details = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t', align='r') document_details.append("1000") document_details.append(LineBreak()) document_details.append(simple_page_number()) footer_table.add_row([ branch_address, branch_address, branch_address, document_details ]) doc.preamble.append(first_page) # End first page style # Add customer information with doc.create(Tabu("X[l] X[r]")) as first_page_table: customer = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') customer.append("Verna Volcano") customer.append("\n") customer.append("For some Person") customer.append("\n") customer.append("Address1") customer.append("\n") customer.append("Address2") customer.append("\n") customer.append("Address3") # Add branch information branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') branch.append("Branch no.") branch.append(LineBreak()) branch.append(bold("1181...")) branch.append(LineBreak()) branch.append(bold("TIB Cheque")) first_page_table.add_row([customer, branch]) first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") # Add statement table with doc.create(LongTabu("X[l] X[2l] X[r] X[r] X[r]", row_height=1.5)) as data_table: data_table.add_row( ["date", "description", "debits($)", "credits($)", "balance($)"], mapper=bold, color="lightgray") data_table.add_empty_row() data_table.add_hline() row = ["2016-JUN-01", "Test", "$100", "$1000", "-$900"] for i in range(30): if (i % 2) == 0: data_table.add_row(row, color="lightgray") else: data_table.add_row(row) doc.append(NewPage()) # Add cheque images with doc.create(LongTabu("X[c] X[c]")) as cheque_table: cheque_file = os.path.join(os.path.dirname(__file__), 'chequeexample.png') cheque = StandAloneGraphic(cheque_file, image_options="width=200px") for i in range(0, 20): cheque_table.add_row([cheque, cheque]) doc.generate_pdf("complex_report", clean_tex=False)
def generate_unique(cpm): geometry_options = { "head": "60pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) first_page = PageStyle("firstpage") with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='L')) as logo_wrapper: logo_file = os.path.join(current_app.root_path, "static/logo/sf.png") logo_wrapper.append( StandAloneGraphic(image_options="width=120px", filename=logo_file)) with first_page.create(Head("R")) as header_right: with header_right.create( MiniPage(width=NoEscape(r'0.49\textwidth'), pos='c', align='r')) as wrapper_right: wrapper_right.append(LargeText(bold('SOCIALFISH'))) wrapper_right.append(LineBreak()) wrapper_right.append(MediumText(bold('UNDEADSEC'))) wrapper_right.append(LineBreak()) wrapper_right.append(NoEscape(r'\today')) with first_page.create(Head('C')) as header_center: header_center.append('CAPTURE REPORT') with first_page.create(Foot("C")) as footer: message = "Important message please read" doc.preamble.append(first_page) with doc.create(Tabu("X[l] X[r]")) as first_page_table: customer = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') first_page_table.add_row([customer, branch]) first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") with doc.create(LongTabu("X[15l]", row_height=1.8)) as data_table: data_table.add_row(["Organization\nCapture IP\nBrowser\nLog\n"], mapper=bold, color="lightgray") data_table.add_empty_row() data_table.add_hline() result_query, result_count = generate_report(cpm) x = 0 for i in range(result_count): url = result_query[1 + x].split('//')[1] ip = result_query[7 + x] log_dict = literal_eval(result_query[2 + x]) if 'skstamp' in log_dict.keys(): rm_trash = log_dict.pop('skstamp') elif 'utf8' in log_dict.keys(): rm_trash = log_dict.pop('utf8') browser = result_query[4 + x] + ' v' + result_query[5 + x] x = 8 * (i + 1) row_tex = [ url + '\n' + ip + '\n' + browser + '\n' + str(log_dict) + '\n' ] if (i % 2) == 0: data_table.add_row(row_tex, color="lightgray") else: data_table.add_row(row_tex) doc.append(NewPage()) pdf_name = 'Report{}'.format(strftime('-%y%m')) doc.generate_pdf(pdf_name, clean_tex=False) open_new(os.getcwd() + '/' + pdf_name + '.pdf')
def generar(self, Carrera, Asignatura, Curso, listaPreguntas, aleatorio): today = str(self.__fecha) geometry_options = { "head": "48pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) header = PageStyle("header") # DEFINIMOS LA VARIABLE CON ESTILO #image_filename = os.path.join(os.path.dirname("__file__"), '../static/zigmap.png') # IMAGEN UNAB #data_folder = os.path.join("../", "static/zigmap.png") #file_to_open = os.path.join(data_folder, "zigmap.png") #image_filename = data_folder image_filename = "zigmap.png" # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( SubFigure( position='L', width=NoEscape(r'0.10\linewidth'))) as logo_wrapper: print("IMAGEN") #logo_wrapper.add_image('zigmap.png', width=NoEscape(r'\linewidth')) # Add document title with first_page.create(Head("C")) as center_header: with center_header.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='c')) as title_wrapper: title_wrapper.append(LargeText(bold(self.__nombre))) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='r')) as title_wrapper: #title_wrapper.append(LargeText(bold("Solemne II"))) #title_wrapper.append(LineBreak()) title_wrapper.append(MediumText(bold( Asignatura.get_nombreA()))) # Add footer with first_page.create(Foot("C")) as footer: message = "Programación II" with footer.create( Tabularx("X X X X", width_argument=NoEscape( r"\textwidth"))) as footer_table: footer_table.add_row([ MultiColumn(4, align='l', data=TextColor("black", message)) ]) footer_table.add_hline(color="black") footer_table.add_empty_row() branch_address = MiniPage(width=NoEscape(r"0.45\textwidth"), pos='t', align='l') branch_address.append( MediumText("Facultad de " + Carrera.get_facultad())) branch_address.append("\n") branch_address.append("") branch_address2 = MiniPage(width=NoEscape(r"0.10\textwidth"), pos='t') branch_address2.append("") branch_address2.append("\n") branch_address2.append("") document_details = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t', align='r') document_details.append(self.__fecha) document_details.append(LineBreak()) document_details.append("") # simple_page_number() footer_table.add_row([ branch_address, branch_address2, branch_address2, document_details ]) doc.preamble.append(first_page) # End first page style ############################################ #################################################### # Add customer information with doc.create(Tabu("X[l] X[r]")) as first_page_table: customer = MiniPage(width=NoEscape(r"0.55\textwidth"), pos='h') customer.append("Nombre: ___________________________________") customer.append("\n") customer.append(" Rut: _______________") customer.append("\n") customer.append("Nota: ______________") customer.append("\n") customer.append("\n") # Add branch information branch = MiniPage(width=NoEscape(r"0.35\textwidth"), pos='t!', align='r') if self.__unidad == "unidad1": branch.append(bold("Unidad: 1")) elif self.__unidad == "unidad2": branch.append(bold("Unidad: 2")) else: branch.append(bold("Unidades: 1 & 2")) branch.append(LineBreak()) branch.append(bold("Curso: ")) branch.append(bold(Curso.get_cod())) branch.append(LineBreak()) branch.append(bold("Ponderación: ")) branch.append(bold(self.__ponderacion + "%")) branch.append(LineBreak()) first_page_table.add_row([customer, branch]) doc.append(LargeText(bold("Indicaciones:"))) # INDICACIONES with doc.create(Itemize()) as itemize: doc.append(LineBreak()) itemize.add_item( " Lea atentamente los enunciados de cada pregunta antes de contestar." ) itemize.add_item( " Conteste su evaluación en silencio, está prohibido conversar o gesticulizar en la sala durante la prueba." ) itemize.add_item( " Dispone de 90 minutos para realizar esta evaluación.") itemize.add_item( " Marque la alternativa con lapiz pasta, no se aceptan marcadas con lapiz grafito." ) itemize.add_item( " Utilice solamente sus materiales, está prohibido solicitar materiales a sus compañeros." ) # you can append to existing items itemize.append(Command("ldots")) doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") customer.append(LineBreak()) now = str(datetime.today()) for p in listaPreguntas: with doc.create(Section('Pregunta - ' + p.get_tipo())): doc.append(p.get_contenido()) doc.append(NewPage()) nombreFile = str( self.__nombre) + " - " + self.get_fecha() + " - " + str(aleatorio) print( "--------------------------ANTES DE DIR------------------------------" ) try: # GENERANDO PDF doc.generate_pdf(filepath="tests/" + nombreFile, clean_tex=True, clean=True) #doc.generate_pdf(dirName + "/" + nombreFile, clean_tex=False) except FileNotFoundError as e: doc.generate_pdf(filepath="../tests/" + nombreFile, clean_tex=True, clean=True)
def generate_report(main_title, name, title, email, payroll): # For saving the report in the Desktop folder dir_output=os.path.join( '~', 'Desktop', 'absconbest_payroll', 'output' ) dir_output=os.path.expanduser(dir_output) geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) # Generating # first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c') ) as logo_wrapper: logo_file = 'logo.png' logo_wrapper.append( StandAloneGraphic( image_options="width=120px", filename=logo_file ) ) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create(MiniPage( width=NoEscape(r"0.49\textwidth"), pos='c', align='r') ) as title_wrapper: title_wrapper.append(LargeText(bold('Payroll Report'))) title_wrapper.append(LineBreak()) title_wrapper.append(MediumText(bold(main_title))) # Add footer with first_page.create(Foot("C")): first_page.append(simple_page_number()) doc.preamble.append(first_page) #Add employee information with doc.create(Tabu("X[l] X[r]")) as first_page_table: employee = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') employee.append(name) employee.append("\n") employee.append(title) employee.append("\n") employee.append(email) #Dummy table branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') # branch.append(bold("1181...")) # branch.append(LineBreak()) # branch.append(bold("TIB Cheque")) first_page_table.add_row([employee, branch]) first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") #Add payroll table with doc.create(LongTabu("X[l] X[c] X[c] X[c] X[r]", row_height=1.5)) as data_table: data_table.add_row(['Work', 'Rate Per Hour ($)', 'Time in Minutes', 'Time in Hours', 'Wage ($)'], mapper=bold, color="lightgray") data_table.add_empty_row() data_table.add_hline() #Following Pandas' API payroll=payroll.reset_index() for i in range(len(payroll.index)): try: row = [payroll['Work'][i], round(payroll['Rate Per Hour'][i],0), round(payroll['TIM'][i],0), round(payroll['TIH'][i],3), round(payroll['Wage'][i],1)] except TypeError: row = [payroll['Work'][i], 'n/a', round(payroll['TIM'][i],0), round(payroll['TIH'][i],3), round(payroll['Wage'][i],1)] if (i%2)==0: data_table.add_row(row, color="lightgray") else: data_table.add_row(row) # data_table.add_row([payroll['Work'][l_p], # round(payroll['TIM'][l_p],0), # round(payroll['TIH'][l_p],3), # '', # round(payroll['Wage'][l_p],1)] # ) doc.append(NewPage()) doc.generate_pdf( filepath=os.path.join( dir_output, main_title.lower().replace(" ","_").replace(",",""), ), clean_tex=True, clean=True, )
def generate_unique_dw(final_hvs1, final_hvs2, hl1_ch1, hl2_ch1, hl1_ch2, hl2_ch2, sectors): geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "1.0in", "includeheadfoot": True } doc = Document(indent=False, geometry_options=geometry_options) # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c')) as logo_wrapper: logo_file = os.path.join(os.path.dirname(__file__), '../cernlogo.png') logo_wrapper.append( StandAloneGraphic(image_options="width=80px", filename=logo_file)) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='r')) as title_wrapper: title_wrapper.append(LargeText(bold("ATLAS New Small Wheel"))) title_wrapper.append(LineBreak()) title_wrapper.append(bold("Integration Tests")) title_wrapper.append(LineBreak()) title_wrapper.append(bold(now.strftime("%d-%m-%Y"))) title_wrapper.append(LineBreak()) title_wrapper.append("\n") title_wrapper.append( LargeText(bold("Double Wedge: " + str(DW_name)))) title_wrapper.append(LineBreak()) # Add footer with first_page.create(Foot("C")) as footer: with footer.create( Tabularx( "X X X ", width_argument=NoEscape(r"\textwidth"))) as footer_table: footer_table.add_empty_row() footer_table.add_hline(color="blue") branch_address1 = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t') branch_address1.append("Lorenzo Pezzotti") branch_address1.append("\n") branch_address1.append("*****@*****.**") branch_address2 = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t') branch_address2.append("Alan Peyaud") branch_address2.append("\n") branch_address2.append("*****@*****.**") branch_address3 = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t') branch_address3.append("Ivan Gnesi") branch_address3.append("\n") branch_address3.append("*****@*****.**") document_details = MiniPage(width=NoEscape(r"0.2\textwidth"), pos='t', align='r') document_details.append(" ") document_details.append(LineBreak()) document_details.append(simple_page_number()) footer_table.add_row( [branch_address1, branch_address2, branch_address3]) doc.append(first_page) # End first page style redcircle = glob.glob("redcircle.png") redcircle = StandAloneGraphic(redcircle, image_options="width=220px") # Add customer information with doc.create(Tabu("X[r]")) as first_page_table: first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") doc.append("\n") doc.append(timeslot) doc.append(LineBreak()) # IP with doc.create(Section('IP SIDE', numbering=False)): # first chamber # Verify if its SM1, LM1, SM1 or LM2 if chambername1IP[0:3] == "SM1" or chambername2HO[0:3] == "LM1": limit = 10 else: limit = 6 with doc.create( Subsection("Chambers: " + chambername1IP + " + " + chambername2IP, numbering=False)): with doc.create(Subsection(chambername1IP, numbering=False)): with doc.create( LongTabu("|X[l]|X[r]|X[r]|X[r]|X[r]|X[r]|X[r]|", row_height=1.5)) as data_table: data_table.add_hline() data_table.add_row( ["Sector", "L1", "L2", "L3", "L4", "HL1", "HL2"], mapper=bold, color="lightgray") data_table.add_hline() row = ["blank", "l1", "l2", "l3", "l4", "hl1", "hl2"] for i, hv in enumerate(final_hvs1[0]): hl1_str = "" hl2_str = "" l1 = "" l2 = "" l3 = "" l4 = "" # assign each sector to a line if hv == hl1_ch1: hl1_str = str(hl1_ch1) elif hv == hl2_ch1: hl2_str = str(hl2_ch1) elif i > limit - 1 + limit * 2: l4 = "570" elif i > limit - 1 + limit: l3 = "570" elif i > limit - 1: l2 = "570" else: l1 = "570" if (i % 2) == 0: data_table.add_row([ str(sectors[0][i]), l1, l2, l3, l4, hl1_str, hl2_str ]) else: data_table.add_row([ str(sectors[0][i]), l1, l2, l3, l4, hl1_str, hl2_str ], color="lightgray") data_table.add_hline() # second chamber if chambername2IP[0:3] == "SM1" or chambername2HO[0:3] == "LM1": limit = 10 else: limit = 6 with doc.create(Subsection(chambername2IP, numbering=False)): with doc.create( LongTabu("|X[l]|X[r]|X[r]|X[r]|X[r]|X[r]|X[r]|", row_height=1.5)) as data_table2: data_table2.add_hline() data_table2.add_row( ["Sector", "L1", "L2", "L3", "L4", "HL1", "HL2"], mapper=bold, color="lightgray") data_table2.add_hline() row = ["blank", "l1", "l2", "l3", "l4", "hl1", "hl2"] for i, hv in enumerate(final_hvs1[1]): hl1_str = "" hl2_str = "" l1 = "" l2 = "" l3 = "" l4 = "" # assign each sector to a line if hv == hl1_ch1: hl1_str = str(hl1_ch1) elif hv == hl2_ch1: hl2_str = str(hl2_ch1) elif i > limit - 1 + limit * 2: l4 = "570" elif i > limit - 1 + limit: l3 = "570" elif i > limit - 1: l2 = "570" else: l1 = "570" if (i % 2) == 0: data_table2.add_row([ str(sectors[1][i]), l1, l2, l3, l4, hl1_str, hl2_str ]) else: data_table2.add_row([ str(sectors[1][i]), l1, l2, l3, l4, hl1_str, hl2_str ], color="lightgray") data_table2.add_hline() # HO # Swap R an L final_hvs2[0] = swap(final_hvs2[0]) final_hvs2[1] = swap(final_hvs2[1]) if chambername1HO[0:3] == "SM1" or chambername2HO[0:3] == "LM1": limit = 10 else: limit = 6 doc.append(NewPage()) with doc.create(Section('HO SIDE', numbering=False)): # first chamber with doc.create( Subsection("Chambers: " + chambername1HO + " + " + chambername2HO, numbering=False)): with doc.create(Subsection(chambername1HO, numbering=False)): with doc.create( LongTabu("|X[l]|X[r]|X[r]|X[r]|X[r]|X[r]|X[r]|", row_height=1.5)) as data_table3: data_table3.add_hline() data_table3.add_row( ["Sector", "L1", "L2", "L3", "L4", "HL1", "HL2"], mapper=bold, color="lightgray") data_table3.add_hline() row = ["blank", "l1", "l2", "l3", "l4", "hl1", "hl2"] for i, hv in enumerate(final_hvs2[0]): hl1_str = "" hl2_str = "" l1 = "" l2 = "" l3 = "" l4 = "" # assign each sector to a line if hv == hl1_ch2: hl1_str = str(hl1_ch2) elif hv == hl2_ch2: hl2_str = str(hl2_ch2) elif i > limit - 1 + limit * 2: l4 = "570" elif i > limit - 1 + limit: l3 = "570" elif i > limit - 1: l2 = "570" else: l1 = "570" if (i % 2) == 0: data_table3.add_row([ str(sectors[2][i]), l1, l2, l3, l4, hl1_str, hl2_str ]) else: data_table3.add_row([ str(sectors[2][i]), l1, l2, l3, l4, hl1_str, hl2_str ], color="lightgray") data_table3.add_hline() # second chamber if chambername2HO[0:3] == "SM1" or chambername2HO[0:3] == "LM1": limit = 10 else: limit = 6 with doc.create(Subsection(chambername2HO, numbering=False)): with doc.create( LongTabu("|X[l]|X[r]|X[r]|X[r]|X[r]|X[r]|X[r]|", row_height=1.5)) as data_table4: data_table4.add_hline() data_table4.add_row( ["Sector", "L1", "L2", "L3", "L4", "HL1", "HL2"], mapper=bold, color="lightgray") data_table4.add_hline() row = ["blank", "l1", "l2", "l3", "l4", "hl1", "hl2"] for i, hv in enumerate(final_hvs2[1]): hl1_str = "" hl2_str = "" l1 = "" l2 = "" l3 = "" l4 = "" # assign each sector to a line if hv == hl1_ch2: hl1_str = str(hl1_ch2) elif hv == hl2_ch2: hl2_str = str(hl2_ch2) elif i > limit - 1 + limit * 2: l4 = "570" elif i > limit - 1 + limit: l3 = "570" elif i > limit - 1: l2 = "570" else: l1 = "570" if (i % 2) == 0: data_table4.add_row([ str(sectors[3][i]), l1, l2, l3, l4, hl1_str, hl2_str ]) else: data_table4.add_row([ str(sectors[3][i]), l1, l2, l3, l4, hl1_str, hl2_str ], color="lightgray") data_table4.add_hline() doc.generate_pdf("complex_report_DW", clean_tex=False, compiler='pdflatex')
def generate_unique(sectors_notirradiated, hv_notirradiated, spark_notirradiated, irradatgif): geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "1.0in", "includeheadfoot": True } doc = Document(indent=False,geometry_options=geometry_options) # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create(MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c')) as logo_wrapper: logo_file = os.path.join(os.path.dirname(__file__), '../cernlogo.png') logo_wrapper.append(StandAloneGraphic(image_options="width=80px", filename=logo_file)) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create(MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='r')) as title_wrapper: title_wrapper.append(LargeText(bold("ATLAS New Small Wheel"))) title_wrapper.append(LineBreak()) title_wrapper.append(bold("Integration Tests")) title_wrapper.append(LineBreak()) title_wrapper.append(bold(now.strftime("%d-%m-%Y"))) title_wrapper.append(LineBreak()) title_wrapper.append("\n") title_wrapper.append(LargeText(bold("Chamber: "+str(chambername)))) title_wrapper.append(LineBreak()) title_wrapper.append("ID: "+str(ID)) title_wrapper.append(LineBreak()) # Add footer with first_page.create(Foot("C")) as footer: with footer.create(Tabularx( "X X X ", width_argument=NoEscape(r"\textwidth"))) as footer_table: footer_table.add_empty_row() footer_table.add_hline(color="blue") branch_address1 = MiniPage( width=NoEscape(r"0.25\textwidth"), pos='t') branch_address1.append("Lorenzo Pezzotti") branch_address1.append("\n") branch_address1.append("*****@*****.**") branch_address2 = MiniPage( width=NoEscape(r"0.25\textwidth"), pos='t') branch_address2.append("Alan Peyaud") branch_address2.append("\n") branch_address2.append("*****@*****.**") branch_address3 = MiniPage( width=NoEscape(r"0.25\textwidth"), pos='t') branch_address3.append("Ivan Gnesi") branch_address3.append("\n") branch_address3.append("*****@*****.**") document_details = MiniPage(width=NoEscape(r"0.2\textwidth"), pos='t', align='r') document_details.append(" ") document_details.append(LineBreak()) document_details.append(simple_page_number()) footer_table.add_row([branch_address1, branch_address2, branch_address3]) doc.append(first_page) # End first page style redcircle = glob.glob("redcircle.png") redcircle = StandAloneGraphic(redcircle, image_options="width=220px") # Add customer information with doc.create(Tabu("X[r]")) as first_page_table: ''' # Add branch information branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') branch.append("Chamber name: ") branch.append(LineBreak()) branch.append("ID: ") branch.append(LineBreak()) first_page_table.add_row([branch]) ''' first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.85") doc.add_color(name="lightgray2", model="gray", description="0.6") if irradatgif == "y": title = "HV irradiated" else: title = "HV not irradiated" with doc.create(Section(title, numbering=False)): # Add statement table doc.append("\n") doc.append(timeslot) doc.append(LineBreak()) doc.append(str(deltatime/60)+str("_min")) doc.append(LineBreak()) doc.append("Spike_treshold_0.2_uA") doc.append(LineBreak()) with doc.create(LongTabu("|X[l]|X[r]|X[r]|X[r]|X[r]|", row_height=1.5)) as data_table: data_table.add_hline() data_table.add_row(["Sector", "HV", "spark/min", "Efficiency", "Flag"], mapper=bold, color="lightgray2") data_table.add_hline() data_table.end_table_header() data_table.add_hline() row = ["sector", "hv","spark", "efficiency", "0 or 1"] acceptedlist = [] not_acc_counter = 0 pscolor = "blue" for i in range(len(hv_notirradiated)): if (i % 2) == 0: ''' if int(hv_notirradiated[i]) > 567.9 and spark_notirradiated[i]<1.0: accepted = 1 acceptedlist.append(accepted) else: accepted = 0 acceptedlist.append(accepted) ''' if int(hv_notirradiated[i]) > 567.9: hvcolor = "black" if 548.0 < int(hv_notirradiated[i]) < 567.9: hvcolor = "orange" if int(hv_notirradiated[i])< 548.0: hvcolor = "red" if spark_notirradiated[i] > 6.0: sparkcolor = "red" if spark_notirradiated[i] == 6.0: sparkcolor = "orange" if spark_notirradiated[i] < 6.0: sparkcolor = "black" if efficiency[i] < 80.0: effcolor = "red" if efficiency[i] > 80.0: effcolor = "black" if efficiency == 80.0: effcolor = "orange" if sparkcolor == "red" or hvcolor == "red" or effcolor == "red": acceptedcolor = "red" accepted = 0 acceptedlist.append(accepted) not_acc_counter = not_acc_counter+1 else: acceptedcolor = "black" accepted = 1 acceptedlist.append(accepted) data_table.add_row([str(sectors_notirradiated[i]), TextColor(hvcolor,str(int(hv_notirradiated[i]))), TextColor(sparkcolor, str(round(spark_notirradiated[i],2))), TextColor(effcolor, str(round(efficiency[i],1))), TextColor(acceptedcolor, "V")]) data_table.add_hline() else: ''' if int(hv_notirradiated[i]) > 567.9 and spark_notirradiated[i]<1.0: accepted = 1 acceptedlist.append(accepted) else: accepted = 0 acceptedlist.append(accepted) ''' if int(hv_notirradiated[i]) > 567.9: hvcolor = "black" if 548.0 < int(hv_notirradiated[i]) < 567.9: hvcolor = "orange" if int(hv_notirradiated[i])< 548.0: hvcolor = "red" if spark_notirradiated[i] > 6.0: sparkcolor = "red" if spark_notirradiated[i] == 6.0: sparkcolor = "orange" if spark_notirradiated[i] < 6.0: sparkcolor = "black" if efficiency[i] < 80.0: effcolor = "red" if efficiency[i] > 80.0: effcolor = "black" if efficiency == 80.0: effcolor = "orange" if sparkcolor == "red" or hvcolor == "red" or effcolor == "red": acceptedcolor = "red" accepted = 0 acceptedlist.append(accepted) not_acc_counter = not_acc_counter+1 else: acceptedcolor = "black" accepted = 1 acceptedlist.append(accepted) data_table.add_row([str(sectors_notirradiated[i]), TextColor(hvcolor,str(int(hv_notirradiated[i]))), TextColor(sparkcolor, str(round(spark_notirradiated[i],2))), TextColor(effcolor, str(round(efficiency[i],1))), TextColor(acceptedcolor, "V")], color="lightgray") data_table.add_hline() data_table.add_hline() data_table.add_row("Out of spec", str(len([x for x in hv_notirradiated if x < 548.0])), str(len([x for x in spark_notirradiated if x > 6.0])), str(len([x for x in efficiency if x < 80.0])), str(not_acc_counter)) data_table.add_empty_row() data_table.add_hline() data_table.add_row("Chamber efficiency", "","", "", str(round(total_efficiency))) data_table.add_hline() if "LM2" in chambername: newefficiency = efficiency newefficiency.pop(4) newefficiency.pop(4) newefficiency.pop(8) newefficiency.pop(8) data_table.add_row("Efficiency no LE8", "","", "", str(round(np.mean(newefficiency)))) data_table.add_hline() doc.append(NoEscape('\\clearpage')) with doc.create(Section('Summary', numbering=False)): piecart.create_pie([acceptedlist.count(1), acceptedlist.count(0)], "piechart.pdf") # Add cheque images with doc.create(LongTabu("X[c]")) as summary1_table: pie = glob.iglob("piechart.pdf") #png_list = [StandAloneGraphic(x, image_options="width=120px") for x in png_list] pienew = [StandAloneGraphic(x, image_options="width=220px") for x in pie] summary1_table.add_row([pienew[0]]) #here I have sectors_notirradiated, hv_notirradiated, spark_notirradiated, acceptedlist SM1channels = ["L1","R1","L2","R2","L3","R3","L4","R4","L5","R5"] SM2channels = ["L6","R6","L7","R7","L8","R8"] badresultsall = [] badresultseta = [] badresultsstereo = [] if chambername[0:3] == "SM1": channels = SM1channels if chambername[0:3] == "SM2": channels = SM2channels if chambername[0:3] == "LM1": channels = SM1channels if chambername[0:3] == "LM2": channels = SM2channels for channel in channels: cntall = sum(1 for x, sector in enumerate(sectors_notirradiated) if sector[2:4] == channel and acceptedlist[x] == 1) cnteta = sum(1 for x, sector in enumerate(sectors_notirradiated) if sector[2:4] == channel and (sector[1:2] == "1" or sector[1:2] == "2") and acceptedlist[x] == 1) cntstereo = sum(1 for x, sector in enumerate(sectors_notirradiated) if sector[2:4] == channel and (sector[1:2] == "3" or sector[1:2] == "4") and acceptedlist[x] == 1) badresultsall.append(4-int(cntall)) badresultseta.append(2-int(cnteta)) badresultsstereo.append(2-int(cntstereo)) #doc.append(NewPage()) with doc.create(LongTabu("X[l] X[r] X[r] X[r]", row_height=1.5)) as data_table2: data_table2.add_row(["Sector overimposed (from eta side)", "Eta", "Stereo", "Eta+Stereo"], mapper=bold, color="lightgray2") data_table2.add_empty_row() data_table2.add_hline() row = ["Sector (all layers)", "Out of spec (Eta)", "Out of spec (Stereo)", "Out of spec (E+S)"] for i in range(len(channels)): if (i % 2) == 0: data_table2.add_row([str(channels[i]), str(int(badresultseta[i])), str(badresultsstereo[i]), badresultsall[i]], color="lightgray") else: data_table2.add_row([str(channels[i]), str(int(badresultseta[i])), str(badresultsstereo[i]), badresultsall[i]]) with doc.create(LongTabu("X[l] X[r]", row_height=1.5)) as data_table3: data_table3.add_row(["Layer", "Mean Efficiency"], mapper=bold, color="lightgray2") data_table3.add_empty_row() data_table3.add_hline() row = ["layers", "efficiency"] channelsT3 = ["L1", "L2", "L3", "L4"] for i in range(len(layers_efficiency)): if (i % 2) == 0: data_table3.add_row([str(channelsT3[i]), str(round(layers_efficiency[i],1))], color="lightgray") else: data_table3.add_row([str(channelsT3[i]), str(round(layers_efficiency[i],1))]) doc.append(NewPage()) if irradatgif == "y": title = "Current with irradiation" else: title = "Current with no irradiation" with doc.create(Section(title, numbering=False)): # Add cheque images with doc.create(LongTabu("X[c] X[c] X[c] X[c]")) as cheque_table: png_list = glob.glob('BB5-i*.pdf') png_list.sort(key=os.path.getmtime) png_list = [StandAloneGraphic(x, image_options="width=120px") for x in png_list] print len(png_list) row_image = [] i = 0 for image in png_list: row_image.append(image) i = i +1 if i==4: cheque_table.add_row([row_image[0], row_image[1], row_image[2], row_image[3]]) row_image = [] i=0 png_list = [] doc.generate_pdf("complex_report", clean_tex=False, compiler='pdflatex')
def general_report(complete, fails, matchIsolates, metadata, metaDf, args): newisolates = list(set(matchIsolates).difference(set(complete))) plotcleanup = [] """ todo input dict of id to isolates cclis = get_merge_cclis(conn,cc,level,args.appname).split(",") """ doc = Multistrain('tgbonum') # Call function to add text # doc.fill_document() tp = "" lev = "" if args.stlev: tp = "ST" lev = args.stlev if args.cclev: tp = "CC" lev = args.cclev if args.odclev: tp = "ODC" lev = args.odclev search_restrictions = searchRestrictionList(args) # Add stuff to the document timerange="all",year="all",country="all",continent="all"postcode="all",source="all",sourcetype="all",host="all",disease="all" if not args.identifier: # if a particular ST, CC or ODC has not been assigned with doc.create(Section('Search Settings')): doc.append( 'Database was searched using {type} at level {lev}{restrict}'. format(type=tp, lev=lev, restrict=search_restrictions)) if args.list or args.file: with doc.create(Subsection('Input Isolates')): doc.append( 'Successfully processed isolates:\n {}\n'.format( ", ".join(complete))) doc.append('Failed isolates:\n') if len(list(fails.keys())) != 0: fmt = "X[l] X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: header_row1 = ["Isolate", "Failure Reason"] data_table.add_row(MultiColumn(1, data=header_row1)) data_table.add_hline() for reason in fails: for isolate in fails[reason]: d = [isolate, reason] data_table.add_row(MultiColumn(2, data=d)) else: doc.append('None\n') with doc.create(Subsection('Matching Isolates')): if len(newisolates) > 40: doc.append( 'The above settings matched to {no} isolates \n'. format(no=len(newisolates))) else: doc.append( 'The above isolates matched to the following {no} isolates \n' .format(no=len(newisolates))) fmt = "X[l]X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: search_level = tp + lev header_row1 = ["Name", search_level] data_table.add_row(MultiColumn(2, data=header_row1)) data_table.add_hline() sorted_isolates = sorted( newisolates, key=lambda i: int(metadata['used_id'][i])) # print(newisolates) # print(sorted_isolates) for i in sorted_isolates: isolate_used_id = metadata['used_id'][i] data = [i, isolate_used_id] data_table.add_row(MultiColumn(2, data=data)) else: # if a certain ST, CC or ODC was assigned with doc.create(Section('Search Settings')): doc.append( 'Database was searched using {type}={ident} at level {lev}{restrict}' .format(type=tp, ident=args.identifier, lev=lev, restrict=search_restrictions)) if args.list or args.file: with doc.create(Subsection('Input Isolates')): doc.append( 'Successfully processed isolates:\n {}\n'.format( ", ".join(complete))) doc.append('Failed isolates:\n') if len(list(fails.keys())) != 0: fmt = "X[l] X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: header_row1 = ["Isolate", "Failure Reason"] data_table.add_row(MultiColumn(1, data=header_row1)) data_table.add_hline() for reason in fails: for isolate in fails[reason]: d = [isolate, reason] data_table.add_row(MultiColumn(2, data=d)) else: doc.append('None\n') with doc.create(Subsection('Matching Isolates')): if len(newisolates) > 40: doc.append( 'The above settings matched to {no} isolates \n'. format(no=len(newisolates))) else: doc.append( 'The above settings matched to the following {no} isolates \n' .format(no=len(newisolates))) doc.append(", ".join(newisolates)) fmt = "X[l]X[l]" with doc.create(Tabu(fmt, spread="1pt", pos=["l"])) as data_table: search_level = tp + lev header_row1 = ["Name", search_level] data_table.add_row(MultiColumn(2, data=header_row1)) data_table.add_hline() sorted_isolates = sorted( newisolates, key=lambda i: int(metadata['used_id'][i])) # print(newisolates) # print(sorted_isolates) for i in sorted_isolates: isolate_used_id = metadata['used_id'][i] data = [i, isolate_used_id] data_table.add_row(MultiColumn(2, data=data)) # TODO HERE years not carrying across properly, investigate later with doc.create(Section('Matching Isolate Summaries')): id_list = list(metaDf.used_id.unique()) for ident in id_list: no_id_isolates = len( list(metaDf.loc[metaDf["used_id"] == ident, "identifier"])) if no_id_isolates >= args.clustermin: with doc.create( Subsection("MGT" + lev + ": " + tp + str(ident))): with doc.create(Figure(position='H')) as plot: id_isolates = metaDf[metaDf["used_id"] == ident] new_id_isolates = list(id_isolates.loc[ ~id_isolates["identifier"].isin(newisolates), "identifier"]) exist_id_isolates = list(id_isolates.loc[ id_isolates["identifier"].isin(newisolates), "identifier"]) # newisolates = list(set(id_isolates).difference(set(complete))) # print("test") # # print(exist_id_isolates) # print(new_id_isolates) print(ident, exist_id_isolates, new_id_isolates) plotpath = makeplots(metadata, id_isolates, new_id_isolates, exist_id_isolates) plot.append( NoEscape( r'\includegraphics[width=\textwidth,height=5cm,left,keepaspectratio]{' + plotpath + '}')) plotcleanup.append(plotpath) # plot.append(Plot(name='estimate', coordinates=coordinates)) # Generate data table with 'tight' columns # with doc.create(Center()) as centered: # with centered.create(Tabu("X[r] X[r]", spread="1in")) as data_table: # header_row1 = ["X", "Y"] # data_table.add_row(header_row1, mapper=[bold]) # data_table.add_hline() # row = [randint(0, 1000), randint(0, 1000)] # for i in range(4): # data_table.add_row(row) # # with doc.create(Center()) as centered: # with centered.create(Tabu("X[r] X[r]", to="4in")) as data_table: # header_row1 = ["X", "Y"] # data_table.add_row(header_row1, mapper=[bold]) # data_table.add_hline() # row = [randint(0, 1000), randint(0, 1000)] # for i in range(4): # data_table.add_row(row) doc.generate_pdf('MGT report', clean_tex=False) # make pdf # tex = doc.dumps() # make latex file for i in plotcleanup: remove(i)
def generate_unique(): geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options, document_options="a4paper") # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("L")) as header_left: with header_left.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c')) as logo_wrapper: logo_file = os.path.join(os.path.dirname(__file__), logo_name) logo_wrapper.append( StandAloneGraphic(image_options="width=50px", filename=logo_file)) # Add document title with first_page.create(Head("R")) as right_header: with right_header.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='c', align='r')) as title_wrapper: title_wrapper.append(LargeText(bold("Sjain ventures ltd"))) title_wrapper.append(LineBreak()) title_wrapper.append(MediumText(bold("C-246, Vallabhnagar"))) title_wrapper.append(LineBreak()) # title_wrapper.append(TextColor("gray", MediumText(bold("Raipur, CG")))) title_wrapper.append(MediumText(bold("Raipur, CG"))) # Add footer # with first_page.create(Foot("C")) as footer: # message = "Important message please read" # with footer.create(Tabularx( # "X X X X", # width_argument=NoEscape(r"\textwidth"))) as footer_table: # footer_table.add_row( # [MultiColumn(4, align='l', data=TextColor("blue", message))]) # footer_table.add_hline(color="blue") # footer_table.add_empty_row() # branch_address = MiniPage( # width=NoEscape(r"0.25\textwidth"), # pos='t') # branch_address.append("960 - 22nd street east") # branch_address.append("\n") # branch_address.append("Saskatoon, SK") # document_details = MiniPage(width=NoEscape(r"0.25\textwidth"), # pos='t', align='r') # document_details.append("1000") # document_details.append(LineBreak()) # document_details.append(simple_page_number()) # footer_table.add_row([branch_address, branch_address, # branch_address, document_details]) # Newly added with first_page.create(Foot("L")) as right_footer: with right_footer.create( MiniPage(width=NoEscape(r"0.49\textwidth"), pos='l', align='l')) as contact_wrapper: contact_wrapper.append(MediumText(bold("Alok Kumar Sharma"))) contact_wrapper.append(LineBreak()) contact_wrapper.append(MediumText("*****@*****.**")) contact_wrapper.append(LineBreak()) contact_wrapper.append(MediumText("+91 7877681234")) doc.preamble.append(first_page) # End first page style # Add customer information with doc.create(Tabu("X[r]")) as first_page_table: # customer = MiniPage(width=NoEscape(r"0.9\textwidth"), pos='h') # customer.append("Verna Volcano") # customer.append("\n") # customer.append("For some Person") # customer.append("\n") # customer.append("Address1") # customer.append("\n") # customer.append("Address2") # customer.append("\n") # customer.append("Address3") # Add branch information branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') branch.append("http://sjainventures.com") branch.append(LineBreak()) branch.append("*****@*****.**") # branch.append(LineBreak()) # branch.append("+91 7877681234") first_page_table.add_row([branch]) # [customer, branch] first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") # Add statement table # with doc.create(LongTabu("X[l] X[2l] X[r] X[r] X[r]", # row_height=1.5)) as data_table: # data_table.add_row(["date", # "description", # "debits($)", # "credits($)", # "balance($)"], # mapper=bold, # color="lightgray") # data_table.add_empty_row() # data_table.add_hline() # row = ["2016-JUN-01", "Test", "$100", "$1000", "-$900"] # for i in range(25): # if (i % 2) == 0: # data_table.add_row(row, color="lightgray") # else: # data_table.add_row(row) with doc.create(Paragraph("Dear Rishikesh,")) as para1: para1.append(lorem_ipsum.LOREM_IPSUM_TEXT2) # doc.append(NewPage()) # Add cheque images # with doc.create(LongTabu("X[c] X[c]")) as cheque_table: # cheque_file = os.path.join(os.path.dirname(__file__), # 'facebook_logo.png') # cheque = StandAloneGraphic(cheque_file, image_options="width=200px") # for i in range(0, 20): # cheque_table.add_row([cheque, cheque]) doc.generate_pdf("complex_report", clean_tex=False)
def generate_unique(): geometry_options = { "head": "40pt", "margin": "0.5in", "bottom": "0.6in", "includeheadfoot": True } doc = Document(geometry_options=geometry_options) # Generating first page style first_page = PageStyle("firstpage") # Header image with first_page.create(Head("C")) as header_center: with header_center.create( MiniPage(width=NoEscape(r"0.50\textwidth"), pos='c')) as logo_wrapper: logo_file = os.path.join(os.path.dirname(__file__), 'sample-logo.png') logo_wrapper.append( StandAloneGraphic(image_options="width=300px", filename=logo_file)) # Add document title # Add footer with first_page.create(Foot("C")) as footer: message = "Important message please read" with footer.create( Tabularx( "X X X X", width_argument=NoEscape(r"\textwidth"))) as footer_table: branch_address = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t') document_details = MiniPage(width=NoEscape(r"0.25\textwidth"), pos='t', align='r') document_details.append(LineBreak()) document_details.append(simple_page_number()) footer_table.add_row([ branch_address, branch_address, branch_address, document_details ]) doc.preamble.append(first_page) # End first page style # Add customer information with doc.create(Tabu("X[l] X[r]")) as first_page_table: customer = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='h') # Add branch information branch = MiniPage(width=NoEscape(r"0.49\textwidth"), pos='t!', align='r') first_page_table.add_row([customer, branch]) first_page_table.add_empty_row() doc.change_document_style("firstpage") doc.add_color(name="lightgray", model="gray", description="0.80") print("Enter the Region") R = input(str) with doc.create(MiniPage(align='c')): doc.append(LargeText(bold("\n\n\n\n\n\n" + R))) doc.append(LineBreak()) print("Enter the adress of home ") A = input(str) image_filename = os.path.join(os.path.dirname(__file__), 'home.jpg') with doc.create(Section('Example : ' + A)): with doc.create(Figure(position='h!')) as home_pic: home_pic.add_image(image_filename, width='490px') with doc.create(Section('Property information :')): with doc.create(Itemize()) as itemize: print("enter property type") x = input(str) itemize.add_item(bold("Property type : " + x)) print("How many bedrooms ?") y = input(int) itemize.add_item(bold("Bedroom : " + y)) print("How many bathrooms?") z = input(float) itemize.add_item(bold("Bathroom : " + z)) print('Enter the year of built please:') a = input(int) itemize.add_item(bold("Year built : " + a)) print('Enter the finished sqft :') b = input(int) itemize.add_item(bold("Finished sqft : " + b)) print("Enter the estimate price") p1 = input(float) print('enter the estimate rent') p2 = input(float) doc.append(LineBreak()) table1 = Tabular('|c|c|') table1.add_hline() table1.add_row(('Estimate price', 'Estimate rent')) table1.add_hline() table1.add_row((p1 + '$', p2 + '$')) table1.add_hline() doc.append(table1) with doc.create(Section('Financing')): with doc.create(Itemize()) as itemize: print('Enter type of loan') lo = input(str) itemize.add_item(bold("Loan Type: " + lo)) print("Enter loan amount") la = input(float) itemize.add_item(bold("Loan Amount: " + la)) print("enter the interest rate with %") IR = input(float) itemize.add_item(bold("Interest Rate: " + IR + "%")) print("enter LTV") LTV = input(float) itemize.add_item(bold("Loan to Value (LTV): " + LTV + "%")) print("enter loan term") LT = input(int) itemize.add_item(bold("Loan Term: " + LT + "years")) print("enter loan payment monthly") LPM = input(int) print("enter loan payment yearly") LPY = input(int) itemize.add_item( bold("Loan Payment: " + LPM + "(monthly), " + LPY + "(yearly)")) with doc.create(Section('Assumptions')): with doc.create(Itemize()) as itemize: print("enter vacancy rate") vr = input(float) itemize.add_item(bold('Vacancy Rate' + vr)) print("property managment") pr = input(float) itemize.add_item(bold('Property Managment' + pr)) print("yearly expense") yex = input(float) itemize.add_item(bold('Yearly Expense incr' + yex)) print("yearly rent") yr = input(float) itemize.add_item(bold('Yearly Rent incr' + yr)) print("yearly equity") ye = input(float) itemize.add_item(bold('Yearly Equity incr' + ye)) print("land value") lv = input(float) itemize.add_item(bold('Land Value' + lv)) section = Section('Financial projection and expences analysis') test1 = Subsection(bold('Financial Projection')) test2 = Subsection(bold('Expences')) table2 = Tabular('|c|c|c|c|c|c|c|c|c|c|') table2.add_hline() table2.add_row(("Type", "Year 1", "Year 2", "Year 3", "Year 4", "Year 5", "Year 10", "Year 15", "Year 20", "Year 30")) table2.add_hline() table2.add_row(("Total Annuel Income", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Total Annuel Expenses", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row( ("Total Annuel Operating Expenses", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Total Annual Cash Flow", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Property Value", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Cash on Cash ROI", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Loan Balance", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Cumulative Cash Flow", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table2.add_row(("Equity", 6, 7, 8, 8, 8, 8, 8, 8, 8)) table2.add_hline() table3 = Tabular('|c|c|c|') table3.add_hline() table3.add_row((" ", "Monthly", "Annually")) table3.add_hline() table3.add_row(("Repair Cost", 6, 7)) table3.add_hline() table3.add_row(("Vacancy", 6, 7)) table3.add_hline() table3.add_row(("Insurance", 6, 7)) table3.add_hline() table3.add_row(("Taxes", 6, 7)) table3.add_hline() table3.add_row(("hoe", 6, 7)) table3.add_hline() table3.add_row(("Capital Expenditures", 6, 7)) table3.add_hline() table3.add_row(("Property Managment", 6, 7)) table3.add_hline() table3.add_row(("Other Expences", 6, 7)) table3.add_hline() table3.add_row((LargeText(bold("Total")), 6, 7)) table3.add_hline() test1.append(table2) test2.append(table3) section.append(test1) section.append(test2) doc.append(section) doc.append(LineBreak) print('Cap Rate') cap = input() print('Cash on Cash Return') cac = input() print('Retur on investment') roi = input() doc.append( LargeText( bold('Cap Rate :' + cap + '\n\n' + "Cash on Cash Return" + cac + "\n\n" + "Return on Investment" + roi))) doc.generate_pdf("complex_report", clean_tex=False)