Exemple #1
0
    def handle(self, *args, **options):
        if options['user']:
            if options['user'] == 'anonymous':
                owners = [None]
            else:
                owners = [User.objects.get(username=options['user'])]

        else:
            owners = [None] + list(User.objects.all())

        adapter = DatabaseAdapter()

        stale_jobs = []
        for owner in owners:
            jobs = QueryJob.objects.filter(owner=owner)
            for job in jobs:
                if job.phase == job.PHASE_COMPLETED:
                    if not adapter.fetch_table(job.schema_name, job.table_name):
                        stale_jobs.append(job)

        if stale_jobs:
            print('The following QueryJobs have no associated database table:')

            for job in stale_jobs:
                username = job.owner.username if job.owner else 'anonymous'
                print('%s by %s -> %s.%s' % (job.id, username, job.schema_name, job.table_name))

            if options['archive']:
                for job in stale_jobs:
                    job.archive()

                print('The jobs have been archived.')
        else:
            print('No QueryJobs without associated associated database table have been found.')
Exemple #2
0
    def discover(self, request):
        schema_name = request.GET.get('schema')
        table_name = request.GET.get('table')

        if schema_name and table_name:
            adapter = DatabaseAdapter()
            table_metadata = adapter.fetch_table(schema_name, table_name)
            table_metadata['nrows'] = adapter.fetch_nrows(
                schema_name, table_name)
            table_metadata['size'] = adapter.fetch_size(
                schema_name, table_name)
            return Response([table_metadata])
        else:
            return Response([])