예제 #1
0
    def test_basic(self):
        models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        contract, _ = c.update_instance(35356)

        self.assertEqual(35356, contract.base_id)
        self.assertEqual(None, contract.category)
    def test_basic(self):
        models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        contract, _ = c.update_instance(35356)

        self.assertEqual(35356, contract.base_id)
        self.assertEqual(None, contract.category)
예제 #3
0
    def test_retrieve_twice(self):
        models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        contract, created = c.update_instance(35356)
        self.assertTrue(created)

        contract1, created = c.update_instance(35356)
        self.assertFalse(created)

        self.assertEqual(contract, contract1)
    def test_retrieve_twice(self):
        models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        contract, created = c.update_instance(35356)
        self.assertTrue(created)

        contract1, created = c.update_instance(35356)
        self.assertFalse(created)

        self.assertEqual(contract, contract1)
    def test_1892486_no_contractor(self):
        pt = models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Concurso público', base_id=1)
        models.ContractType.objects.create(name='Aquisição de serviços', base_id=1)

        dt = models.District.objects.create(country=pt, name="Portalegre", base_id=1)
        models.Council.objects.create(district=dt, name="Nisa", base_id=1)

        c = ContractsCrawler()

        contract, _ = c.update_instance(1892486)

        self.assertEqual(1892486, contract.base_id)
예제 #6
0
    def handle(self, **options):
        if options['static']:
            if options['bootstrap'] or not ProcedureType.objects.exists():
                ContractsStaticDataCrawler().retrieve_and_save_all()

        if options['categories']:
            if options['bootstrap'] or not Category.objects.exists():
                build_categories()

        if options['entities']:
            crawler = EntitiesCrawler()
            if options['bootstrap']:
                crawler.update(0)
            else:
                crawler.update(-2000)

        if options['contracts']:
            crawler = ContractsCrawler()
            if options['bootstrap']:
                crawler.update(0)
            else:
                crawler.update(-2000)

        if options['tenders']:
            crawler = TendersCrawler()
            if options['bootstrap']:
                crawler.update(0)
            else:
                crawler.update(-2000)
예제 #7
0
    def test_update_limits(self):
        c = ContractsCrawler()

        # end<0 does nothing
        mod = c.update(2, -1)
        for x in mod:
            self.assertEqual(0, mod[x])

        # start>end does nothing
        mod = c.update(2, 1)
        for x in mod:
            self.assertEqual(0, mod[x])

        # end = None
        mod = c.update(9000000000, None)
        for x in mod:
            self.assertEqual(0, mod[x])
예제 #8
0
    def test_1892486_no_contractor(self):
        pt = models.Country.objects.create(name='Portugal')

        models.ProcedureType.objects.create(name='Concurso público', base_id=1)
        models.ContractType.objects.create(name='Aquisição de serviços',
                                           base_id=1)

        dt = models.District.objects.create(country=pt,
                                            name="Portalegre",
                                            base_id=1)
        models.Council.objects.create(district=dt, name="Nisa", base_id=1)

        c = ContractsCrawler()

        contract, _ = c.update_instance(1892486)

        self.assertEqual(1892486, contract.base_id)
    def test_update_limits(self):
        c = ContractsCrawler()

        # end<0 does nothing
        mod = c.update(2, -1)
        for x in mod:
            self.assertEqual(0, mod[x])

        # start>end does nothing
        mod = c.update(2, 1)
        for x in mod:
            self.assertEqual(0, mod[x])

        # end = None
        mod = c.update(9000000000, None)
        for x in mod:
            self.assertEqual(0, mod[x])
    def test_update(self):
        pt = models.Country.objects.create(name='Portugal')
        vs = models.District.objects.create(name='Viseu', country=pt, base_id=1)
        models.Council.objects.create(name='Viseu', district=vs, base_id=1)

        d = models.District.objects.create(name='Faro', country=pt, base_id=2)
        models.Council.objects.create(name='Faro', district=d, base_id=2)

        models.ContractType.objects.create(name='Aquisição de serviços', base_id=1)
        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        c.update(7, 10)
        # test missing contracts are added
        models.Contract.objects.get(base_id=27).delete()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['added'])

        # test removed contracts are added; deleted contracts are deleted
        contract = models.Contract.objects.get(base_id=27)
        contract.base_id = 28
        contract.save()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['deleted'])
        self.assertEqual(1, mods['added'])

        # test modified contracts are updated
        contract = models.Contract.objects.get(base_id=27)
        contract.price = -10
        contract.save()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['updated'])
예제 #11
0
    def test_update(self):
        pt = models.Country.objects.create(name='Portugal')
        vs = models.District.objects.create(name='Viseu',
                                            country=pt,
                                            base_id=1)
        models.Council.objects.create(name='Viseu', district=vs, base_id=1)

        d = models.District.objects.create(name='Faro', country=pt, base_id=2)
        models.Council.objects.create(name='Faro', district=d, base_id=2)

        models.ContractType.objects.create(name='Aquisição de serviços',
                                           base_id=1)
        models.ProcedureType.objects.create(name='Ajuste directo', base_id=1)

        c = ContractsCrawler()

        c.update(7, 10)
        # test missing contracts are added
        models.Contract.objects.get(base_id=27).delete()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['added'])

        # test removed contracts are added; deleted contracts are deleted
        contract = models.Contract.objects.get(base_id=27)
        contract.base_id = 28
        contract.save()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['deleted'])
        self.assertEqual(1, mods['added'])

        # test modified contracts are updated
        contract = models.Contract.objects.get(base_id=27)
        contract.price = -10
        contract.save()
        mods = c.update(7, 10)
        self.assertEqual(1, mods['updated'])