Exemple #1
0
    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()
Exemple #2
0
 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])
Exemple #3
0
    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()
Exemple #4
0
    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()
Exemple #5
0
    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()
Exemple #6
0
    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()
Exemple #7
0
    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()