コード例 #1
0
    def run(self, ):
        listaBase = []
        self.lista = []
        self.ch = CompaniesHouse(self.apikey)
        self.getLinesCount()
        with open(self.fileImport, newline='') as csvfile:
            spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
            count = 1  # counter for progress bar signal
            for row in spamreader:
                while True:
                    if not self.pause:
                        try:
                            if self.siHayChance():
                                print(row[0])
                                if len(row[0]) == 7:
                                    CompanyNumber = '0' + row[0]
                                elif len(row[0]) > 8:
                                    print('Error: Very long company number')
                                    self.updateSignal.emit(count)
                                    count = count + 1
                                    break
                                elif len(row[0]) == 8:
                                    CompanyNumber = row[0]

                                company = self.ch.getCompany(CompanyNumber)
                                if 'errors' in company.keys():
                                    print('Error: ' +
                                          company['errors'][0]['error'])
                                    break
                                else:
                                    insolvency = self.ch.getInsolvency(
                                        CompanyNumber)
                                    fillingHistory = self.ch.getListFillingHistory(
                                        CompanyNumber)
                                    #PDFs Download.
                                    if self.ch.existForm1(fillingHistory):
                                        self.ch.downloadDocument(
                                            self.ch.getUrlForm1(
                                                fillingHistory),
                                            os.path.dirname(self.fileOutput) +
                                            '/pdfs/' + CompanyNumber + '-419')
                                    if self.ch.existForm2(fillingHistory):
                                        self.ch.downloadDocument(
                                            self.ch.getUrlForm2(
                                                fillingHistory),
                                            os.path.dirname(self.fileOutput) +
                                            '/pdfs/' + CompanyNumber + '-47')
                                    registeredOffice = self.ch.getRegisteredOffice(
                                        CompanyNumber)
                                    rOfficeIndex = len(registeredOffice[0])
                                    officers = self.ch.getOfficers(
                                        CompanyNumber)
                                    insolvencyNumber = 0
                                    if insolvency is not None:
                                        if 'cases' in insolvency.keys():
                                            insolvencyNumber = len(
                                                insolvency['cases'])

                                    listaBase = ([
                                        company[
                                            'company_name'],  # Company Name
                                        '="' + CompanyNumber +
                                        '"',  # Company Number
                                        insolvencyNumber,  # Insolvency History
                                        'PRESENT'
                                        if self.ch.existForm1(fillingHistory)
                                        else 'FAIL',  # Form 4.19
                                        'PRESENT'
                                        if self.ch.existForm2(fillingHistory)
                                        else 'FAIL',  # Form 4.7
                                        insolvencyNumber,  # Insolvency Proceddings Number
                                        registeredOffice[0],
                                        registeredOffice[1],
                                        registeredOffice[2],
                                        registeredOffice[3],
                                        registeredOffice[4]
                                    ])
                                    logging.info(CompanyNumber + '- Added')
                                    for row in officers:
                                        listaBase.append(row['name'])
                                        listaBase.append(row['appointed_on'])
                                        listaBase.append(
                                            row['resigned_on'] if 'resigned_on'
                                            in row.keys() else 'FAIL')
                                        listaBase.append(
                                            str(row['date_of_birth']['month']
                                                ) + '-' +
                                            str(row['date_of_birth']['year'])
                                            if 'date_of_birth' in
                                            row.keys() else 'FAIL')
                                        listaBase.append(row['officer_role'])
                                        officerAddress = self.dict2list(
                                            row['address'])
                                        for n in range(5):
                                            try:
                                                listaBase.append(
                                                    officerAddress[n])
                                            except:
                                                listaBase.append('FAIL')
                                        self.lista.append(list(listaBase))

                                        del listaBase[(
                                            -10):]  #Delete 10 fields.
                                    self.updateSignal.emit(count)
                                    count = count + 1
                                    break
                        except:
                            break
                    else:
                        print('Paused')
                        time.sleep(5)

            self.save(True)
            self.closeSignal.emit(True)