def results_csv(self, request): """ Download a CSV of the results from a data quality run based on either the ID that was given during the creation of the data quality task or the ID of the import file which had it's records checked. Note that it is not related to objects in the database, since the results are stored in redis! """ run_id = request.query_params.get('run_id') if run_id is None: return JsonResponse( { 'status': 'error', 'message': 'must include Import file ID or cache key as run_id' }, status=status.HTTP_400_BAD_REQUEST) data_quality_results = get_cache_raw( DataQualityCheck.cache_key(run_id)) response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="Data Quality Check Results.csv"' writer = csv.writer(response) if data_quality_results is None: writer.writerow(['Error']) writer.writerow(['data quality results not found']) return response writer.writerow([ 'Table', 'Address Line 1', 'PM Property ID', 'Tax Lot ID', 'Custom ID', 'Field', 'Applied Label', 'Condition', 'Error Message', 'Severity' ]) for row in data_quality_results: for result in row['data_quality_results']: writer.writerow([ row['data_quality_results'][0]['table_name'], row['address_line_1'], row['pm_property_id'] if 'pm_property_id' in row else None, row['jurisdiction_tax_lot_id'] if 'jurisdiction_tax_lot_id' in row else None, row['custom_id_1'], result['formatted_field'], result.get('label', None), result['condition'], # the detailed_message field can have units which has superscripts/subscripts, so unidecode it! unidecode(result['detailed_message']), result['severity'] ]) return response
def results(self, request): """ Return the result of the data quality based on the ID that was given during the creation of the data quality task. Note that it is not related to the object in the database, since the results are stored in redis! """ Organization.objects.get(pk=request.query_params['organization_id']) data_quality_id = request.query_params['data_quality_id'] data_quality_results = get_cache_raw( DataQualityCheck.cache_key(data_quality_id)) return JsonResponse({'data': data_quality_results})
def results(self, request): """ Return the results of a data quality run based on either the ID that was given during the creation of the data quality task or the ID of the import file which had it's records checked. Note that it is not related to objects in the database, since the results are stored in redis! """ data_quality_id = request.query_params['run_id'] data_quality_results = get_cache_raw( DataQualityCheck.cache_key(data_quality_id)) return JsonResponse({'data': data_quality_results})
def csv(self, request, pk): """ Download a csv of the data quality checks by the pk which is the cache_key --- parameter_strategy: replace parameters: - name: pk description: Import file ID or cache key required: true paramType: path """ data_quality_results = get_cache_raw(DataQualityCheck.cache_key(pk)) response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="Data Quality Check Results.csv"' writer = csv.writer(response) if data_quality_results is None: writer.writerow(['Error']) writer.writerow(['data quality results not found']) return response writer.writerow([ 'Table', 'Address Line 1', 'PM Property ID', 'Tax Lot ID', 'Custom ID', 'Field', 'Applied Label', 'Condition', 'Error Message', 'Severity' ]) for row in data_quality_results: for result in row['data_quality_results']: writer.writerow([ row['data_quality_results'][0]['table_name'], row['address_line_1'], row['pm_property_id'] if 'pm_property_id' in row else None, row['jurisdiction_tax_lot_id'] if 'jurisdiction_tax_lot_id' in row else None, row['custom_id_1'], result['formatted_field'], result.get('label', None), result['condition'], # the detailed_message field can have units which has superscripts/subscripts, so unidecode it! unidecode(result['detailed_message']), result['severity'] ]) return response