Exemplo n.º 1
0
    def parse_products_detail(self, buKey, bu, vul, productsContentBlockList):
        bu_prod_block_list = []
        for productsContentBlock in productsContentBlockList:
            bu_prod_block_list = productsContentBlock.find_all('div', itemindex=buKey)
            if len(bu_prod_block_list) != 0:
                break

        if len(bu_prod_block_list) != 0:
            products_table = bu_prod_block_list[0].table
            products_rows = products_table.find_all('tr')
            if len(products_rows) > 0:
                for index in range(1, len(products_rows)):
                    row = products_rows[index]
                    columns = row.find_all('td')
                    product, created = Product.objects.get_or_create(
                        name=StringUtil.normalize(columns[0].get_text()))
                    product.save()

                    bp, created = BUAndProdRelationship.objects.get_or_create(bu=bu, product=product)
                    if created: bp.save()

                    pv, created = ProdAndVulRelationship.objects.get_or_create(product=product, vul=vul)
                    if created:
                        if len(columns) == 2:
                            pv.status = DataConvert.convert_status_to_integer(columns[1].get_text())
                        elif len(columns) == 4:
                            pv.status = DataConvert.convert_status_to_integer(columns[1].get_text())
                            pv.fixedVersion = StringUtil.normalize(columns[2].get_text())
                            pv.downloadLink = StringUtil.normalize(columns[3].get_text(), ep=False)
                        else:
                            pass
                        pv.save()
Exemplo n.º 2
0
 def extract_severity(self, pure_text_of_content):
     result = re.findall(self.severityRep, pure_text_of_content)
     if len(result) == 0:
         return ""
     else:
         severity = result[0].split(" ")[-1]
         return DataConvert.convert_severity_to_integer(severity)