コード例 #1
0
ファイル: tasks.py プロジェクト: alhadheri/etools
def sync_users():
    log = VisionSyncLog(country=Country.objects.get(schema_name="public"),
                        handler_name='UserADSync')
    try:
        sync_users_remote()
    except Exception as e:
        log.exception_message = force_text(e)
        raise VisionException(*e.args)
    finally:
        log.save()
コード例 #2
0
ファイル: tasks.py プロジェクト: alhadheri/etools
def map_users():
    log = VisionSyncLog(country=Country.objects.get(schema_name="public"),
                        handler_name='UserSupervisorMapper')
    try:
        user_sync = UserMapper()
        user_sync.map_users()
    except Exception as e:
        log.exception_message = force_text(e)
        raise VisionException(*e.args)
    finally:
        log.save()
コード例 #3
0
ファイル: tasks.py プロジェクト: azizur77/etools
def update_hact_for_country(country_name):
    country = Country.objects.get(name=country_name)
    log = VisionSyncLog(country=country, handler_name='HactSynchronizer')
    connection.set_tenant(country)
    logger.info('Set country {}'.format(country_name))
    try:
        partners = PartnerOrganization.objects.hact_active()
        for partner in partners:
            logger.debug('Updating Partner {}'.format(partner.name))
            partner.planned_visits_to_hact()
            partner.programmatic_visits()
            partner.spot_checks()
            partner.audits_completed()
            partner.hact_support()

    except Exception as e:
        logger.info('HACT Sync', exc_info=True)
        log.exception_message = e
        raise VisionException
    else:
        log.total_records = partners.count()
        log.total_processed = partners.count()
        log.successful = True
    finally:
        log.save()
コード例 #4
0
ファイル: tasks.py プロジェクト: unicef/etools
def update_hact_for_country(country_name):
    country = Country.objects.get(name=country_name)
    log = VisionSyncLog(
        country=country,
        handler_name='HactSynchronizer'
    )
    connection.set_tenant(country)
    logger.info('Set country {}'.format(country_name))
    try:
        partners = PartnerOrganization.objects.hact_active()
        for partner in partners:
            logger.debug('Updating Partner {}'.format(partner.name))
            partner.planned_visits_to_hact()
            partner.programmatic_visits()
            partner.spot_checks()
            partner.audits_completed()
            partner.hact_support()

    except Exception as e:
        logger.info('HACT Sync', exc_info=True)
        log.exception_message = e
        raise VisionException
    else:
        log.total_records = partners.count()
        log.total_processed = partners.count()
        log.successful = True
    finally:
        log.save()
コード例 #5
0
    def sync(self):
        """
        Performs the database sync
        :return:
        """
        log = VisionSyncLog(country=self.country,
                            handler_name=self.__class__.__name__)

        loader_kwargs = self._get_kwargs()
        loader_kwargs.update({
            kwarg_name: getattr(self, kwarg_name)
            for kwarg_name in self.LOADER_EXTRA_KWARGS
        })
        data_getter = self.LOADER_CLASS(**loader_kwargs)

        try:
            original_records = data_getter.get()
            logger.info('{} records returned from get'.format(
                len(original_records)))

            converted_records = self._convert_records(original_records)
            log.total_records = len(converted_records)
            logger.info('{} records returned from conversion'.format(
                len(converted_records)))

            totals = self._save_records(converted_records)

        except Exception as e:
            logger.info('sync', exc_info=True)
            log.exception_message = force_text(e)
            traceback = sys.exc_info()[2]
            raise VisionException(force_text(e)).with_traceback(traceback)
        else:
            if isinstance(totals, dict):
                log.total_processed = totals.get('processed', 0)
                log.details = totals.get('details', '')
                log.total_records = totals.get('total_records',
                                               log.total_records)
            else:
                log.total_processed = totals
            log.successful = True
        finally:
            log.save()
コード例 #6
0
ファイル: test_models.py プロジェクト: azizur77/etools
 def test_vision_sync_log(self):
     country = CountryFactory.build(name='M\xe9xico', schema_name='Mexico')
     instance = VisionSyncLog(country=country)
     self.assertTrue(str(instance).startswith('M\xe9xico'))