def macro6(self, item): query = "Select link2 from traceability where type=3 and link1=" + str( item[0]) + ";" self.cursor.execute(query) links = [] for link in self.cursor.fetchall(): links.append(str(link[0])) query = "Select * from items where document=1 and type=11 and uid in (" + ",".join( links) + ") Order by ordering asc;" self.cursor.execute(query) items = self.cursor.fetchall() text = [] count = 1 text.append("시험식별자") text.append("\n".join([a[5] for a in items])) text.append("요구사항") text.append("\n".join([a[5] for a in items])) etable = EasyTable(self.document, 2, 2, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableColumnsWidth([1.3, 4.6]) etable.TableCellText(text) etable.TableCellBGColor([(0, 0), (1, 0)]) self.document.add_paragraph()
def insertSDDReq(self, item): Etable = EasyTable(self.document, rows=4, cols=2, style="a6") #tbl = table._tbl # get xml element in table Etable.TableAlign("center") Etable.TableColumnsWidth([1.2, 4]) Etable.TableCellText([ "식별자", item[5], "요구사항", item[6], "출처", item[7], "관련 USE Case", item[8] ]) Etable.TableCellBGColor([(0, 0), (1, 0), (2, 0), (3, 0)]) Etable.TableBordersColumns(1, 10, "left") Etable.TableBorders(10) self.document.add_paragraph() self.insertDescription(item[9])
def macro1(self): query = "Select * from items where document=" + self.documentid + " and component=" + self.componentid + " and type=11 Order by ordering asc;" self.cursor.execute(query) result = self.cursor.fetchall() text = ["요구사항 식별자", "요구사항 식별자명", "관련항목"] for row in result: text.append(row[5]) try: text.append(row[6].split("[")[1].split("]")[0]) except: text.append(row[6]) text.append(row[7]) etable = EasyTable(self.document, len(result) + 1, 3, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableColumnsWidth([1.2, 2.5, 1.9]) etable.TableCellText(text) etable.TableCellBGColor([(0, 0), (0, 1), (0, 2)]) self.document.add_paragraph()
def macro5(self): query = "Select * from traceability;" self.cursor.execute(query) links = self.cursor.fetchall() query = "Select * from items where document=" + self.documentid + " and component=" + self.componentid + " and type=31 Order by ordering asc;" self.cursor.execute(query) items = self.cursor.fetchall() query = "Select * from items where document=1 and component=" + self.componentid + " and type=11 Order by ordering asc;" self.cursor.execute(query) SRS = dict() for srs in self.cursor: SRS[srs[0]] = srs[1:] query = "Select * from items where document=3 and component=" + self.componentid + " and type=21 Order by ordering asc;" self.cursor.execute(query) SDD = dict() for sdd in self.cursor: SDD[sdd[0]] = sdd[1:] text = ["시험 식별자", "시험항목", "시험 명세서 항목"] count = 1 for row in items: #STD ID count += 1 text.append(row[5]) text.append(row[6]) text.append("5." + str(count)) self.insertTableFiled("시험절차서 식별자 목록") etable = EasyTable(self.document, len(items) + 1, 3, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableColumnsWidth([1.6, 2.3, 1.6]) etable.TableCellText(text) etable.TableCellBGColor([(0, 0), (0, 1), (0, 2)]) self.document.add_paragraph()
def macro2(self): query = "Select * from items where document=" + self.documentid + " and component=" + self.componentid + " and type=11 Order by ordering asc;" self.cursor.execute(query) result = self.cursor.fetchall() text = ["요구사항 식별자", "데모", "시험", "분석", "검사", "특수", "내용"] for row in result: text.append(row[5]) for testtype in range(5): if (str(testtype) == row[10]): text.append("O") else: text.append("") text.append(row[6].split("]")[0] + "]") self.insertTableFiled("자격부여방법") etable = EasyTable(self.document, len(result) + 1, 7, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableColumnsWidth([2.0, 0.3, 0.3, 0.3, 0.3, 0.3, 1.9]) etable.TableCellText(text) etable.TableCellBGColor([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6)]) self.document.add_paragraph()
def macro7(self): query = "Select * from traceability;" self.cursor.execute(query) links = self.cursor.fetchall() query = "Select * from items where document=3 and component=" + self.componentid + " and type=31 Order by ordering asc;" self.cursor.execute(query) items = self.cursor.fetchall() query = "Select * from items where document=1 and component=" + self.componentid + " and type=11 Order by ordering asc;" self.cursor.execute(query) SRS = dict() for srs in self.cursor.fetchall(): SRS[srs[0]] = srs[1:] query = "Select * from items where document=2 and component=" + self.componentid + " and type=21 Order by ordering asc;" self.cursor.execute(query) SDD = dict() for sdd in self.cursor.fetchall(): SDD[sdd[0]] = sdd[1:] text = ["SW 시험절차서 식별자", "SW 요구사항 명세서 식별자", "SW 설계기술서 식별자"] for row in items: #SDD ID text.append(row[5]) #SRS ID SRSs = [] tempstr = "" for link in links: if (link[0] == 2 and link[1] == row[0]): srs = SRS.get(link[2], None) if (srs == None): None else: SRSs.append(link[2]) tempstr += srs[4] + " " if (tempstr == ""): tempstr = "추후결정" text.append(tempstr) #STD ID tempstr = "" for link in links: if (link[0] == 3 and link[2] in SRSs): sdd = SDD.get(link[1], None) if (sdd == None): None else: tempstr += sdd[4] + " " if (tempstr == ""): tempstr = "추후결정" text.append(tempstr) self.insertTableFiled("요구사항추적성") etable = EasyTable(self.document, len(items) + 1, 3, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableColumnsWidth([1.8, 2.2, 1.8]) etable.TableCellText(text) etable.TableCellBGColor([(0, 0), (0, 1), (0, 2)]) self.document.add_paragraph()
def insertDescription(self, html): count = 0 if (html == None): html = "<p></p>" for item in html2dom.html2dom(html): if (item[0] == 'P'): if ("#2#") in item[2]: self.document.add_paragraph(item[2][3:], "2단계") count = 0 continue if ("#3#") in item[2]: self.document.add_paragraph(item[2][3:], "3단계") count = 0 continue if ("#4#") in item[2]: self.document.add_paragraph(item[2][3:], "4단계") count = 0 continue if ("###") in item[2]: self.insertFieldCodeP(item[2]) count = 0 elif ("#MACRO#") in item[2]: self.macro(item[2]) count = 0 elif ("그림#" in item[2]): self.insertPictureFiled(item[2].split("그림#")[1]) count = 0 elif ("표#" in item[2]): self.insertTableFiled(item[2].split("표#")[1]) count = 0 else: p = self.document.add_paragraph(item[2]) if (self.document.paragraphs[-1].text == ""): count += 1 try: if "center" in item[1]["style"]: p.alignment = WD_ALIGN_PARAGRAPH.CENTER if "right" in item[1]["style"]: p.alignment = WD_ALIGN_PARAGRAPH.RIGHT except: None if (item[0] == 'img'): count = 0 width = "640" try: width = int( item[1]['style'].split("width:")[1].split("px;")[0]) except: None try: self.document.add_picture( "./uploads/" + item[1]['src'].split("uploads/")[1], width=Inches(width / 100)) if ("fr-fic" in item[1]["class"]): last_paragraph = self.document.paragraphs[-1] last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER except: print("img file not found-./uploads/" + item[1]['src'].split("uploads/")[1]) self.document.add_picture( "./plugins/template/lostimage.png", width=Inches(width / 100)) last_paragraph = self.document.paragraphs[-1] last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER if (item[0] == 'table'): try: count = 0 row = len(item[1]) consplancount = 0 for cell in item[1][0]: if "colspan" in cell[1]: consplancount += int(cell[1]["colspan"]) - 1 col = len(item[1][0]) + consplancount width = 100 if ("style" in item[2] and "width" in item[2]["style"]): width = int( item[2]["style"].split("width: ")[1].split("%")[0]) etable = EasyTable(self.document, row, col, style="a7") etable.TableAlign("center") etable.TableBorders(10) etable.TableSpan(item[1]) etable.TableProperty(item[1], 6 * width / 100) self.document.add_paragraph() except: None if (count > 3): self.document.add_page_break()