mirror of
https://github.com/cisagov/manage.get.gov.git
synced 2025-05-20 19:39:23 +02:00
Clean up debugging code and commented out experiments
This commit is contained in:
parent
35fda9d124
commit
aac5cd698c
4 changed files with 38 additions and 92 deletions
|
@ -276,53 +276,27 @@ function enableRelatedWidgetButtons(changeLink, deleteLink, viewLink, elementPk,
|
||||||
viewLink.setAttribute('title', viewLink.getAttribute('title-template').replace('selected item', elementText));
|
viewLink.setAttribute('title', viewLink.getAttribute('title-template').replace('selected item', elementText));
|
||||||
}
|
}
|
||||||
|
|
||||||
// function performDataLookup(e) {
|
/** An IIFE for admin in DjangoAdmin to listen to clicks on the growth report export button,
|
||||||
// e.preventDefault(); // Prevent the default form submission
|
* attach the seleted start and end dates to a url that'll trigger the view, and finally
|
||||||
|
* redirect to that url.
|
||||||
|
*/
|
||||||
|
(function (){
|
||||||
|
|
||||||
// console.log('Form submitted!');
|
let exportGrowthReportButton = document.getElementById('exportLink');
|
||||||
|
|
||||||
|
if (exportGrowthReportButton) {
|
||||||
|
exportGrowthReportButton.addEventListener('click', function() {
|
||||||
|
// Get the selected start and end dates
|
||||||
|
let startDate = document.getElementById('start').value;
|
||||||
|
let endDate = document.getElementById('end').value;
|
||||||
|
let exportUrl = document.getElementById('exportLink').dataset.exportUrl;
|
||||||
|
|
||||||
// var form = document.getElementById("exportDataForm");
|
// Build the URL with parameters
|
||||||
// var formData = new FormData(form);
|
exportUrl += "?start_date=" + startDate + "&end_date=" + endDate;
|
||||||
|
|
||||||
// // Perform an AJAX request to fetch data
|
// Redirect to the export URL
|
||||||
// fetch('/admin/', {
|
window.location.href = exportUrl;
|
||||||
// method: 'POST',
|
});
|
||||||
// body: formData,
|
}
|
||||||
// })
|
|
||||||
// .then(response => {
|
|
||||||
// if (!response.ok) {
|
|
||||||
// console.log(response);
|
|
||||||
// console.log(`HTTP error! Status: ${response.status}`);
|
|
||||||
// throw new Error(`HTTP error! Status: ${response.status}`);
|
|
||||||
// }
|
|
||||||
// return response.json();
|
|
||||||
// })
|
|
||||||
// .then(data => {
|
|
||||||
// // Handle the data (update the result div, for example)
|
|
||||||
// document.getElementById("dataResult").innerText = JSON.stringify(data);
|
|
||||||
// })
|
|
||||||
// .catch(error => console.error('Error:', error));
|
|
||||||
// }
|
|
||||||
|
|
||||||
(function (){
|
|
||||||
|
|
||||||
document.getElementById('exportLink').addEventListener('click', function(event) {
|
|
||||||
event.preventDefault(); // Prevent the default link behavior
|
|
||||||
|
|
||||||
// Get the selected start and end dates
|
|
||||||
var startDate = document.getElementById('start').value;
|
|
||||||
var endDate = document.getElementById('end').value;
|
|
||||||
|
|
||||||
var exportUrl = document.getElementById('exportLink').dataset.exportUrl;
|
|
||||||
|
|
||||||
// Build the URL with parameters
|
|
||||||
exportUrl += "?start_date=" + startDate + "&end_date=" + endDate;
|
|
||||||
|
|
||||||
// Redirect to the export URL
|
|
||||||
window.location.href = exportUrl;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// document.getElementById('exportDataForm').addEventListener('submit', performDataLookup);
|
|
||||||
})();
|
})();
|
|
@ -10,6 +10,8 @@
|
||||||
Inputs of type date suck for accessibility.
|
Inputs of type date suck for accessibility.
|
||||||
We'll need to replace those guys with a django form once we figure out how to hook one onto this page.
|
We'll need to replace those guys with a django form once we figure out how to hook one onto this page.
|
||||||
The challenge is in the path definition in urls. Itdoes NOT like admin/export_data/
|
The challenge is in the path definition in urls. Itdoes NOT like admin/export_data/
|
||||||
|
|
||||||
|
See the commit "Review for ticket #999"
|
||||||
{% endcomment %}
|
{% endcomment %}
|
||||||
|
|
||||||
<label for="start">Start date:</label>
|
<label for="start">Start date:</label>
|
||||||
|
@ -17,8 +19,7 @@
|
||||||
<label for="end">End date:</label>
|
<label for="end">End date:</label>
|
||||||
<input type="date" id="end" name="trip-end" value="2023-12-19" min="2023-12-01" />
|
<input type="date" id="end" name="trip-end" value="2023-12-19" min="2023-12-01" />
|
||||||
|
|
||||||
{% comment %} TODO: add a aria label or something {% endcomment %}
|
<button id="exportLink" data-export-url="{% url 'admin_export_data' %}" type="button" class="button">Export</button>
|
||||||
<a id="exportLink" data-export-url="{% url 'admin_export_data' %}" href="#" class="button">Export</a>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import csv
|
import csv
|
||||||
|
import logging
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from registrar.models.domain import Domain
|
from registrar.models.domain import Domain
|
||||||
from registrar.models.domain_information import DomainInformation
|
from registrar.models.domain_information import DomainInformation
|
||||||
|
@ -7,20 +8,20 @@ from django.db.models import Value
|
||||||
from django.db.models.functions import Coalesce
|
from django.db.models.functions import Coalesce
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
def export_domains_to_writer(writer, columns, sort_fields, filter_condition):
|
def export_domains_to_writer(writer, columns, sort_fields, filter_condition):
|
||||||
# write columns headers to writer
|
# write columns headers to writer
|
||||||
writer.writerow(columns)
|
writer.writerow(columns)
|
||||||
|
|
||||||
|
# Get the domainInfos
|
||||||
print(f"filter_condition {filter_condition}")
|
|
||||||
domainInfos = DomainInformation.objects.filter(**filter_condition).order_by(*sort_fields)
|
domainInfos = DomainInformation.objects.filter(**filter_condition).order_by(*sort_fields)
|
||||||
|
|
||||||
|
# domain__created_at__gt is in filter_conditions. This means that we're querrying for the growth report and
|
||||||
|
# need to fetch the domainInfos for the deleted domains. This is an OR situation so we can' combine the filters
|
||||||
|
# in one query which would be an AND operation.
|
||||||
if 'domain__created_at__gt' in filter_condition:
|
if 'domain__created_at__gt' in filter_condition:
|
||||||
|
|
||||||
deleted_domainInfos = DomainInformation.objects.filter(domain__state=Domain.State.DELETED).order_by("domain__deleted_at")
|
deleted_domainInfos = DomainInformation.objects.filter(domain__state=Domain.State.DELETED).order_by("domain__deleted_at")
|
||||||
print(f"filtering by deleted {domainInfos}")
|
|
||||||
|
|
||||||
# Combine the two querysets into a single iterable
|
# Combine the two querysets into a single iterable
|
||||||
all_domainInfos = list(chain(domainInfos, deleted_domainInfos))
|
all_domainInfos = list(chain(domainInfos, deleted_domainInfos))
|
||||||
else:
|
else:
|
||||||
|
@ -150,27 +151,20 @@ def export_data_federal_to_csv(csv_file):
|
||||||
|
|
||||||
def export_data_growth_to_csv(csv_file, start_date, end_date):
|
def export_data_growth_to_csv(csv_file, start_date, end_date):
|
||||||
|
|
||||||
print(f'start_date {start_date}')
|
|
||||||
print(f'end_date {end_date}')
|
|
||||||
|
|
||||||
# Check if start_date is not empty before using strptime
|
|
||||||
if start_date:
|
if start_date:
|
||||||
start_date_formatted = datetime.strptime(start_date, "%Y-%m-%d")
|
start_date_formatted = datetime.strptime(start_date, "%Y-%m-%d")
|
||||||
print(f'start_date_formatted {start_date_formatted}')
|
|
||||||
else:
|
else:
|
||||||
# Handle the case where start_date is missing or empty
|
# Handle the case where start_date is missing or empty
|
||||||
print('ON NO')
|
# Default to a date that's prior to our first deployment
|
||||||
# TODO: use Nov 1 2023
|
logger.error(f"Error fetching the start date, will default to 12023/1/1")
|
||||||
start_date_formatted = None # Replace with appropriate handling
|
start_date_formatted = datetime(2023, 11, 1) # Replace with appropriate handling
|
||||||
|
|
||||||
if end_date:
|
if end_date:
|
||||||
end_date_formatted = datetime.strptime(end_date, "%Y-%m-%d")
|
end_date_formatted = datetime.strptime(end_date, "%Y-%m-%d")
|
||||||
print(f'end_date_formatted {end_date_formatted}')
|
|
||||||
else:
|
else:
|
||||||
# Handle the case where start_date is missing or empty
|
# Handle the case where end_date is missing or empty
|
||||||
print('ON NO')
|
logger.error(f"Error fetching the end date, will default to now()")
|
||||||
# TODO: use now
|
end_date_formatted = datetime.now() # Replace with appropriate handling
|
||||||
end_date_formatted = None # Replace with appropriate handling
|
|
||||||
|
|
||||||
writer = csv.writer(csv_file)
|
writer = csv.writer(csv_file)
|
||||||
# define columns to include in export
|
# define columns to include in export
|
||||||
|
|
|
@ -1,54 +1,31 @@
|
||||||
"""Admin-related views."""
|
"""Admin-related views."""
|
||||||
|
|
||||||
from django.http import HttpResponse, JsonResponse
|
from django.http import HttpResponse
|
||||||
from django.views import View
|
from django.views import View
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
|
||||||
from registrar.utility import csv_export
|
from registrar.utility import csv_export
|
||||||
from django.views.generic import TemplateView
|
|
||||||
|
|
||||||
from registrar.models import (
|
|
||||||
Domain,
|
|
||||||
DomainApplication,
|
|
||||||
DomainInvitation,
|
|
||||||
DomainInformation,
|
|
||||||
UserDomainRole,
|
|
||||||
)
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ExportData(View):
|
class ExportData(View):
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
|
||||||
print('VIE VIE VIE')
|
|
||||||
context = super().get_context_data(**kwargs)
|
|
||||||
context['form'] = self.form_class()
|
|
||||||
context['test'] = 'testing the context'
|
|
||||||
return context
|
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
# Get start_date and end_date from the request's GET parameters
|
# Get start_date and end_date from the request's GET parameters
|
||||||
|
# #999: not needed if we switch to django forms
|
||||||
start_date = request.GET.get('start_date', '')
|
start_date = request.GET.get('start_date', '')
|
||||||
end_date = request.GET.get('end_date', '')
|
end_date = request.GET.get('end_date', '')
|
||||||
|
|
||||||
print(start_date)
|
|
||||||
print(end_date)
|
|
||||||
# Do something with start_date and end_date, e.g., include in the CSV export logic
|
|
||||||
|
|
||||||
# # Federal only
|
|
||||||
response = HttpResponse(content_type="text/csv")
|
response = HttpResponse(content_type="text/csv")
|
||||||
response["Content-Disposition"] = f'attachment; filename="growth-from-{start_date}-to-{end_date}.csv"'
|
response["Content-Disposition"] = f'attachment; filename="growth-from-{start_date}-to-{end_date}.csv"'
|
||||||
|
# For #999: set export_data_growth_to_csv to return the resulting queryset, which we can then use
|
||||||
|
# in context to display this data in the template.
|
||||||
csv_export.export_data_growth_to_csv(response, start_date, end_date)
|
csv_export.export_data_growth_to_csv(response, start_date, end_date)
|
||||||
|
|
||||||
|
|
||||||
# response = HttpResponse(content_type="text/csv")
|
|
||||||
# response["Content-Disposition"] = 'attachment; filename="current-federal.csv"'
|
|
||||||
# csv_export.export_data_growth_to_csv(response)
|
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue