Esempio n. 1
0
#! python3

import docx
from docx.shared import Pt

doc = docx.Document()
styleCooperBlack = doc.styles['Normal']
fontCooperBlack = styleCooperBlack.font
fontCooperBlack.name = 'Cooper Black'
fontCooperBlack.size = Pt(15)

styleDate = doc.styles['Normal']
font = styleDate.font
font.name = 'Times New Roman'
font.size = Pt(15)

fileObject = open('D:\\Scripts\\guests.txt', 'r')
for line in fileObject.readlines():
    paragrapghObject = doc.add_paragraph(
        'It would be a pleasure to have the company of')
    paragrapghObject.style = styleCooperBlack

    doc.add_paragraph(line.strip())

    doc.add_paragraph('at 11010 Memory Lane on the Evening of')

    paragrapghObject1 = doc.add_paragraph('April 1st')
    paragrapghObject1.style = styleDate

    doc.add_paragraph('at 7 o\'clock')
Esempio n. 2
0
from docx import Document
from docx.shared import Inches, Pt
import sys
#for landscape
from docx.enum.section import WD_SECTION
from docx.enum.section import WD_ORIENT
#for landscape

document = Document()

section = document.sections[-1]
section.orientation = WD_ORIENT.LANDSCAPE
section.page_width = 10693337
section.page_height = 7560945

#style
style = document.styles['Normal']
font = style.font
font.name = 'Arial'
font.size = Pt(11)

document.add_heading('Nessus Host VA', 0)

#tuplehere

Esempio n. 3
0
def createDocShedule(group, realGroup, students):
    columns = 26
    groupReal = realGroup
    wordDocument = docx.Document()

    style = wordDocument.styles['Normal']
    font = style.font
    font.name = 'Times New Roman'

    wordDocument.add_heading(f"Журнал посещения занятий группы {groupReal}",
                             3).alignment = 1

    font.size = Pt(10)

    mod_document(wordDocument)
    table = wordDocument.add_table(rows=1, cols=columns)
    table.style = 'Table Grid'
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '№ п.п.'
    hdr_cells[1].text = 'ФИО'
    hdr_cells[1].alignment = 1
    hdr_cells[0].alignment = 1

    row = table.add_row()
    row.cells[0].merge(hdr_cells[0])
    row.cells[1].merge(hdr_cells[1])

    i = 0
    users = students
    k = 0

    table.cell(0, 2).merge(table.cell(0, 5)).text = "Понедельник"
    table.cell(0, 6).merge(table.cell(0, 9)).text = "Вторник"
    table.cell(0, 10).merge(table.cell(0, 13)).text = "Среда"
    table.cell(0, 14).merge(table.cell(0, 17)).text = "Четверг"
    table.cell(0, 18).merge(table.cell(0, 21)).text = "Пятница"
    table.cell(0, 22).merge(table.cell(0, 25)).text = "Суббота"

    for i in range(columns):
        table.cell(1, i).height = Cm(5)
        table.cell(1, i).height_rule = WD_ROW_HEIGHT_RULE.AUTO
        # table.cell(1, i).text=f'\n\n\n{i}'
        tr = row._tr
        trPr = tr.get_or_add_trPr()
        trHeight = OxmlElement('w:trHeight')
        trHeight.set(qn('w:val'), "2000")
        trHeight.set(qn('w:hRule'), "atLeast")
        trPr.append(trHeight)

    i = 0
    for user in users:
        i += 1
        row = table.add_row()
        row_cells = row.cells
        # row_cells[0].height = Cm(0.3)
        # row_cells[0].height_rule = WD_ROW_HEIGHT_RULE.AT_LEAST

        row_cells[0].text = f'{i}'
        row_cells[0].width = Cm(1.19)
        row_cells[1].text = f'{user}'
        row_cells[1].width = Cm(6)

    for row in table.rows:
        row.height = Cm(0.5)
        row.height_rule = WD_ROW_HEIGHT_RULE.EXACTLY

    row = table.add_row()
    row_cells = row.cells
    for row in row_cells:
        row.height = Cm(5)
    row_cells[0].merge(row_cells[1]).text = "Подпись старосты\n\n"
    row = table.add_row()
    row_cells = row.cells
    row_cells[0].merge(row_cells[1]).text = "Подпись преподавателя\n\n"

    wordDocument.add_heading(f"Создано через бота vk.com/botraspisanie",
                             3).alignment = 2
    wordDocument.save("starosta_blank.docx")
Esempio n. 4
0
        content = u"""





   2021届毕业设计指导记录本 """
    else:
        content = u"""



   2021届毕业设计指导记录本 """
    text_head = p.add_run(content)
    text_head.font.name = '宋体'
    text_head.font.size = Pt(13.5)
    text_head.bold = True
    text = p.add_run(f"""
学    院:电气与信息工程学院
学生姓名:{name}
班级名称:{Class}
指导老师:{teacher}""")
    text.font.name = "宋体"
    text.font.size = Pt(12)
document.save('C:\\Users\\Tang Haolun\\Desktop\\2021届电气学院毕业设计选题封面test.docx')
#a = p.add_run('bold')
#a.bold = True
#a.font.size = "13.5"


# """
Esempio n. 5
0
def py2docx(name_docx, name_py, *args):
    """
    Creating Excel files with Python and python-docx.

    Attributes:
    name_docx : Microsoft Word file name.
    name_py   : Application name.
    *args     : Data.
    """

    document = Document()

    core_properties = document.core_properties
    core_properties.author = 'Pedro Biel'
    core_properties.title = 'Wind action'
    core_properties.subject = 'according to FEM 2131/2132'

    # Margins.

    sections = document.sections

    for section in sections:

        section.top_margin = Cm(2.5)
        section.bottom_margin = Cm(1.8)
        section.left_margin = Cm(2.5)
        section.right_margin = Cm(1.8)

    # Style.

    style = document.styles['Normal']
    font = style.font
    font.name = 'Consolas'
    font.size = Pt(11)
    paragraph_format = style.paragraph_format
    paragraph_format.space_before = Pt(6)
    paragraph_format.space_after = Pt(0)
    paragraph_format.line_spacing = 1.5

    # Titel.

    document.add_heading('Wind action according to FEM 2131/2132', 0)
    paragraph = document.add_paragraph(name_py)
    paragraph = document.add_paragraph(
        datetime.datetime.today().strftime('%Y.%m.%d %H:%M:%S'))

    # Project.

    document.add_heading('Project', 1)

    paragraph = document.add_paragraph('Project \t \t \t \t : \t ')
    paragraph.add_run(args[0])

    paragraph = document.add_paragraph('Name \t \t \t \t \t : \t ')
    paragraph.add_run(args[1])

    paragraph = document.add_paragraph('Company \t \t \t \t : \t ')
    paragraph.add_run(args[2])

    paragraph = document.add_paragraph('Author \t \t \t \t : \t ')
    paragraph.add_run(args[3])

    paragraph = document.add_paragraph('Commentary \t \t \t \t : \t ')
    paragraph.add_run(args[4])

    if len(
            args
    ) > 25:  # If the length of the args file is more than 25 the commentaries,
        # field has more than one paragraph.

        extra_paragraphs = len(args) - 25

        for i in range(extra_paragraphs):
            paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
            paragraph.add_run(args[5 + i])
            i += 1

    # Wind action.

    document.add_heading('Wind action', 1)

    # In service.

    document.add_heading('In service', 2)

    paragraph = document.add_paragraph('Design wind speed  \t \t : \t ')
    paragraph.add_run(args[-20])
    paragraph.add_run(' m/s \t \t \t § 2-2.2.1')

    paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
    paragraph.add_run(args[-19])
    paragraph.add_run(' km/h')

    paragraph = document.add_paragraph('Aerodynamic wind pressure \t : \t ')
    paragraph.add_run(args[-18])
    paragraph.add_run(' kN/m² \t \t § 2-2.2.1')

    paragraph = document.add_paragraph('Ratio \t \t \t \t : \t ')
    paragraph.add_run(args[-17])

    # Travelling to storm anchoring.

    document.add_heading('Travelling to storm anchoring', 2)

    paragraph = document.add_paragraph('Design wind speed  \t \t : \t ')
    paragraph.add_run(args[-16])
    paragraph.add_run(' m/s')

    paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
    paragraph.add_run(args[-15])
    paragraph.add_run(' km/h')

    paragraph = document.add_paragraph('Aerodynamic wind pressure \t : \t ')
    paragraph.add_run(args[-14])
    paragraph.add_run(' kN/m²')

    paragraph = document.add_paragraph('Ratio \t \t \t \t : \t ')
    paragraph.add_run(args[-13])

    # Out of service.

    # 0 to 20 m in height

    document.add_heading('Out service', 2)

    document.add_heading('0 to 20 m in height', 3)

    paragraph = document.add_paragraph('Design wind speed  \t \t : \t ')
    paragraph.add_run(args[-12])
    paragraph.add_run(' m/s \t \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
    paragraph.add_run(args[-11])
    paragraph.add_run(' km/h')

    paragraph = document.add_paragraph('Aerodynamic wind pressure \t : \t ')
    paragraph.add_run(args[-10])
    paragraph.add_run(' kN/m² \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('Ratio \t \t \t \t : \t ')
    paragraph.add_run(args[-9])

    # 20 to 100 m in height

    document.add_heading('20 to 100 m in height', 3)

    paragraph = document.add_paragraph('Design wind speed  \t \t : \t ')
    paragraph.add_run(args[-8])
    paragraph.add_run(' m/s \t \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
    paragraph.add_run(args[-7])
    paragraph.add_run(' km/h')

    paragraph = document.add_paragraph('Aerodynamic wind pressure \t : \t ')
    paragraph.add_run(args[-6])
    paragraph.add_run(' kN/m² \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('Ratio \t \t \t \t : \t ')
    paragraph.add_run(args[-5])

    # More than 100 m in height

    document.add_heading('More than 100 m in height', 3)

    paragraph = document.add_paragraph('Design wind speed  \t \t : \t ')
    paragraph.add_run(args[-4])
    paragraph.add_run(' m/s \t \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('\t \t \t \t \t : \t ')
    paragraph.add_run(args[-3])
    paragraph.add_run(' km/h')

    paragraph = document.add_paragraph('Aerodynamic wind pressure \t : \t ')
    paragraph.add_run(args[-2])
    paragraph.add_run(' kN/m² \t \t § 2-2.3.6')

    paragraph = document.add_paragraph('Ratio \t \t \t \t : \t ')
    paragraph.add_run(args[-1])

    # Save document

    document.save(name_docx)
Esempio n. 6
0
def OutputDocx(info,address):
    addr = '/'.join(address.strip().strip('\'').split('/')[:-1])
    chdir(addr)
    # doc = Document(docx=path.join(getcwd(), 'default.docx'))
    doc = Document()
    if address.find('排料清单') != -1:
        table_title = str(address.split('\\')[-1].split('/')[-1].split('_')[0].split('-')[0].split(' ')[0])
    else:
        table_title = str(address.split('\\')[-1].split('/')[-1].split(' ')[0])


    #设置全局字体
    doc.styles['Normal'].font.name = u'宋体'
    doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    #设置word文件的页面属性
    sections = doc.sections
    sections[0].page_width = Mm(297)
    sections[0].page_height = Mm(210)
    #添加基本内容
    tit = doc.add_paragraph('结构件下料指导书')
    #新设置一种名为"title_style"的新style,设置字体大小,字体样式
    title_style = doc.styles.add_style('UserStyle1', WD_STYLE_TYPE.PARAGRAPH)
    title_style.font.size = Pt(22)
    title_style.font.bold =True
    title_style.font.name = u'宋体'
    title_style._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    tit.paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER
    #为标题应用样式
    tit.style = title_style

    #添加内容,绘制表头
    title_list = [r'序号',r'产品代号', r'零件名称', r'材料',u'厚度',u'下料净尺寸(mm)',u'数量',r'备注']
    trow = len(info) + 2
    tcol = len(title_list)
    table = doc.add_table(rows=trow, cols=tcol, style='Table Grid')
    table.cell(0,0).merge(table.cell(0,tcol-1))  #合并第一行

    # 新设置一种名为"Bold_style"的新style,设置字体大小,字体样式
    Bold_style = doc.styles.add_style('UserStyle2', WD_STYLE_TYPE.CHARACTER)
    Bold_style.font.size = Pt(14)
    Bold_style.font.bold = True
    Bold_style.font.name = u'宋体'
    Bold_style._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    # 为表注应用样式
    run = table.cell(0,0).paragraphs[0].add_run("  合同号:%s"%table_title+"                     文件编号:JXL-%s-001"%table_title)
    table.cell(0, 0).vertical_alignment = WD_ALIGN_VERTICAL.CENTER
    run.style = Bold_style

    #设置表格内的字体
    table.style.font.size = Pt(12)
    table.style.font.name = u'微软雅黑'
    table.style._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')

    #设置表格对其方式
    table.alignment = WD_TABLE_ALIGNMENT.CENTER  #WD_TABLE_ALIGNMENT.LEFT|WD_TABLE_ALIGNMENT.RIGHT 其他设置方式

   # 新设置一种名为"tbhead"的新style,设置字体大小,字体样式
    tbhead = doc.styles.add_style('UserStyle3', WD_STYLE_TYPE.CHARACTER)
    tbhead.font.size = Pt(12)
    tbhead.font.bold = True
    tbhead.font.name = u'宋体'
    tbhead._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

    #设置表格的表头的样式为table_head
    for i, value in enumerate(title_list):
        run_1 = table.cell(1, i).paragraphs[0].add_run(value)
        table.cell(1, i).paragraphs[0].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        table.cell(1, i).vertical_alignment = WD_ALIGN_VERTICAL.CENTER
        run_1.style = tbhead
    # 设置表格内容及对其方式
    y = 0
    for list in info:
        x = 1
        #设置每一行第一个单元格的数值
        table.cell(y + 2, 0).text = str(y+1)
        table_result ='数据已处理: '+str(int((y+1)/len(info) *100 ))+ '%'
        print(table_result)

        table.cell(y + 2, 0).paragraphs[0].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        table.cell(y + 2, 0).vertical_alignment = WD_ALIGN_VERTICAL.CENTER
        #设置每一行的单元格的内容
        table.cell(y + 2, 1).text = str(list['product_code'])
        table.cell(y + 2, 2).text = str(list['part_name'])
        table.cell(y + 2, 3).text = str(list['material'])
        table.cell(y + 2, 4).text = str(list['thickness'])
        table.cell(y + 2, 5).text = str(list['size'])
        table.cell(y + 2, 6).text = str(list['sum'])
        for x in range(tcol):
            table.cell(y + 2, x).paragraphs[0].paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
            table.cell(y + 2, x).vertical_alignment = WD_ALIGN_VERTICAL.CENTER

        y += 1
    print('数据已处理完毕,请耐心等待')
    #设置列宽
    table.autofit = False
    for i in range(trow):
        table.cell(i,0).width = Mm(15)
        table.cell(i,1).width = Mm(45)
        table.cell(i,2).width = Mm(30)
        table.cell(i,3).width = Mm(30)
        table.cell(i,4).width = Mm(20)
        table.cell(i,5).width = Mm(65)
        table.cell(i,6).width = Mm(18)
        table.cell(i,7).width = Mm(22)
        # 设置行高
        table.rows[i].height = Mm(11)


    #设置表格第一行的对齐方式为左对齐
    table.cell(0, 0).paragraphs[0].paragraph_format.alignment =WD_ALIGN_PARAGRAPH.LEFT
    par1 = doc.add_paragraph('')
    par2 = doc.add_paragraph('')
    par1.paragraph_format.space_after =0
    par2.paragraph_format.space_after =0
    par2.paragraph_format.space_before =Pt(6)
    mark1 = par1.add_run(u'\n  备注:')
    mark2 = par1.add_run(
                         u'\n        完成后请做好标识,标识内容包括:合同号、产品代号、零件号、尺寸。')
    mark3 = par2.add_run(u'           编制:王元 %s。'%time.strftime('%Y-%m-%d',time.localtime(time.time()))
                        +'                  审核:刘光 %s。'%time.strftime('%Y-%m-%d',time.localtime(time.time())))
    mark1.style = Bold_style
    mark2.style = Bold_style
    mark3.style = Bold_style
    #设定页边距为上18mm.下15mm
    doc.sections[0].top_margin = Mm(18)
    doc.sections[0].bottom_margin = Mm(15)
    #文件保存
    doc.save(addr +'\\' + table_title + u'_结构件下料清单.docx')
    table_finish = '文件已生成'
    print(table_finish)
# 新建Word文档
document = Document()

# 颜色
if b.g == 'boys':
    color = (46, 92, 155)
else:
    color = (181, 62, 145)

#  封面制作
document.add_picture(r'%s\logo.png' % fig_path, width=Inches(2.5))

document.add_paragraph('')
p = document.add_paragraph('')
text1 = p.add_run('0-5岁%s童身体生长情况报告' % ('女' if b.g == 'girls' else '男'))
text1.font.size = Pt(24)  # 字体大小
text1.bold = True  # 字体是否加粗
text1.font.name = 'Times New Roman'  # 控制是西文时的字体
text1.element.rPr.rFonts.set(qn('w:eastAsia'), '华文中宋')
p.paragraph_format.alignment = s.WD_ALIGN_PARAGRAPH.CENTER
text1.font.color.rgb = RGBColor(*color)

p = document.add_paragraph('')
text2 = p.add_run('基于世界卫生组织发布的0-5岁%s童生长百分位数标准曲线制作' %
                  ('女' if b.g == 'girls' else '男'))
text2.font.size = Pt(15)
text2.bold = False  # 字体是否加粗
text2.font.name = 'Times New Roman'
text2.element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
p.paragraph_format.alignment = s.WD_ALIGN_PARAGRAPH.CENTER
text2.font.color.rgb = RGBColor(*color)
    major = cursor9.fetchone()

    cursor10 = conn.cursor()
    cursor10.execute(
        "SELECT experiences FROM collection_information where stu_number=%s" %
        item)
    experiences = cursor10.fetchone()

    cursor11 = conn.cursor()
    cursor11.execute(
        "SELECT wishes FROM collection_information where stu_number=%s" % item)
    wishes = cursor11.fetchone()

    doc = Document()
    doc.styles["Normal"].font.name = u'宋体'
    doc.styles["Normal"].font.size = Pt(15)
    doc.styles["Normal"]._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    head = doc.add_heading("", level=1)
    run = head.add_run(u"数科院学生会报名表")
    run.font.size = Pt(30)
    run.font.color.rgb = RGBColor(0, 0, 0)
    run.font.name = u"宋体"
    run._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    head.alignment = WD_ALIGN_PARAGRAPH.CENTER

    tab = doc.add_table(rows=12, cols=2)  #创建表格
    tab.style = "Table Grid"
    cell = tab.cell(0, 0)
    cell.text = "姓名:"
    cell = tab.cell(0, 1)
    cell.text = "%s" % name
Esempio n. 9
0
def 输出页(document, 目录信息, 段落信息, 表格组, 图块组, dpi):
    for i, x in enumerate(sorted(段落信息 + 表格组 + 图块组 + 目录信息,
                                 key=lambda i: 排序键(i))):

        if x in 表格组:
            table = document.add_table(rows=x.尺寸[0],
                                       cols=x.尺寸[1],
                                       style='Table Grid')
            document.paragraphs[-1].alignment = WD_ALIGN_PARAGRAPH.CENTER
            for i in range(x.尺寸[0]):
                for j in range(x.尺寸[1]):
                    if x.格内容[i][j]:
                        table.cell(i, j).text = x.格内容[i][j]
                    w = x.格范围(i, j)
                    if w and w != (i, j):
                        table.cell(i, j).merge(table.cell(*w))
            document.add_paragraph('')

        elif x in 目录信息:
            段落 = x
            x['内容'] = x['内容'].replace('"', ' ').replace('“',
                                                        ' ')  # 对tesseract的补丁
            document.add_paragraph(f'(目录){x["内容"]}')

        elif x in 段落信息:
            段落 = x
            p = document.add_paragraph()
            if 段落['样式'] == '居中':
                p.alignment = WD_ALIGN_PARAGRAPH.CENTER
                for i, 行 in enumerate(段落['行组']):
                    行['内容'] = 行['内容'].replace('"', ' ').replace(
                        '“', ' ')  # 对tesseract的补丁
                    行高 = 行['bottom'] - 行['top']
                    if i != len(段落['行组']) - 1:
                        run = p.add_run(行['内容'] + '\n')
                    else:
                        run = p.add_run(行['内容'])
                    字体尺寸 = round(行高 / dpi * 72)
                    run.font.size = Pt(字体尺寸)
            else:
                for i, 行 in enumerate(段落['行组']):
                    行['内容'] = 行['内容'].replace('"', ' ').replace(
                        '“', ' ')  # 对tesseract的补丁
                    行高 = 行['bottom'] - 行['top']
                    if i != len(段落['行组']) - 1:
                        run = p.add_run(
                            int(行['缩进'] / 行高 * 2) * ' ' + 行['内容'] + '\n')
                    else:
                        run = p.add_run(int(行['缩进'] / 行高 * 2) * ' ' + 行['内容'])
                    字体尺寸 = round(行高 / dpi * 72)
                    run.font.size = Pt(字体尺寸)

        elif x in 图块组:
            表 = x
            cv2.imwrite(f'./_temp/_.jpg', 表['内容'])
            document.add_picture(f'./_temp/_.jpg',
                                 width=Inches((表['right'] - 表['left']) / 600))
            document.paragraphs[-1].alignment = WD_ALIGN_PARAGRAPH.CENTER
        else:
            0 / 0

    document.add_page_break()
Esempio n. 10
0
#
# styles = document.styles
# print("\n".join([s.name for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]))

paragraph2 = document.add_paragraph('流金岁月')
paragraph2.style = 'List Bullet 2'
paragraph3 = document.add_paragraph('似水流年')
paragraph3.style = 'List Number 2'

# character style
paragraph4 = document.add_paragraph()
paragraph4.add_run('No matter what we breed, ')
paragraph4.add_run('We still are made of greed. ').bold = True
paragraph4.add_run('This is my kingdom come').italic = True
run = paragraph4.add_run('This is my kingdom come')
run.style = 'Intense Emphasis'

from docx.shared import Pt
run.font.name = 'Sana'
run.font.size = Pt(20)

# Adding a page bread
document.add_page_break()

# Adding a table
table = document.add_table(rows=9, cols=10, style='Table Grid')

print()

document.save('test.docx')
Esempio n. 11
0
def write_to_word(pubmed_results: Generator[Dict, None, None],
                  style_method: str, query: str, is_abstract: bool) -> None:
    """Write the PubMed results to Word

    Parameters
    ----------
    pubmed_results: PubMed results stored in Bio.Entrez.Parser.ListElement

    style_method: the style to be written to a PDF file
    (citation or listview)

    query: a query to be searched against PubMed database

    is_abstract: include abstract to your search results

    Return
    -------
    None
    """

    document = Document()

    # styling document (font name and size)
    style = document.styles['Normal']

    font = style.font
    font.name = 'Arial'
    font.size = Pt(12)

    # handling header configurations
    header = document.add_paragraph()
    header.alignment = 1  # center the title
    header.add_run(f'PubMed Search Results for {query.title()}')

    records = records_iterator(pubmed_results, is_abstract)

    for i, (authors, title, journal, *pub_info) in enumerate(records, 1):
        try:
            pub_date, vol_issue, doi, pmid, pmcid, abstract = pub_info
        except ValueError:
            pub_date, vol_issue, doi, pmid, pmcid = pub_info

        url = f"http://www.ncbi.nlm.nih.gov/pubmed/" + pmid.split()[-1]

        if style_method == 'citation':
            paragraph = document.add_paragraph(
                str(i) + ': ' + authors + '. ' + title + ' ' + journal + '. ' +
                pub_date + ';' + vol_issue + ' ' + "doi" + doi + ' ' + pmid +
                '; ' + pmcid + '.')

            # to include the url as part of the citation
            paragraph.paragraph_format.space_before = Pt(0)
            paragraph.paragraph_format.space_after = Pt(1)

            # for url hyperlink
            add_hyperlink(document.add_paragraph(), url, url, 'blue', True)

        else:

            document.add_paragraph(str(i) + ":" + "  Authors: " + authors)

            document.add_paragraph("Title: " + title)

            document.add_paragraph("Journal Name: " + journal)

            document.add_paragraph("Publication Date: " + pub_date)

            document.add_paragraph("Volume, Issue, Pages: " + vol_issue)

            document.add_paragraph("doi" + doi)

            document.add_paragraph(pmid)

            document.add_paragraph(pmcid)

            add_hyperlink(document.add_paragraph('Url: '), url, url, 'blue',
                          True)

            try:
                document.add_paragraph("Abstract: " + abstract)
            except UnboundLocalError:
                continue

    # write the search results information to MS Word file
    print(f"\nwriting in {style_method} to a MS Word file...")
    document.save(f'output/PubMed_Results_{style_method}.docx')
    print("\nDone writing.")
Esempio n. 12
0
    def save(self, fn, quizData, title='CMA Bible Quizzes', msg=None):
        """This method creates the quiz packet Word document.
        
         Args:
           fn (string): output filename of quiz
           quizData (dict): quizData object
           title (string): title in the document
           msg (string): optional message to write
        """

        #
        # document, paragraph, section, font settings
        #
        # -- width for columns: question number, type, Q/A, reference
        if (quizData['type'] == 'epistle'):
            width = [Inches(0.375), Inches(0.375), Inches(5.25), Inches(1.)]
        else:
            width = [Inches(0.375), Inches(1), Inches(4.625), Inches(1.)]

        document = Document()
        sections = document.sections
        section = sections[0]
        section.left_margin = Inches(0.75)
        section.top_margin = Inches(0.5)
        section.bottom_margin = Inches(0.5)
        section.right_margin = Inches(0.5)

        style = document.styles['Normal']
        font = style.font
        font.name = 'Arial'
        font.size = Pt(9)

        paragraph_format = document.styles['Normal'].paragraph_format
        paragraph_format.space_after = Pt(3)

        #
        # add the title
        #
        document.add_heading(title, 0)

        #
        # add the message
        #
        # if(msg==None):
        #     if(self.quizType!='custom'):
        #         msg={'intro':'This is a quiz packet for WGLD.  The quiz packet should have these characteristics:',
        #             'list':['Unique questions for each quiz (if possible) in the packet',
        #                     'Satisfaction of question minimums and maximums for each type',
        #                     '"A" division quizzes have 50% current and 50% past periods.',
        #                     '"B" division quizzes are only current content, and will therefore have repeats.'+\
        #                     '  We have tried to keep these in the alternative questions 16A, 16B, etc.  Replace as necessary.']}
        #     else:
        #         msg={'intro':'This is a custom quiz.'}

        # p = document.add_paragraph(msg['intro'])

        # #document.add_paragraph('Unique questions for each quiz (if possible) in the packet', style='List Bullet')
        # #document.add_paragraph(
        # #    'Satisfaction of question minimums and maximums for each type', style='List Bullet'
        # #)
        # if('list' in msg):
        #     for m in msg['list']:
        #         document.add_paragraph(m, style='List Bullet')

        # default message
        if (msg == None):
            msg=[{'type':'p','text':'This is a CM&A quiz packet.  The quiz packet should have these characteristics:'},
                 {'type':'list','text':['Unique questions for each quiz (if possible) in the packet',
                            'Satisfaction of question minimums and maximums for each type (2018 rules)',
                            '"A" division quizzes have 50% current and 50% past periods.',
                            '"B" division quizzes are only current content, and will therefore have repeats.'+\
                            '  We have tried to keep these in the alternative questions 16A, 16B, etc.  Replace as necessary.']}]

        for ii, m in enumerate(msg):
            if (m['type'] == 'p'):
                # normal paragraph
                p = document.add_paragraph(m['text'])
            elif (m['type'] == 'list'):
                # bulleted list
                for mitem in m['text']:
                    document.add_paragraph(mitem, style='List Bullet')

        #
        # loop through quizzes
        #
        for qi, QZ in enumerate(quizData['quizzes']):

            chapList = sorted(QZ['CH'].unique())
            logger.debug('chapters: %s' % str(chapList))

            if (qi > 0):
                document.add_page_break()
            document.add_heading('Quiz %d' % (qi + 1), 1)

            table = document.add_table(rows=1, cols=4)
            #table.style = 'LightShading-Accent1'
            table.style = 'LightGrid-Accent1'
            hdr_cells = table.rows[0].cells
            hdr_cells[0].text = '#'
            hdr_cells[1].text = 'Type'
            hdr_cells[2].text = 'Question'
            hdr_cells[3].text = 'Verse'
            for k, cell in enumerate(hdr_cells):
                cell.width = width[k]

            #
            # loop through questions
            #
            ii = 0
            for idx, row in QZ.iterrows():
                ii += 1
                row_cells = table.add_row().cells

                # Question Number
                row_cells[0].text = row.qn
                # Question Type
                row_cells[1].text = row.TYPE

                # https://stackoverflow.com/questions/36894424/creating-a-table-in-python-docx-and-bolding-text#36897305

                #
                # Question/Answer cell
                #
                c = row_cells[2]
                q = 'Q: %s' % row.QUESTION
                keywords = row.QKEYWORDS.split(',')

                self.boldText(cell=c, text=q, keywords=keywords)
                c.add_paragraph()

                #
                # ANSWER
                #
                a = 'A: %s' % row.ANSWER
                keywords = row.AKEYWORDS.split(',')
                self.boldText(cell=c, text=a, keywords=keywords)

                # book, chapter, verse, and club (e.g. 150,300)
                txt = '%s %s:%s' % (row.BK, row.CH, row.VS)
                if (isinstance(row.VE, float)):
                    txt += '-%s' % str(int(row.VE))

                txt += '\n('
                if (isinstance(row.CLUB, float)):
                    #txt+='\n(%d)'%row.CLUB
                    txt += '%d,' % row.CLUB
                if (row.SET is not None):
                    txt += '%s' % row.SET
                txt += ')'

                # additional flags (repeats)
                c = row_cells[3]
                if ('R' in row['FLAGS']):
                    txt += '\nrepeat'
                    c._tc.get_or_add_tcPr().append(
                        parse_xml(r'<w:shd {} w:fill="FFFF00"/>'.format(
                            nsdecls('w'))))
                c.text = txt

                # adjust width
                for k, cell in enumerate(row_cells):
                    cell.width = width[k]

            #
            # quiz stats
            #
            stats = quizData['stats'][qi]
            qdist = quizData['distribution']
            if (quizData['type'] != 'custom'):
                #
                # normal quiz
                #
                # -- min distribution
                msg = 'Regular quiz distribution (does not include overtime); '
                first = 1
                # loop through all the types to show minimums
                for qt, cnt in stats['min'].items():
                    msg += '%s:%d-%d (' % (qt.upper(), cnt, stats['max'][qt])
                    if (first):
                        first = 0
                        msg += 'req: '
                    msg += '%d-%d), ' % (qdist[qt]['range'][0],
                                         qdist[qt]['range'][1])
                msg = msg[:-2]  # get rid of trailing space and comma at end
                #
                # -- period stats
                #
                msg += '; Question counts by period (numbered): '
                for period, cnts in stats['period'].items():
                    msg += '%s=%d; ' % (period, cnts[0])
                msg = msg[:-2]
            else:
                # custom quiz
                msg = 'Custom quiz distribution; '
                #for qt,cnt in self._countTypes(QZ).items():
                for qt, cnt in countTypes(QZ, qdist).items():
                    msg += ' %s(%d),' % (qt, cnt)
                msg = msg[:-1]
                print(msg)
            #
            # add stats to document
            #
            document.add_paragraph(msg)

        #
        # extra question
        #
        if (quizData['type'] != 'custom'):
            document.add_page_break()
            document.add_heading('Extra Questions', level=1)

            msg = """This section contains extra questions of each type for use during the quiz day.
            Make sure to mark the questions used as you use them.
            """
            p = document.add_paragraph(msg)

            for qt, v in quizData['extraQuestions'].items():
                tlist = ', '.join(
                    [x.upper() for x in quizData['distribution'][qt]['types']])
                document.add_heading(
                    '%s Extra Questions (%s)' %
                    (quizData['distribution'][qt]['label'], tlist),
                    level=2)

                table = document.add_table(rows=1, cols=4)
                table.style = 'LightGrid-Accent1'
                hdr_cells = table.rows[0].cells
                hdr_cells[0].text = '#'
                hdr_cells[1].text = 'Type'
                hdr_cells[2].text = 'Question'
                hdr_cells[3].text = 'Verse'
                for k, cell in enumerate(hdr_cells):
                    cell.width = width[k]

                ii = 0
                for idx, row in quizData['extraQuestions'][qt].iterrows():
                    ii += 1
                    row_cells = table.add_row().cells
                    row_cells[0].text = str(ii)
                    row_cells[0].width = width[0]
                    row_cells[1].text = row.TYPE
                    #row_cells[2].text = 'Q: %s\n\nA: %s'%(row.QUESTION,row.ANSWER)

                    #
                    # QUESTION
                    #
                    c = row_cells[2]
                    q = 'Q: %s' % row.QUESTION
                    keywords = row.QKEYWORDS.split(',')
                    self.boldText(cell=c, text=q, keywords=keywords)

                    c.add_paragraph()
                    #c.add_paragraph()

                    #
                    # ANSWER
                    #
                    a = 'A: %s' % row.ANSWER
                    keywords = row.AKEYWORDS.split(',')
                    self.boldText(cell=c, text=a, keywords=keywords)

                    #
                    # VERSES
                    #
                    txt = '%s %s:%s' % (row.BK, row.CH, row.VS)
                    if (isinstance(row.VE, float)):
                        txt += '-%s' % str(int(row.VE))
                    if (isinstance(row.CLUB, float)):
                        txt += '\n(%d)' % row.CLUB

                    #if(not np.isnan(row.VE)):
                    #    txt+='-%s'%row.VE
                    #row_cells[3].text = txt
                    c = row_cells[3]
                    if ('R' in row['FLAGS']):
                        txt += '\nrepeat'
                        c._tc.get_or_add_tcPr().append(
                            parse_xml(r'<w:shd {} w:fill="FFFF00"/>'.format(
                                nsdecls('w'))))
                    c.text = txt

                    for k, cell in enumerate(row_cells):
                        cell.width = width[k]

        document.save(fn)
        print('Done writing quiz packet (%s)' % fn)
Esempio n. 13
0
def write4answersheet(answer_sheet_data):
    '''
    answer_sheet_data = {
        "name": paper_data["name"],
        "main_title": "{}-答题卡".format(paper_data["main_title"]),
        "testee": paper_data["testee"],
        "sheet": answer_sheet
    }
    answer_sheet[key].append({
                "q_no": ques_no,
                "pic_in_card": pic_in_card,
                "options": [v["key"] for v in options if v.get("key")],
                "subques_len": len(subquestions) if subquestions else 0
            })
    '''
    sheet = answer_sheet_data.get('sheet', {})
    sheet_name = answer_sheet_data.get('name')
    main_title = answer_sheet_data.get('main_title')
    answer_path = r'nile/static/mark_pic/answersheet.docx'
    os.makedirs("/tmp/paper", exist_ok=True)
    t0 = int(round(time.time() * 1000))
    tmp_path = '/tmp/paper/%d.docx' % t0
    os.system('cp %s %s' % (answer_path, tmp_path))
    document = Document(tmp_path)
    # 设置整个文档的默认字体
    microsoft_font = u'宋体'  # u 表示后面的字符串以 Unicode 格式进行编码
    black_font = u'黑体'
    number_font = 'Times New Roman'
    area = qn('w:eastAsia')
    document.styles['Normal'].font.name = microsoft_font
    document.styles['Normal'].font.size = Pt(10.5)
    document.styles['Normal'].font.color.rgb = RGBColor(0, 0, 0)
    document.styles['Normal']._element.rPr.rFonts.set(area, number_font)
    # 指定段落样式
    styles = document.styles
    # fls = time.time()
    # strr = 'lbj_Style%s' %fls  #自定义的样式的名称
    # strr = strr.replace('.', '')
    # strr = strr + ''.join(random.sample('zyxwvutsrqponmlkjihgfedcbaABCDEFGHIJKLMNOPQRST', 5))
    s = styles.add_style('lbj_Style', WD_STYLE_TYPE.PARAGRAPH)
    s.font.name = microsoft_font
    s.font.size = Pt(10.5)
    s.font.color.rgb = RGBColor(0, 0, 0)
    s.paragraph_format.line_spacing = Pt(0)  # 行距值
    s.paragraph_format.space_before = Pt(0)  # 段前距
    s.paragraph_format.space_after = Pt(0)  # 段后距
    s.paragraph_format.line_spacing_rule = WD_LINE_SPACING.SINGLE  # 行间距
    s._element.rPr.rFonts.set(area, number_font)  # 除中文外其它文字 使用的字体 ,备选项

    paper_num_count_flag = 0  # 页面是否有页码条形码
    run = document.paragraphs[0]
    run.style = s
    p = run.add_run(main_title)
    font = p.font
    font.name = black_font
    font.color.rgb = RGBColor(0, 0, 0)
    font.size = Pt(15)
    run.alignment = WD_ALIGN_PARAGRAPH.CENTER
    p = document.add_paragraph()
    p.add_run().add_picture(r'nile/static/mark_pic/prefix_2.png')

    p = document.add_paragraph()
    # p.add_run().add_break()
    run = p.add_run('选择题(请用2B铅笔填涂)')
    run.bold = True
    run.font.size = Pt(12)
    run.font.name = black_font
    # sub_mark_num_vec = []  # 每页竖长条表示块数量
    sub_mark_num = 0  # 竖长条表示块总数量
    sub_mark_choice = []  # 选择题黑块区域
    sub_mark_fillin = []  # 填空题黑块区域
    sub_mark_eassy = []  # 简答题黑块区域
    qus_range_choice = []  # 选择题题号范围
    qus_range_fillin = []  # 填空题题号范围
    qus_range_eassy = []  # 简答题题号范围
    paper_num = 0  # 页数
    ques_no = 0  # 题号
    choice_answer_cnt = []  # 选项列数
    choice_line_number = []  # 每行的题目数量
    choice_answer_pattern = []  # 每列选择题数目
    choice_col_num = []  # 选择题每行的列数
    option_len = []
    choice_ques_no, mm, combine_ques_index = [], [], []
    # break_page_ques_no = []  # 如果选择题分页时的题号
    count_ques = 0
    for key, value in sheet.items():
        if key == 'choice_question_all':
            for k in range(len(value)):
                q_no = value[k].get("q_no")
                opt_len = len(value[k].get("options"))
                mm.append(q_no)
                if not isinstance(q_no, list):
                    option_len.append(opt_len)
                else:
                    for qq in q_no:
                        option_len.append(opt_len)
    for i in range(len(mm)):
        if isinstance(mm[i], list):
            count_ques += len(mm[i])
            combine_ques_index.append(i)
            for j in mm[i]:
                choice_ques_no.append(j)
        else:
            count_ques += 1
            choice_ques_no.append(mm[i])
    # 选项个数不一样
    group_choice_count = {}
    group_choice_opt = {}  # 各选项数对应的选项数集合
    group_choice_num = {}  # 各选项数对应的题号集合
    for opt_i in range(len(option_len)):
        pre = option_len[opt_i]
        if not group_choice_count.get(pre):
            group_choice_count[pre] = 0
            group_choice_num[pre] = []
            group_choice_opt[pre] = []
        count = group_choice_count[pre]
        group_choice_count[pre] = count + 1
        group_choice_num[pre].append(choice_ques_no[opt_i])
        group_choice_opt[pre].append(option_len[opt_i])
    choice_group = sheet.get('choice_question', [])
    choice_len = len(choice_group)
    choice_len_sum = len(choice_ques_no)  # 选择题总数,包括组合题中的小选择题
    fillin_group = sheet.get('fillin_question', [])
    fillin_len = len(fillin_group)
    fs_num = fillin_group[0].get('q_no') if fillin_group else 0  # 填空题开始的题号
    subjective_question = sheet.get('subjective_question', [])
    subjec_len = len(subjective_question)
    ss_num = subjective_question[0].get('q_no') if subjective_question else 0  # 主观题开始的题号
    combine_question = sheet.get('combine_question', [])

    pic_in_sub = [[] for x in range(subjec_len)]
    pic_num = 0
    for ques in subjective_question:
        pic_in_card = ques.get('pic_in_card', "")
        pic_in_sub[pic_num] = pic_in_card if pic_in_card else []
        pic_num += 1
    tmp = []
    for i in range(len(mm)):
        if isinstance(mm[i], list):
            if tmp:
                qus_range_choice.append(tmp)
                tmp = []
            qus_range_choice.append(mm[i])
        else:
            tmp.append(mm[i])

    if not combine_question:
        qus_range_choice.append(tmp)
    else:
        if not isinstance(mm[-1], list):
            qus_range_choice.append(tmp)

    if fillin_group:
        qus_range_fillin.append(fs_num)
        qus_range_fillin.append(fs_num + fillin_len - 1)
    if subjective_question:
        qus_range_eassy.append(ss_num)
        qus_range_eassy.append(ss_num + subjec_len - 1)

    # row_n, row_rest = divmod(choice_len_sum, 15)
    # choice_row_num = row_n + 1 if row_rest else row_n  # 选择题行数
    # choice_row_num = [choice_row_num] if choice_row_num <= 4 else [4, choice_row_num-4]
    choice_row_num = 0
    rest = 0
    break_num = 0
    ap_n = 0  # choice_answer_pattern分页时的块数
    for key, value in group_choice_count.items():
        row_n, row_rest = divmod(value, 15)
        row_n5, row_rest5 = divmod(value, 5)
        for i in range(row_n):
            choice_line_number.append(5)
            choice_col_num.append(3)
        if row_rest:
            if row_rest > 10:
                choice_col_num.append(3)
            elif row_rest > 5:
                choice_line_number.append(5)
                choice_col_num.append(2)
            else:
                choice_line_number.append(row_rest)
                choice_col_num.append(1)
        for i in range(row_n5):
            choice_answer_pattern.append(5)
        if row_rest5:
            choice_answer_pattern.append(row_rest5)
        count_ed = row_n + 1 if row_rest else row_n
        choice_row_num += count_ed
        for i in range(count_ed):
            choice_answer_cnt.append(key)
        if choice_row_num == 4:
            rest = row_rest
        if choice_row_num > 4:
            if not break_num:
                if not rest:
                    break_num = group_choice_num[key][value - row_rest + 1]
                else:
                    break_num = group_choice_num[key][0]
    choice_row_num = [choice_row_num] if choice_row_num <= 4 else [4, choice_row_num - 4]
    choice_answer_cnt = [choice_answer_cnt] if not break_num else [choice_answer_cnt[:4], choice_answer_cnt[4:]]
    choice_col_num = [choice_col_num] if not break_num else [choice_col_num[:4], choice_col_num[4:]]
    choice_line_number = [choice_line_number] if not break_num else [choice_line_number[:4], choice_line_number[4:]]
    logger.info("group_choice_count========================={}".format(group_choice_count))
    logger.info("choice_answer_cnt========================={}".format(choice_answer_cnt))
    logger.info("choice_line_number========================={}".format(choice_line_number))

    group_choice_num_ = sorted(group_choice_num.items(), key=lambda d: d[0])
    group_choice_opt_ = sorted(group_choice_opt.items(), key=lambda d: d[0])
    group_choice_count_ = sorted(group_choice_count.items(), key=lambda d: d[0])
    # logger.info("group_choice_num_========================={}".format(group_choice_num_))
    choice_num = []
    for key, value in group_choice_num_:
        if isinstance(value, list):
            for i in value:
                choice_num.append(i)
        else:
            choice_num.append(value)
    choice_opt = []
    for key, value in group_choice_opt_:
        if isinstance(value, list):
            for i in value:
                choice_opt.append(i)
        else:
            choice_opt.append(value)

    row0 = choice_row_num[0]
    if break_num:
        for nn in choice_col_num[0:4]:
            ap_n += nn
        choice_answer_pattern = [choice_answer_pattern[0:ap_n], choice_answer_pattern[ap_n:]]
        row1 = choice_row_num[1]
        index = choice_ques_no.index(break_num)
        write_option(ques_no, choice_num[0:index], choice_opt[0:index], row0, document)
        document.add_page_break()
        write_option(ques_no, choice_num[index:], choice_opt[index:], row1, document)
    else:
        choice_answer_pattern = [choice_answer_pattern]
        write_option(ques_no, choice_num, choice_opt, row0, document)
    # write_option(ques_no, choice_len_sum, option_len, choice_ques_no, document)
    writeline(document, black_font)
    num, paper_num = choice0_60(fillin_len, fs_num, document, paper_num)
    paper_num += num

    if ss_num:
        sub_subjective(ss_num, paper_num, document, pic_in_sub)

    block_num = 0
    start = 0
    step = 3
    if choice_len_sum:
        for n in range(len(choice_row_num)):
            block_num += 1
            sub_mark_choice.append(start + step * (block_num - 1) - (block_num - 1))
            sub_mark_choice.append(start + step * block_num - (block_num - 1))
    if fillin_len:
        block_num += 1
        sub_mark_fillin.append(start + step * (block_num - 1) - (block_num - 1))
        sub_mark_fillin.append(start + step * block_num - (block_num - 1))
        if not subjec_len:
            index = sub_mark_fillin[-2]
            sub_mark_fillin.pop(-1)
            sub_mark_fillin.append(index + 1)
        else:
            for n in range(subjec_len):
                block_num += 1
                sub_mark_eassy.append(start + step * (block_num - 1) - (block_num - 1))
                sub_mark_eassy.append(start + step * block_num - (block_num - 1))
            if subjec_len == 1:
                index = sub_mark_eassy[-2]
                sub_mark_eassy.pop(-1)
                sub_mark_eassy.append(index + 1)
    else:
        if subjec_len:
            for n in range(subjec_len):
                block_num += 1
                sub_mark_eassy.append(start + step * (block_num - 1) - (block_num - 1))
                sub_mark_eassy.append(start + step * block_num - (block_num - 1))
            if subjec_len == 1:
                index = sub_mark_eassy[-2]
                sub_mark_eassy.pop(-1)
                sub_mark_eassy.append(index + 1)
        else:
            if sub_mark_choice:
                index = sub_mark_choice[-2]
                sub_mark_choice.pop(-1)
                sub_mark_choice.append(index + 1)

    #  return sub_mark_num
    for i in range(len(choice_row_num)):
        sub_mark_num += 2
    if fillin_len:
        sub_mark_num += 2
    for num in range(subjec_len):
        sub_mark_num += 2

    t1 = int(round(time.time() * 1000))
    doc_file_name = "{}-答题卡".format(sheet_name or str(t1))
    return_path = '/tmp/paper/%s.%s' % (doc_file_name, 'docx')
    document.save(return_path)
    sub_json_data = {}
    tmp_sub_mark_choice = []
    for i in range(len(choice_row_num)):
        tmp_sub_mark_choice.append([sub_mark_choice[i * 2], sub_mark_choice[i * 2 + 1]])
    logger.info("sub_mark_choice========================={}".format(sub_mark_choice))
    sub_json_data['sub_mark_choice'] = tmp_sub_mark_choice
    sub_json_data['sub_mark_fillin'] = sub_mark_fillin
    sub_json_data['sub_mark_eassy'] = sub_mark_eassy
    sub_json_data['sub_mark_num'] = sub_mark_num
    # sub_json_data['sub_mark_num_vec'] = sub_mark_num_vec
    sub_json_data['page_num'] = paper_num
    # sub_json_data['paper_num_count_flag'] = paper_num_count_flag
    sub_json_data['choice_answer_cnt'] = choice_answer_cnt
    sub_json_data['choice_line_number'] = choice_line_number
    sub_json_data['choice_answer_pattern'] = choice_answer_pattern
    sub_json_data['choice_col_num'] = choice_col_num
    sub_json_data['choice_row_num'] = choice_row_num
    sub_json_data['qus_range_choice'] = qus_range_choice
    sub_json_data['qus_range_fillin'] = qus_range_fillin
    sub_json_data['qus_range_eassy'] = qus_range_eassy
    logger.info("sub_json_data========================={}".format(sub_json_data))
    json_json = get_json(sub_json_data)
    logger.info("json_json========================={}".format(json_json))
    return return_path, sub_json_data
Esempio n. 14
0
def docCreator():
    weekdays = Day_Info.objects.all().order_by('order')
    #theDate = datetime.date.today() #this may need to be replaced by a prompt of some kind
    #strDate = theDate.strftime('%m/%d/%Y')
    #intDay = int(theDate.day)
    theDay = datetime.date.today()
    weekList = []
    weekdayNumber = theDay.weekday()
    wkcounter = 0
    while wkcounter < 7:
        weekList.append(weekdayNumber)
        if weekdayNumber == 6:
            weekdayNumber = 0
        else:
            weekdayNumber += 1
        wkcounter += 1
    weekdays3 = [weekdays[i] for i in weekList]
    theDayDay = theDay.day
    theDayMo = theDay.month
    theDayYear = theDay.year
    for weekday in weekdays3: #this area allows for the program to be run any day
        #intDay = intDay + 1
        
        checkDate = datetime.date(theDayYear,theDayMo,theDayDay)
        theDayDay += 1
        amJobs = Job.objects.filter(day__contains = weekday).filter(time='am')
        pmJobs = Job.objects.filter(day__contains = weekday).filter(time='pm')
        #jobs = Job.objects.all()
        students = Student.objects.filter(arrival_Date__lt=checkDate)
        arrivals = Student.objects.filter(arrival_Date = checkDate)
        departures = Student.objects.filter(departure_Date = checkDate)
        strArrivals = ""
        strDepartures = ""
        for a in arrivals:
            strArrivals += (a.first_Name + " ")
            
        for d in departures:
            strDepartures += (d.first_Name + " ")
       
       
        jobnames = []
        jobnamesB = []
        
        studentnames = []  
        strstudentnames = ""
        mealplace = ["a","b"]
        
        schdictAM = {}
        schdictPM = {}
        mealdict = {}
        
        for s in students:
            studentnames.append(s.first_Name)
            strstudentnames += (s.first_Name + " ")
        
        
        random.shuffle(studentnames)
        a = 0    
        b = 3
        
        for j in amJobs:
            jobnames.append(j.work_Name)
            schdictAM[j.work_Name] = studentnames[a:b]
            del studentnames[a:b]
            a+=3
            b+=3
        
        
        q = 0    
        r = 3
        for jb in pmJobs:
            jobnamesB.append(jb.work_Name)
            schdictPM[jb.work_Name] = studentnames[q:r]
            q+=3
            r+=3
        
        c = 0
        d = 0
        if len(studentnames) -1 > 14:        
            d = (len(studentnames)-1) /2
            
        else:
            d = len(studentnames)-1
            
        for m in mealplace:
            mealdict[m] = studentnames[c:d]
            
            if d == len(studentnames)-1:
                break 
            c = d
            d = len(studentnames)-1 # comeback
        
        lunch = ""
        for m in mealdict:
            #lunch += m         
            for ele in mealdict[m]:
                lunch += (ele + " ")

        workAM = ""
        
        for w in schdictAM:           
            
            if workAM != "":
                workAM += "\n"            
            workAM += (w + "- ")
            
            for wele in schdictAM[w]:
                workAM += (wele + "  ") 
                # if wele == "Morning Grounds":
                    # break
                
        
        workPM = ""
        
        for w in schdictPM:                      
            if workPM != "":
                workPM += "\n"            
            workPM += (w + "- ")
                
            for wele in schdictPM[w]:
                workPM += (wele + "  ") 
                    # if wele == "Morning Grounds":
                        # break
        
        
        
        document = docx.Document()#creating document
        
        
        #assign day
        pweekday = checkDate.strftime('%A' ) + " " + checkDate.strftime('%B' ) +  " " + str(checkDate.day) 
        #pweekday = str(weekdays) + str(weekdays3)
        day = document.add_paragraph(pweekday)
        day_format = day.paragraph_format
        day_format.space_after = Pt(18)
        day_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        
        #breakfast infor
        breakfastTime = document.add_paragraph("8:00am Breakfast -(everyone expected)")
        breakfastTime_format = breakfastTime.paragraph_format
        breakfastTime_format.space_after = Pt(18)
        breakfastTime_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        locationB = document.add_paragraph("At Chalet Bellevue")
        locationB_format = locationB.paragraph_format
        locationB_format.space_after = Pt(18)
        locationB_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        
        tableB = document.add_table(rows=1, cols=1)
        tableB.borders={'All':Pt(.2)}
        row1B = tableB.rows[0]
        cell1B = row1B.cells[0]
        cell1B.text = strstudentnames
        
        arrivals = document.add_paragraph("Arrivals: " + strArrivals)
        arrivals_format = arrivals.paragraph_format
        arrivals_format.space_before = Pt(18)
        arrivals_format.space_after = Pt(0)
        arrivals_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        departures = document.add_paragraph("Departures: " + strDepartures)
        departures_format = departures.paragraph_format
        departures_format.space_after = Pt(18)
        departures_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        
        
        
        if weekday.Lunch_A != 'none':
            lunchTime = document.add_paragraph("1:00 Lunch-(everyone expected)")    
            lunchTime_format = lunchTime.paragraph_format
            lunchTime_format.space_after = Pt(18)
            lunchTime_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
            
            locationLa = document.add_paragraph("At Chalet " + weekday.Lunch_A)#plus the location  
            locationLa_format = locationLa.paragraph_format
            locationLa_format.space_after = Pt(18)
            locationLa_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
            tableLa = document.add_table(rows=1, cols=1)
            row1La = tableLa.rows[0]
            cell1La = row1La.cells[0]
            cell1La.text = strstudentnames
        else:
            locationLa = document.add_paragraph("Packed lunches are in the student fridge")
            locationLa_format = locationLa.paragraph_format
            locationLa_format.space_after = Pt(18)
            locationLa_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        
        
        
        if len(studentnames) > 14 and weekday.Lunch_B != 'none':
            locationLb = document.add_paragraph("At Chalet " + weekday.Lunch_B)#plus the location         
            locationLb_format = locationLb.paragraph_format
            locationLb_format.space_after = Pt(18)
            locationLb_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
            tableLb = document.add_table(rows=1, cols=1)
            row1Lb = tableLb.rows[0]
            cell1Lb = row1Lb.cells[0]
            cell1La.text = lunch[0: int(round((len(lunch)/2 -1)))] # comeback to this
            cell1Lb.text = lunch[ int(round((len(lunch))/2 )):len(lunch) - 1]
        
        dinnerTime = document.add_paragraph("6:30 Dinner -(everyone expected)")    
        dinnerTime_format = dinnerTime.paragraph_format
        dinnerTime_format.space_before = Pt(40)
        dinnerTime_format.space_after = Pt(18)
        dinnerTime_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        locationD = document.add_paragraph("At Chalet Bellevue with " + weekday.dinner)
        locationD_format = locationD.paragraph_format
        locationD_format.space_after = Pt(18)
        locationD_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        tableD = document.add_table(rows=1, cols=1)
        row1D = tableD.rows[0]
        cell1D = row1D.cells[0]
        cell1D.text = strstudentnames
        
        workPara = document.add_paragraph("Work Assignments: if your name is not down for a work crew, you have a study day:")    
        workPara_format = workPara.paragraph_format
        workPara_format.space_before = Pt(20)
        workPara_format.space_after = Pt(6)
        workPara_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
        tablew = document.add_table(rows=1, cols=2)
        cell1w = tablew.rows[0].cells[0]
        cell1w.text = ("am\n \n 7:30 Breakfast Prep: \n 7:50 Trash out- \n 9:30am: \n \n" + workAM)
        cell2w = tablew.rows[0].cells[1]
        cell2w.text = ("pm\n \n 3:00pm:\n \n" + workPM + "\nInternet collection at dinner- \nNight Office- \nDay Off- ")
        document.save('oldschedules/' + pweekday +'.docx')
Esempio n. 15
0
def format_normal(document):
    document.styles['Normal'].font.name = over_all_font
    document.styles['Normal'].font.size = Pt(15)
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
def create_word_for_syslog(db_name, add_img, save_word_name):
    today = time.strftime("%Y{y}%m{m}%d{d}", time.localtime()).format(y='年', m='月', d='日')

    document = Document()

    # 设置文档的基础字体
    document.styles['Normal'].font.name = u'微软雅黑'
    document.styles['Normal'].font.size = Pt(14)
    # 设置文档的基础样式
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
    # 在文件最上头插入图,宽度为6英寸
    document.add_picture(add_img, width=Inches(6))

    # 初始化建立第一个自然段
    p1 = document.add_paragraph()
    # 对齐方式为居中,没有这句的话默认左对齐。
    p1.alignment = WD_ALIGN_PARAGRAPH.CENTER

    # 设置标题
    run1 = p1.add_run('乾颐堂Python强化班Syslog分析')
    # 设置西文字体
    run1.font.name = '微软雅黑'
    # 设置中文字体
    run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')
    # 设置字体大小为20磅
    run1.font.size = Pt(20)
    # 设置加粗
    run1.font.bold = True
    # 段后距离1磅
    p1.space_after = Pt(1)
    # 段前距离5磅
    p1.space_before = Pt(5)

    # 初始化建立第二个自然段
    p2 = document.add_paragraph()

    # 产生数据和图
    syslog_result = syslog_bing(db_name, 'temp.png')
    # 第二个自然段主题
    run2 = p2.add_run('下面是最近一个小时的Syslog的数据统计! 显示排前三的Syslog严重级别与数量')
    # 字体和大小
    run2.font.name = '仿宋_GB2312'
    run2._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
    run2.font.size = Pt(10)

    # 创建表
    table = document.add_table(rows=4, cols=3, style='Light Grid Accent 2')

    # 第一行
    table.cell(0, 0).text = '严重级别'
    table.cell(0, 1).text = '数量'
    table.cell(0, 2).text = '百分比'

    total = sum([y for x, y in syslog_result])

    # 后续行
    i = 1
    for x, y in syslog_result[:3]:
        table.cell(i, 0).text = x
        table.cell(i, 1).text = str(int(y))
        table.cell(i, 2).text = f'{(y/total)*100:.1f}'
        i += 1

    # 初始化建立第三个自然段
    p3 = document.add_paragraph()
    # 第二个自然段主题
    run3 = p3.add_run('\r\n下面是最近一个小时的Syslog的数据统计饼状图分析!')
    # 字体和大小
    run3.font.name = '仿宋_GB2312'
    run3._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')
    run3.font.size = Pt(10)
    # 插入图片
    document.add_picture('temp.png', width=Inches(3.0), height=Inches(3.0))
    # 删除图片
    os.remove('temp.png')

    # 保存文档
    document.save(save_word_name)
Esempio n. 17
0
def format_heading_run(heading_run: Run):
    heading_run.font.name = over_all_font
    heading_run.font.size = Pt(17)
    heading_run._element.rPr.rFonts.set(qn('w:eastAsia'), over_all_font)
    heading_run.bold = True
Esempio n. 18
0
def get_conference_schedule_file(short_name, type):
    """Download conference schedule."""
    conference = Conference.query.filter_by(short_name=short_name).first()
    if type not in ['txt', 'doc']:
        return bad_request('Invalid file type')
    if conference:
        sessions = conference.conference_schedule.get_sessions.all()
        if type == 'txt':
            txts = []
            for session in sessions:
                txts.append(
                    u'{session.start_time}\t{session.end_time}\t{session.title}\t\
                    {session.venue}'.format(session=session))
            return Response('\n'.join(txts),
                            mimetype='text/plain',
                            headers={
                                'Content-disposition':
                                'attachment; \
                                filename={}_schedule.txt'.format(
                                    conference.short_name)
                            })
        else:
            # only allow chair to download the doc
            if (current_user.is_anonymous) or \
                    (not current_user.is_chair(conference)):
                return forbidden('Not allowed')
            with io.BytesIO() as doc_stream:
                doc_document = Document()
                doc_document.add_heading(conference.name, 1)
                for session in sessions:
                    p = doc_document.add_paragraph(
                        u'{session.start_time} - {session.end_time}: '
                        '{session.title}'.format(session=session),
                        style='ListBullet')
                    p.runs[0].font.size = Pt(13)
                    p.add_run('\nVenue: ' + session.venue)
                    speakers = session.speakers.all()
                    if speakers:
                        p.add_run('\nSpeakers:')
                        for speaker in speakers:
                            p.add_run('\n\t{speaker.full_name} '
                                      '({speaker.organization})'.format(
                                          speaker=speaker))
                    moderators = session.moderators.all()
                    if moderators:
                        p.add_run('\nChairs:')
                        for moderator in moderators:
                            p.add_run('\n\t{moderator.full_name} '
                                      '({moderator.organization})'.format(
                                          moderator=moderator))
                    papers = session.papers
                    if papers != []:
                        p.add_run('\nPapers:')
                        for paper in papers:
                            r = p.add_run('\n\t' + paper.title)
                            r.italic = True
                            r.bold = True
                            p.add_run('\n\t\t' + ', '.join([
                                author.full_name
                                for author in paper.authors_list
                            ]))
                doc_document.save(doc_stream)
                return Response(doc_stream.getvalue(),
                                mimetype='application/msword',
                                headers={
                                    'Content-disposition':
                                    'attachment; \
                                    filename={}_schedule.doc'.format(
                                        conference.short_name)
                                })
    else:
        return bad_request('Conference not found')
Esempio n. 19
0
#     print(style.name)

document.add_heading('文章标题', 0)

p = document.add_paragraph('一个段落是由多个 ')
p.add_run('run').bold = True
p.add_run('联接')
p.add_run('组成的').italic = True

p = document.add_paragraph()
text = '一个人的命运当然要靠自我奋斗,但是也要考虑到历史的进程'
for i, ch in enumerate(text):
    run = p.add_run(ch)
    font = run.font
    font.name = '华文彩云'
    font.size = Pt(20)
    font.color.rgb = RGBColor(i * 10 % 200 + 55, i * 20 % 200 + 55,
                              i * 30 % 200 + 55)

document.add_heading('一级标题', level=1)
document.add_paragraph('Intense quote', style='IntenseQuote')

document.add_paragraph('first item in unordered list', style='ListBullet')
document.add_paragraph('first item in unordered list', style='ListBullet')
document.add_paragraph('first item in ordered list', style='ListNumber')
document.add_paragraph('first item in ordered list', style='ListNumber')

styles = document.styles
document.add_heading('段落样式:', level=1)
# paragraph_styles=[s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH]
# for s in paragraph_styles:
Esempio n. 20
0
def crear():
    ss = openpyxl.load_workbook(ex.get() + ".xlsx")
    sheet = ss.get_sheet_by_name(hoja.get())

    for i in sheet.iter_rows(max_row=0):
        n = len(i)
    #Extraemos datos de contrato desde Excel
    for j in range(6, n):
        nombre = sheet.cell(row=j, column=1).value
        nacionalidad = sheet.cell(row=j, column=2).value
        domicilio = sheet.cell(row=j, column=3).value
        curp = sheet.cell(row=j, column=4).value
        rfc = sheet.cell(row=j, column=5).value
        start = sheet.cell(row=j, column=6).value
        final = sheet.cell(row=j, column=7).value
        hrs = sheet.cell(row=j, column=8).value
        hrs = str(hrs)
        importe = sheet.cell(row=j, column=9).value
        importe = str(importe)
        importe_letra = sheet.cell(row=j, column=10).value
        antiguedad = sheet.cell(row=j, column=11).value

        #Creamos el docx
        doc = docx.Document()
        paragraph = doc.add_paragraph()
        run = paragraph.add_run(
            "CONTRATO INDIVIDUAL DE TRABAJO POR TIEMPO DETERMINADO PARA PROFESORES"
        )
        font = run.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        font.color.rgb = RGBColor(0x00, 0x00, 0x00)
        font.name = 'Tahoma'
        font.size = Pt(11)
        font.bold = True

        paragraph = doc.add_paragraph()
        run = paragraph.add_run(
            "CONTRATO INDIVIDUAL DE TRABAJO POR TIEMPO DETERMINADO PARA MAESTROS QUE CELEBRAN POR UNA PARTE EL COLEGIO "
        )
        font = run.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run1 = paragraph.add_run('"INSTITUTO FRANCISCO POSSENTI, A. C." ')
        run1.bold = TRUE
        font = run1.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run = paragraph.add_run(
            "CON DOMICILIO EN AV. TOLUCA No. 621 COL. OLIVAR DE LOS PADRES DEL. ALVARO OBREGON C. P. 01780 REPRESENTADO POR EL C. "
        )
        font = run.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run1 = paragraph.add_run("J. ANTONIO BARRIENTOS RODRIGUEZ ")
        run1.bold = TRUE
        font = run1.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run = paragraph.add_run(
            "A QUIEN EN LO SUCESIVO SE DENOMINARA EL PATRON, Y POR LA OTRA. " +
            nombre + " DE NACIONALIDAD " + nacionalidad + " CON DOMICILIO " +
            domicilio +
            ", A QUIEN EN ADELANTE SE DENOMINARA EL TRABAJADOR, DE ACUERDO CON LAS SIGUIENTES:"
        )
        font = run.font
        paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        clau = doc.add_paragraph()
        run2 = clau.add_run("C L A U S U L A S ")
        font = run2.font
        clau.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
        font.color.rgb = RGBColor(0x00, 0x00, 0x00)
        font.name = 'Arial'
        font.size = Pt(11)
        font.bold = True

        paragraph2 = doc.add_paragraph()
        run3 = paragraph2.add_run("PRIMERA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraph2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph2.add_run(
            "El (a) Profesor (a) manifiesta, bajo protesta de decir verdad, que tiene la Clave Única de Registro de Población "
            + curp + " y el Registro Federal de Contribuyentes " + rfc +
            " que tiene  la capacidad, aptitudes, facultades y conocimientos necesarios para desempeñar el trabajo que se le encomienda, así como  la documentación completa y actualizada por la Secretaria de Educación Publica y/o la UNAM, así como  a las disposiciones señaladas por los artículos 42 fracción VII, de la nueva Ley Federal  del Trabajo publicada en el Diario Oficial de la Federación el día 30 de noviembre  del 2012  que se requiere así como está de acuerdo en que el no cumplir con cualquiera de estos requisitos será causa suficiente para que el patrón le rescinda su contrato de trabajo en el momento que tenga conocimiento de la carencia de alguna de esta condiciones, así mismo se compromete a que en caso de que el profesor (a)  cambie de domicilio durante la vigencia del presente contrato notificará por escrito al patrón dentro de los  cinco días siguientes que cambie de domicilio. "
        )
        font = run3.font
        paragraph2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph3 = doc.add_paragraph()
        run3 = paragraph3.add_run("SEGUNDA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraph3.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph3.add_run(
            "Este contrato por exigencias expresas de la Secretaría de Educación Pública se celebra por tiempo determinado, el cual se precisa en el  Acuerdo "
        )
        font = run3.font
        paragraph3.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph3.add_run("14/072020 ")
        run3.bold = TRUE
        font = run3.font
        paragraph2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph3.add_run(
            "de la Secretaría de Educación Pública publicado en el Diario Oficial del "
        )
        font = run3.font
        paragraph3.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph3.add_run("03 DE AGOSTO DEL 2020, ")
        run3.bold = TRUE
        font = run3.font
        paragraph2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph3.add_run(
            "y sólo podrá modificarse, rescindirse o terminarse en los casos y condiciones especificados en la Ley Federal del Trabajo, o por aquellas autoridades que en su momento cuenten con facultades suficientes para modificar, rescindir o dar por terminado el presente contrato. "
        )
        font = run3.font
        paragraph3.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph4 = doc.add_paragraph()
        run3 = paragraph4.add_run("TERCERA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraph4.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph4.add_run(
            "El Patrón y el (a) Profesor (a), convienen expresamente y con fundamento en el Art. 47 Fracción I de la Ley Federal del Trabajo, que dentro de los primeros treinta días o cuando el patrón tenga conocimiento de la carencia o incumplimiento de alguna de las condiciones básicas requeridas para desempeñar el trabajo contratado, se podrá rescindir este Contrato de Trabajo sin responsabilidad para el Patrón. "
        )
        font = run3.font
        paragraph4.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph5 = doc.add_paragraph()
        run3 = paragraph5.add_run("CUARTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraph5.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph5.add_run(
            "El (a) Profesor (a) se obliga a prestar sus servicios personales al INSTITUTO, bajo su dirección, dependencia y subordinación, las cuales consistirán precisamente en: "
        )
        font = run3.font
        paragraph5.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph6 = doc.add_paragraph()
        run3 = paragraph6.add_run(
            "Proporcionar personalmente, a los alumnos que se le indiquen o le sean asignados enseñanza eficiente durante el tiempo determinado del ciclo Escolar vigente, y como lo dispone el artículo 56 Bis de la nueva Ley Federal del Trabajo publicada en el Diario Oficial de la Federación el día 30 de noviembre del 2012,  sujetándose a los programas y planes de estudio correspondientes que le sean entregados por el INSTITUTO, debidamente autorizados. "
        )
        font = run3.font
        paragraph6.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph6 = doc.add_paragraph()
        run3 = paragraph6.add_run(
            "El presente contrato se celebra por un tiempo que será de " +
            start + " y termina " + final)
        font = run3.font
        paragraph6.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph7 = doc.add_paragraph()
        run3 = paragraph7.add_run("QUINTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraph7.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraph7.add_run(
            "Los servicios contratados se estipulan en forma enunciativa y no limitativa; por tanto, el (a) Profesor (a)  se obliga a desempeñar  todas las labores anexas o conexas con su obligación principal y las demás que le ordene el Patrón o sus representantes, tales como guardias escolares, cursos de verano, de capacitación de reprogramación de estudios, exámenes extraordinarios, exámenes de diagnóstico, noche colonial, exámenes de admisión, ofrenda de día de muertos, posada navideña etc, cuya retribución económica está convenida y comprendida en la Cláusula Décima Primera del presente contrato."
        )
        font = run3.font
        paragraph7.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph8 = doc.add_paragraph()
        run3 = paragraph8.add_run(
            "De la misma manera y solo para el caso de que sea aplicable y derivado de  un caso  fortuito o fuerza mayor las modificaciones al presente contrato referidas en las reformas al artículo  311 de la Ley Federal del Trabajo capitulo XII Bis en materia de Teletrabajo publicada en el diario Oficial de la federación el día 11 de enero del 2021.  "
        )
        font = run3.font
        paragraph8.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraph9 = doc.add_paragraph()
        run3 = paragraph9.add_run(
            "La desobediencia a las órdenes o indicaciones del Patrón o sus representantes para el cumplimiento del trabajo contratado, será causa de rescisión sin responsabilidad para el Patrón."
        )
        font = run3.font
        paragraph9.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphA = doc.add_paragraph()
        run3 = paragraphA.add_run("SEXTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphA.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphA.add_run(
            "Los servicios objeto de la relación de trabajo deben prestarse en el lugar o en los lugares que designe el Patrón o sus representantes, quedando convenido que éste tendrá derecho de cambiar el lugar de trabajo del (a) profesor (a) cuando se estime pertinente o necesario, siempre y cuando dicho cambio no se traduzca en una merma de su remuneración para el (la) mismo (a),esto incluye para aquellos casos donde las autoridades competentes establezcan el cierre de la fuente de trabajo derivado de caso fortuito o fuerza mayor así como las posibles modificaciones al presente contrato según las reformas al artículo 311 de la ley Federal del Trabajo capitulo XII Bis en materia de teletrabajo publicada en el diario oficial de la federación el día 11 de enero del 2021. "
        )
        font = run3.font
        paragraphA.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphB = doc.add_paragraph()
        run3 = paragraphB.add_run("SEPTIMA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphB.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphB.add_run(
            "La duración de la jornada de trabajo será de: ")
        font = run3.font
        paragraphA.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphB.add_run(hrs)
        run3.bold = TRUE
        font = run3.font
        paragraphB.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphB.add_run(" horas, ")
        run3.bold = TRUE
        font = run3.font
        paragraphB.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphB.add_run(
            "según horario anexo. El (la) Profesor (a) está de acuerdo en que deberá asistir los días que sean necesarios para las distintas actividades que se precisan en la cláusula quinta del presente contrato. El pago correspondiente a esta jornada de trabajo, está ya integrado en el sueldo convenido que se indica  en la cláusula Décima del presente instrumento."
        )
        font = run3.font
        paragraphB.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphC = doc.add_paragraph()
        run3 = paragraphC.add_run("OCTAVA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphC.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphC.add_run(
            "El (a) Profesor (a) se obliga a desempeñar sus labores con la intensidad, cuidado y esmero apropiados en la forma, tiempo y lugar a que se refiere este Contrato y el Reglamento Interior de Trabajo. El incumplimiento de esta disposición se considera falta de probidad del (a) Profesor (a) y, de ocurrir, se sancionará con la rescisión  del Contrato sin responsabilidad para el Patrón."
        )
        font = run3.font
        paragraphC.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphD = doc.add_paragraph()
        run3 = paragraphD.add_run("NOVENA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphD.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphD.add_run(
            "El (a) Profesor (a) está obligado a checar en el reloj o firmar las listas de asistencia a la entrada y salida de sus labores, el incumplimiento de este requisito se considerará como una desobediencia para todos los efectos legales a que haya lugar,  el retiro del Profesor de su lugar de Trabajo durante su jornada de labores, sin autorización, será considerado como una desobediencia y por lo tanto abandono de trabajo."
        )
        font = run3.font
        paragraphD.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphE = doc.add_paragraph()
        run3 = paragraphE.add_run(
            "El registrar entradas o salidas por otra persona, será causa de rescisión del presente contrato sin responsabilidad para el Patrón."
        )
        font = run3.font
        paragraphE.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphF = doc.add_paragraph()
        run3 = paragraphF.add_run("DECIMA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphF.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphF.add_run(
            "Se conviene como salario nominal, que el Patrón deberá pagar por los trabajos personales que reciba del(a)Profesor(a),la cantidad de: $ "
            + importe + " ( " + importe_letra +
            " 00/100 M. N.) Dicho salario mensual será cubierto por mitad al (a) profesor (a) después de sumar las prestaciones y restar los impuestos correspondientes, cada día quince y último de cada mes mediante depósito bancario  tal y como lo dispone el artículo 101 de la nueva Ley Federal  del Trabajo publicada  en el Diario Oficial de la Federación  el día 30 de noviembre del 2012, en las oficinas de la Escuela, en efectivo o en cheque, o mediante algún otro sistema de pago que las partes estimen adecuado y seguro."
        )
        font = run3.font
        paragraphF.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphG = doc.add_paragraph()
        run3 = paragraphG.add_run(
            "Además del salario nominal mencionado y de todas las prestaciones que establece la Ley Federal del Trabajo como mínimas EL INSTITUTO otorgará las siguientes prestaciones."
        )
        font = run3.font
        paragraphG.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphH = doc.add_paragraph()
        run3 = paragraphH.add_run(
            "10% del salario nominal por concepto de premios por asistencia siempre y cuando el profesor no falte y  asista   a  lo convocado por el Instituto. Estos premios se entregarán en efectivo en los mismos plazos y condiciones que el salario nominal y según el Reglamento Interno de Trabajo."
        )
        font = run3.font
        paragraphH.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphI = doc.add_paragraph()
        run3 = paragraphI.add_run(
            "10% del salario nominal por concepto de premio de puntualidad. Esta prestación la tendrá el profesor cuando llegue al Instituto 5 minutos antes de la primera hora-clase según su horario.  También se entregará en efectivo en los mismos plazos y condiciones que el salario nominal y según el Reglamento Interno de Trabajo."
        )
        font = run3.font
        paragraphI.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphJ = doc.add_paragraph()
        run3 = paragraphJ.add_run(
            "12% del salario nominal por concepto de vales de despensa como concepto de previsión social según el Plan de Previsión  del Instituto Francisco, Possenti,A.C. los cuales se entregarán el día 28 de cada mes, en monedero electrónico."
        )
        font = run3.font
        paragraphJ.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphK = doc.add_paragraph()
        run3 = paragraphK.add_run(
            "13% del salario nominal por concepto de aportación a un fondo de ahorro, que junto con un porcentaje igual que se retendrá al trabajador cada quincena, se depositará en una cuenta bancaria y se retirará al final del ciclo escolar"
        )
        font = run3.font
        paragraphK.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphL = doc.add_paragraph()
        run3 = paragraphL.add_run(
            "Los préstamos que se otorguen a los trabajadores, serán de acuerdo a los lineamientos que regulan el Fondo de Ahorro."
        )
        font = run3.font
        paragraphL.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphM = doc.add_paragraph()
        run3 = paragraphM.add_run(
            "En las cantidades anteriores queda comprendido el pago de los séptimos días, los días de descanso obligatorio, las vacaciones, los décimos sextos días del mes, así como los conceptos señalados en la Cláusula Quinta del presente contrato, así como las labores conexas o complementarias que desempeña de acuerdo a su labor principal tal y como lo dispone el artículo 56 Bis de la nueva Ley Federal del Trabajo publicada en el Diario Oficial de la Federación el día 30 de noviembre del 2012."
        )
        font = run3.font
        paragraphM.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphN = doc.add_paragraph()
        run3 = paragraphN.add_run(
            "El (la) Profesor (a) está de acuerdo en que el patrón le efectúe los descuentos de cuotas al Seguro Social que le correspondan."
        )
        font = run3.font
        paragraphN.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphO = doc.add_paragraph()
        run3 = paragraphO.add_run("DECIMA PRIMERA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphO.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphO.add_run(
            "El (a) Profesor (a) asistirá según el horario establecido en la cláusula séptima  conviniéndose que si trabaja el domingo  tendrá derecho a que se le pague una prima de un 25 % sobre su salario tabulado, quedando obligado a asistir a cursos de capacitación y desarrollo los días establecidos por la dirección técnica, la remuneración por estos últimos conceptos está incluida e integrado en la Cláusula Decima del presente Contrato."
        )
        font = run3.font
        paragraphO.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphP = doc.add_paragraph()
        run3 = paragraphP.add_run("DECIMA SEGUNDA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphP.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphP.add_run(
            "Son días de descanso obligatorio de acuerdo con el Articulo 74 de la Ley Federal del Trabajo, el 1° de Enero, 5 de Febrero, 21 de Marzo, 1° de Mayo, 16 de Septiembre, 20 de Noviembre, 25 de Diciembre y 1º de Diciembre de cada seis años, cuando corresponda a la transmisión del Poder Ejecutivo Federal, quedando prohibido que el (a) Profesor (a)  labore esos días, salvo permiso previo y por escrito del Patrón. El pago de estos días queda cubierto en la cantidad convenida como salario que aparece en la Cláusula Décima de este contrato. "
        )
        font = run3.font
        paragraphP.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphQ = doc.add_paragraph()
        run3 = paragraphQ.add_run(
            "Las partes aceptan los cambios a estas fechas para aprovechar los “Puentes” que determine la Ley Laboral."
        )
        font = run3.font
        paragraphQ.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphR = doc.add_paragraph()
        run3 = paragraphR.add_run("DECIMA TERCERA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphR.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphR.add_run(
            "El (a) Profesor (a) se compromete a sujetarse a los cursos de capacitación y adiestramiento a que se refieren los Artículos 153 A al 153 X de la Ley Federal del Trabajo."
        )
        font = run3.font
        paragraphR.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphS = doc.add_paragraph()
        run3 = paragraphS.add_run("DECIMA CUARTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphS.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphS.add_run(
            "El (a) Profesor (a) gozará EXCLUSIVAMENTE de las VACACIONES Y DE LA PRIMA VACACIONAL que le correspondan con base en los Artículos 76 y 80 de la Ley Federal del Trabajo de acuerdo con su antigüedad en la escuela. Estas vacaciones serán disfrutadas exclusivamente durante los periodos de la última quincena de Diciembre de cada año y el periodo de Semana Santa tal como lo señala y ordena el Calendario Oficial de la SEP vigente."
        )
        font = run3.font
        paragraphS.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphT = doc.add_paragraph()
        run3 = paragraphT.add_run(
            "El Profesor (a) se da por enterado (a) y de acuerdo en que los periodos de Julio y Agosto corresponden a RECESO DE CLASES para los alumnos, según dictamen de la Secretaría de Educación Pública y/o UNAM, y que por lo tanto, estos periodos en ningún caso corresponde a vacaciones para el personal docente y del Colegio en general."
        )
        font = run3.font
        paragraphT.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphU = doc.add_paragraph()
        run3 = paragraphU.add_run("DECIMA QUINTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphU.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphU.add_run(
            "Todos los estudios, planes, programas, datos y en general cualquier documentación e información que el Profesor reciba o que elabore en el desempeño de sus servicios o por el encargo específico de la Escuela, serán propiedad de ésta última, en cuya virtud se obliga a devolverlos en el momento de ser requeridos para ello o al terminar este Contrato, o sea el "
            + final)
        font = run3.font
        paragraphU.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphV = doc.add_paragraph()
        run3 = paragraphV.add_run("DECIMA SEXTA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphV.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphV.add_run(
            "El (a) Profesor (a) está de acuerdo en no divulgar con ninguna persona o en otra Institución los datos, documentos, conocimientos e informes que haya obtenido con motivo de la prestación de sus servicios en la Escuela, ya que tienen el carácter de confidenciales, en caso de hacerlo será considerada su conducta como falta de probidad, además de las consecuencias legales que de esto origine."
        )
        font = run3.font
        paragraphV.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphW = doc.add_paragraph()
        run3 = paragraphW.add_run("DECIMA SEPTIMA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphW.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphW.add_run(
            "Los contratantes declaran que conocen el Reglamento Interior de Trabajo del Colegio, al cual se sujetarán en todas sus Cláusulas, por haberlo firmado protestando su estricto y legal cumplimiento."
        )
        font = run3.font
        paragraphW.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphX = doc.add_paragraph()
        run3 = paragraphX.add_run("DECIMA OCTAVA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphX.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphX.add_run(
            "El patrón reconoce al trabajador una antigüedad a partir del " +
            antiguedad +
            ". En todo lo no previsto, en el presente Contrato, se estará a las disposiciones de la Ley Federal del Trabajo vigente."
        )
        font = run3.font
        paragraphX.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphY = doc.add_paragraph()
        run3 = paragraphY.add_run("DECIMA NOVENA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphY.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphY.add_run(
            "El Instituto Francisco Possenti, A. C., le informa que sus datos personales, incluyendo los sensibles se utilizarán para identificar, informar, operar, gestionar y demás acciones que sean necesarias para la prestación de servicios laborales subordinados en el Instituto. El derecho de acceso, rectificación, cancelación oposición, limitación o la revocación de uso de sus datos personales, que para tal fin nos haya otorgado, a través de los procedimientos que hemos implementado, podrá solicitarse por escrito en dependencias gubernamentales como, la SEP, el SAT, IMSS, INFONAVIT, Secretaría del Trabajo etc., le informamos que si usted no manifiesta su oposición para que sus datos personales sean utilizados por el Instituto, significa que ha leído, entendido y aceptado los términos antes expuestos otorgando su consentimiento para ello."
        )
        font = run3.font
        paragraphY.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphZ = doc.add_paragraph()
        run3 = paragraphZ.add_run("VIGÉCIMA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphZ.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphZ.add_run(
            "Ambas partes acuerdan que en caso de suspensión de las actividades escolares por causas de fuerza mayor o caso fortuito se estará a las disposiciones que señalen las autoridades competentes."
        )
        font = run3.font
        paragraphZ.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphA1 = doc.add_paragraph()
        run3 = paragraphA1.add_run("VIGÉCIMA PRIMERA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphA1.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphA1.add_run(
            "Ambas partes manifiestan que tienen pleno conocimiento  y cumplimiento de los alcances de la NOM-035-STPS-2018, factores de riesgo psicosocial en el  trabajo, identificación, análisis y prevención, publicada en el Diario  Oficial de la Federación el 23 de octubre del 2018, en términos de los dispuesto por los artículos 40, fracciones I y XI, de la Ley Orgánica  de la Administración Pública Federal; 512, 523, fracción  I, 524 y 527, último párrafo,  de  la Ley Federal  del Trabajo; 1º.,3º., fracción  XI, 38, fracción  II, 40, fracción VII, 41,47,  fracción IV,51, primer párrafo, 62,68, y 87 de la Ley Federal sobre  Metrología   y Normalización ;  28 del Reglamento de la  ley federal sobre Metrología  y Normalización; 5º., fracción III,7, fracciones I,II, III,IV,V, VII,IX,XI y XII, 8, fracciones I, III, V, VIII, X y XI,10, 32, fracción XI, 43,44, fracción VIII, y 55, del Reglamento  Federal de Seguridad y Salud en el Trabajo, y 5, fracción III, y 24 del Reglamento Interior de la Secretaría  del Trabajo y Previsión Social."
        )
        font = run3.font
        paragraphA1.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphA2 = doc.add_paragraph()
        run3 = paragraphA2.add_run("VIGÉCIMA SEGUNDA.- ")
        run3.bold = TRUE
        font = run3.font
        paragraphA2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        run3 = paragraphA2.add_run(
            "Ambas partes están de acuerdo que en caso de que hubiera una contingencia sanitaria conforme a los artículos 42 Bis, 429 fracción l y IV de la Ley Federal del Trabajo o declaración de emergencia sanitaria derivada de cualquier tipo de virus o bacteria, o situación derivada de cualquier tipo de “caso fortuito” o de “fuerza mayor” y como consecuencia de ello se tuviera que suspender la relación de trabajo o cerrar por tiempo determinado o indeterminado la fuente de trabajo, incluyendo la suspensión de la actividad escolar por tiempo definido o indefinido, Patrón y profesor(a) acuerdan que durante el periodo de dicha suspensión el salario quincenal integrado se ajustará de conformidad con las posibilidades económicas del Patrón, lo anterior con el objetivo de que los recursos económicos  (ingresos) de dicho patrón pueden ser repartidos de forma equitativa entre todos los trabajadores, incluyendo el hacer frente al pago de las obligaciones fiscales, gastos fijos y administrativos de la escuela y de seguridad social de cada Trabajador. A su vez y derivado de caso fortuito o fuerza mayor cuando las autoridades competentes nos obliguen a modificar en todo  o en parte el presente contrato se tomará en cuenta lo establecido en el decreto por el que se reforma el artículo 311 y se adiciona el capitulo XII Bis de la Ley Federal de Trabajo en materia de Teletrabajo publicado en el Diario Oficial de la Federación el día 11 de enero 2021 para aquellos casos o situaciones que apliquen en el presente contrato y relación de trabajo."
        )
        font = run3.font
        paragraphA2.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphA3 = doc.add_paragraph()
        run3 = paragraphA3.add_run(
            "Leído que fue por ambas partes este documento y sabedoras de las obligaciones que contraen, lo firman de conformidad por duplicado en el lugar y fecha señalados a continuación."
        )
        font = run3.font
        paragraphA3.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
        font.name = 'Arial'
        font.size = Pt(11)

        paragraphA2 = doc.add_paragraph()
        run3 = paragraphA2.add_run("CIUDAD DE MEXICO, A " + start)
        run3.bold = TRUE
        font = run3.font
        paragraphA2.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT
        font.name = 'Arial'
        font.size = Pt(11)

        table = doc.add_table(rows=3, cols=3)

        cell1 = table.cell(2, 0)
        cell1.text = '      EL PATRÓN                        C. J. ANTONIO BARRIENTOS R. Representante Legal'
        run = cell1.paragraphs[0].runs[0]
        run.font.bold = True
        run.font.name = "Arial"
        run.font.size = Pt(9)
        cell1.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

        tc = cell1._tc
        tcPr = tc.get_or_add_tcPr()
        tcBorders = OxmlElement('w:tcBorders')
        top = OxmlElement('w:top')
        top.set(qn('w:val'), 'single')

        tcBorders.append(top)
        tcPr.append(tcBorders)

        cell3 = table.cell(2, 2)
        cell3.text = 'EL (A) PROFESOR (A) ' + nombre
        run = cell3.paragraphs[0].runs[0]
        run.font.bold = True
        run.font.name = "Arial"
        run.font.size = Pt(9)
        cell3.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

        tc = cell3._tc
        tcPr = tc.get_or_add_tcPr()
        tcBorders = OxmlElement('w:tcBorders')
        top = OxmlElement('w:top')
        top.set(qn('w:val'), 'single')

        tcBorders.append(top)
        tcPr.append(tcBorders)

        doc.save("Contrato " + nombre + ".docx")
Esempio n. 21
0
#Verificando archivo a editar
if ( not path.exists(outputFile) ):
    #No existe outputfile, abriendo plantilla
    document = Document(inputFile)
else:
    #Abriendo outputfile
    document = Document(outputFile)

#Si el archivo de salida existe, no se agrega portada
if ( not path.exists(outputFile) ):

    #Creando Portada
    parrafo = document.add_paragraph()
    run = parrafo.add_run('Reporte de Actualizaciones Windows')
    font = run.font
    font.size = Pt(24)
    font.bold = True
    formato_parrafo = parrafo.paragraph_format
    formato_parrafo.alignment = WD_ALIGN_PARAGRAPH.CENTER

    document.add_paragraph()

    #TODO Obtener de AWX/Ansible el nombre del inventario y colocarlo en la portada
    # parrafo = document.add_paragraph()
    # run = parrafo.add_run('Inventario: Prueba')
    # font = run.font
    # font.size = Pt(24)
    # font.bold = True
    # formato_parrafo = parrafo.paragraph_format
    # formato_parrafo.alignment = WD_ALIGN_PARAGRAPH.CENTER
Esempio n. 22
0
def generate_excel():
    filename = filedialog.askopenfilename(filetypes=(("Excel Files", "*.xlsx"),
                                                     ("All files", "*.*")))
    # open the excel document and extract the data
    df = pd.read_excel(filename)

    lawyer = df["Attorney"]
    client = df["Client"]
    service = df["Service"]
    compensation_value = df["Compensation Value"]
    deposit_value = df["Deposit Value"]
    refundable_deposit_value = df["Refundable Deposit Value"]
    nonrefundable_deposit_value = df["Nonrefundable Deposit Value"]
    deposit_date = df["Deposit Date"]
    jurisdiction = df["Jurisdiction"]

    # start generating the document in a for. one document for each entry in the excel
    for i in range(len(lawyer)):
        doc = docx.Document()
        # title
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.CENTER
        run = para.add_run(title)
        run.font.name = "Times New Roman"
        run.font.size = Pt(20)
        run.font.bold = True

        # parties
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(parties % (lawyer[i], client[i]))
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # service
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(services % service[i])
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # responsibilities
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(responsibilities)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # compensation
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(compensation % compensation_value[i])
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(compensation2)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(compensation3)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(compensation4)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # costs
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(costs)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # deposit
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(
            deposit %
            (deposit_value[i], deposit_date[i], refundable_deposit_value[i],
             nonrefundable_deposit_value[i]))
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # provisions
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(provisions % jurisdiction[i])
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # effective date
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(effective_date)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # foregoing
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(foregoing)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # signatures
        para = doc.add_paragraph()
        para.alignment = WD_ALIGN_PARAGRAPH.LEFT
        run = para.add_run(signatures)
        run.font.name = "Times New Roman"
        run.font.size = Pt(12)

        # save the doc, with the client as file name
        doc.save(client[i] + " Contract.docx")

        lb_status.config(text="Generated %s files" % len(lawyer))
Esempio n. 23
0
from docx.shared import Cm
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
from docx.shared import Pt
import re


def add_logo(p):
    p.add_run().add_picture('./logo.jpg', width=Inches(2))
    p.add_run(text='\n')


document = Document('./template.docx')
style = document.styles['Normal']
font = style.font
font.size = Pt(12)
font.name = 'Leelawadee UI'

photos = open("photo.txt", "w", encoding="utf8")
with open("input.txt", "r", encoding="utf8") as f:
    lines = f.readlines()
    p = document.add_paragraph('')
    p.style = document.styles['Normal']
    p.paragraph_format.keep_together = True
    order = 0
    enter = False
    first_enter = False
    for l in lines:
        print(l)
        if l == '\n':
            if first_enter:
Esempio n. 24
0
def generate():
    # get all the information from the entry text and generate the file
    lawyer = et_lawyer_text.get()
    client = et_client_text.get()
    service = et_service_text.get()
    compensation_value = et_compensation_text.get()
    deposit_value = et_deposit_text.get()
    refundable_deposit_value = et_refundable_text.get()
    nonrefundable_deposit_value = et_non_refundable_text.get()
    deposit_date = et_deposit_date_text.get()
    jurisdiction = et_jurisdiction_text.get()

    # start generating the document
    doc = docx.Document()
    # title
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = para.add_run(title)
    run.font.name = "Times New Roman"
    run.font.size = Pt(20)
    run.font.bold = True

    # parties
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(parties % (lawyer, client))
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # service
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(services % service)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # responsibilities
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(responsibilities)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # compensation
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(compensation % compensation_value)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(compensation2)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(compensation3)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(compensation4)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # costs
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(costs)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # deposit
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(deposit %
                       (deposit_value, deposit_date, refundable_deposit_value,
                        nonrefundable_deposit_value))
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # provisions
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(provisions % jurisdiction)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # effective date
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(effective_date)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # foregoing
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(foregoing)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # signatures
    para = doc.add_paragraph()
    para.alignment = WD_ALIGN_PARAGRAPH.LEFT
    run = para.add_run(signatures)
    run.font.name = "Times New Roman"
    run.font.size = Pt(12)

    # save the doc
    doc.save(client + " Contract.docx")

    # update the status bar
    lb_status.config(text="Generated file " + client + " Contract.docx")
Esempio n. 25
0
#生成报告

# 从文件中读取的开始试验时间和结束试验时间
start_time_string = format_datetime(datetimes[0], locale='zh_CN')
end_time_string = format_datetime(datetimes[-1], locale='zh_CN')

report = Document()

title = report.add_paragraph()
title.alignment = WD_ALIGN_PARAGRAPH.CENTER

# 设定标题字体和内容
run = title.add_run()
run.font.name = '宋体'
run.font.size = Pt(12)
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
run.add_text('试验名称:XXX试验插入损耗变化量在线监测')

# 生成表格
table = report.add_table(rows=4, cols=6)


#设定单元格字体和内容
def set_cell_text(cell, text):
    p = cell.paragraphs[0]
    run = p.add_run()
    run.font.name = '宋体'
    run.font.size = Pt(10.5)
    r = run._element

#设置run字体
def set_font(run):
    run.font.name = '微软雅黑'
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
    return


# 获取json文件数据
with open('ContractGenerator' + os.sep + 'contract_data.json', 'rb') as f:
    contract_data = json.load(f)

# 设置正文全局字体
doc.styles['Normal'].font.name = '微软雅黑'
doc.styles['Normal'].font.size = Pt(12)
doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')

# 写合同号
doc._body.clear_content()
contract_number = contract_data['contract_number']
contract_number_run = doc.add_paragraph(f'合同号:{contract_number}')
contract_number_run.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT

# 写标题
doc.add_heading(level=0).add_run(contract_data['exhibition_title'])
doc.add_heading(level=0).add_run('合作协议')

# 写正文
doc.add_paragraph(f'甲方:{contract_data["party_a"]}')
doc.add_paragraph(f'乙方:{contract_data["party_b"]}')
Esempio n. 27
0
for filename in filenames:
    if filename[0] == '2':
        file_number += 1
        filepath = in_dir + '/' + filename
        print(filepath)

        ID = filename.split('_')
        NAME = ID[-1].split('.d')
        my_doc.add_heading(u'分数:', 0)
        # my_doc.add_paragraph('分数:')
        my_doc.add_paragraph('姓名:' + NAME[0])
        my_doc.add_paragraph('学号:' + ID[0])
        my_doc.add_paragraph('\n')
        #遍历单个文件,读取行数
        docx_file = docx.Document(filepath)
        docx_paragraphs = docx_file.paragraphs
        ps_detail = [(x.text, x.style.name) for x in docx_paragraphs]
        for line in ps_detail:
            my_doc.add_paragraph(line[0])
            #f.write(line[0] + '\t' + line[1] + '\n\n')

        #f.write('\n')
        my_doc.add_page_break()
#关闭文件

print('contact files finished.')
print('一共提交作业:', file_number)
#f.close()
chg_font(my_doc.styles['Normal'], fontname='宋体', size=Pt(11))
my_doc.save(out_contact_file)
Esempio n. 28
0
    def __init__(self,
                 config=None,
                 doc=None,
                 frog_data_folder=None,
                 export_tabs=None,
                 bulk_exports=None):
        try:
            if config is None:
                raise Exception("Config is None")
            if doc is None:
                raise Exception("Doc is None")
            if frog_data_folder is None:
                raise Exception("frog_data_folder is None")
            if export_tabs is None:
                raise Exception("Export_tabs is None")
            if bulk_exports is None:
                raise Exception("Bulk exports is None")

            export_tabs = [
                i for i in export_tabs['export_tabs'] if not (i['active'] == 0)
            ]
            bulk_exports = [
                i for i in bulk_exports['bulk_exports']
                if not (i['active'] == 0)
            ]

            crawl_files = export_tabs + bulk_exports

            doc.add_heading('Crawl overzichten', 0)
            doc.add_paragraph(
                "Hier vind u alle informatie behorende bij het algemene overzicht. "
                "Deze informatie geeft u meer inzicht in wat u inhoudelijk aan uw "
                "pagina's dient te wijzigen om betere SEO resultaten te krijgen."
            )

            for cf in crawl_files:

                doc.add_paragraph()
                file = os.path.join(frog_data_folder, cf['file'])
                c = ParceCSV(file)

                for key, val in c.ready_data.items():
                    if len(val['data']) == 0:
                        continue

                    if cf['id'] == "":
                        doc.add_heading(key, 1)
                    else:
                        doc.add_heading(cf['id'], 1)

                    try:
                        doc.add_paragraph(cf['description'])
                    except Exception:
                        pass

                    try:
                        kolommen = len(cf['columns'])
                    except Exception as e:
                        print(e)
                        sys.exit()

                    table = doc.add_table(rows=1,
                                          cols=kolommen,
                                          style="Grid Table 4 Accent 5")
                    hdr_cells = table.rows[0].cells
                    self.set_repeat_table_header(table.rows[0])
                    i = 0
                    for h in cf['columns']:
                        cell = hdr_cells[i]
                        paragraph = cell.paragraphs[0]
                        runner = paragraph.add_run(h)
                        runner.font.size = Pt(9)
                        i += 1

                    for d in val['data']:
                        row_cells = table.add_row().cells
                        i = 0
                        for h in cf['columns']:
                            cell = row_cells[i]
                            paragraph = cell.paragraphs[0]
                            runner = paragraph.add_run(str(d[h]))
                            runner.font.size = Pt(9)
                            i += 1

                    self.auto_cell(table)
        except Exception as e:
            exc_type, exc_obj, exc_tb = sys.exc_info()
            fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
            logging.warning(
                str(e) + " | " + str(exc_type) + " | " + str(fname) + " | " +
                str(exc_tb.tb_lineno))
            return None
Esempio n. 29
0
import sys
import random
from docx import Document
from docx.shared import Pt
from docx.enum.style import WD_STYLE_TYPE

document = Document('master.docx')

obj_styles = document.styles
obj_reportStyle = obj_styles.add_style('ReportStyle', WD_STYLE_TYPE.CHARACTER)
obj_font = obj_reportStyle.font
obj_font.size = Pt(10)
obj_font.name = 'Calibri'

obj_nameStyle = obj_styles.add_style('NameStyle', WD_STYLE_TYPE.CHARACTER)
obj_name_font = obj_nameStyle.font
obj_name_font.name = 'Calibri'

if len(sys.argv) < 9:
    print("ERROR: Not enough information. Please provide First Name, Last Name, Gender - f for female, m for male,"
          " RE, English, Phonics, Maths, Science"
          "- where 1 is bad, 2 is ok, 3 is good attainment or behaviour.")
    exit()

firstName = sys.argv[1]
lastName = sys.argv[2]
fullName = firstName + " " + lastName
gender = sys.argv[3]

religStudy = int(sys.argv[4][0])
Esempio n. 30
0
 def cm(self, docx):
     paragraph = docx.add_paragraph()
     paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
     paragraph.paragraph_format.space_after = Pt(0)
     paragraph.add_run(self.str_council_header + ' ')
     self.cm_answer(paragraph)