Skip to content

Commit 07db9d6

Browse files
committed
update storages module; allow defaults to do their magic for auth; fixes
1 parent 2e739fa commit 07db9d6

File tree

6 files changed

+24
-19
lines changed

6 files changed

+24
-19
lines changed

kolibri/core/logger/management/commands/exportlogs.py

+3-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import logging
22
import ntpath
3-
import os
43

54
from dateutil import parser
65
from django.conf import settings
@@ -128,8 +127,6 @@ def handle_async(self, *args, **options):
128127
else:
129128
filename = options["output_file"]
130129

131-
filepath = os.path.join(os.getcwd(), filename)
132-
133130
queryset = log_info["queryset"]
134131

135132
total_rows = queryset.count()
@@ -139,7 +136,7 @@ def handle_async(self, *args, **options):
139136
for row in csv_file_generator(
140137
facility,
141138
log_type,
142-
filepath,
139+
filename,
143140
start_date=start_date,
144141
end_date=end_date,
145142
overwrite=options["overwrite"],
@@ -150,14 +147,14 @@ def handle_async(self, *args, **options):
150147

151148
if job:
152149
job.extra_metadata["overall_error"] = self.overall_error
153-
self.job.extra_metadata["filename"] = ntpath.basename(filepath)
150+
self.job.extra_metadata["filename"] = ntpath.basename(filename)
154151
job.save_meta()
155152
else:
156153
if self.overall_error:
157154
raise CommandError(self.overall_error)
158155
else:
159156
logger.info(
160-
"Created csv file {} with {} lines".format(filepath, total_rows)
157+
"Created csv file {} with {} lines".format(filename, total_rows)
161158
)
162159

163160
translation.deactivate()

kolibri/core/logger/tasks.py

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import os
2-
31
from django.core.files.storage import default_storage
42
from django.core.management import call_command
53
from rest_framework import serializers
@@ -19,10 +17,8 @@
1917

2018
def get_filepath(log_type, facility_id, start_date, end_date):
2119
facility = Facility.objects.get(id=facility_id)
22-
filepath = default_storage.path(
23-
CSV_EXPORT_FILENAMES[log_type].format(
24-
facility.name, facility.id[:4], start_date[:10], end_date[:10]
25-
),
20+
filepath = CSV_EXPORT_FILENAMES[log_type].format(
21+
facility.name, facility.id[:4], start_date[:10], end_date[:10]
2622
)
2723
return filepath
2824

@@ -42,7 +38,7 @@ def get_valid_logs_csv_filenames():
4238
log_request.selected_start_date.strftime("%Y-%m-%d"),
4339
log_request.selected_end_date.strftime("%Y-%m-%d"),
4440
)
45-
valid_filenames_set.add(os.path.basename(full_path))
41+
valid_filenames_set.add(full_path)
4642
return valid_filenames_set
4743

4844

kolibri/core/utils/csv.py

+13
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
import io
2+
import logging
23
import re
34
from contextlib import contextmanager
45
from numbers import Number
56

67
from django.core.files.storage import default_storage
78

9+
logger = logging.getLogger(__name__)
10+
811

912
@contextmanager
1013
def open_csv_for_writing(filename):
@@ -17,6 +20,11 @@ def open_csv_for_writing(filename):
1720
yield encoded_fh
1821
encoded_fh.flush()
1922
default_storage.save(filename, f)
23+
logger.info("CSV file {} updated".format(filename))
24+
try:
25+
logger.info("File path: {}".format(default_storage.path(filename)))
26+
except NotImplementedError:
27+
logger.info("File url: {}".format(default_storage.url(filename)))
2028
else:
2129
# If the file does not exist, we need to create it and return it wrapped in a TextIOWrapper
2230
with io.BytesIO() as f:
@@ -30,6 +38,11 @@ def open_csv_for_writing(filename):
3038
yield encoded_fh
3139
encoded_fh.flush()
3240
default_storage.save(filename, f)
41+
logger.info("CSV file {} saved".format(filename))
42+
try:
43+
logger.info("File path: {}".format(default_storage.path(filename)))
44+
except NotImplementedError:
45+
logger.info("File url: {}".format(default_storage.url(filename)))
3346

3447

3548
@contextmanager

kolibri/deployment/default/settings/base.py

-4
Original file line numberDiff line numberDiff line change
@@ -195,10 +195,6 @@
195195

196196
if not os.environ.get("DEFAULT_FILE_STORAGE"):
197197
if conf.OPTIONS["FileStorage"]["STORAGE_BACKEND"] == "gcs":
198-
# Initialize GS_CREDENTIALS as a proper google.auth.credentials.Credentials object
199-
import google.auth
200-
201-
GS_CREDENTIALS, _ = google.auth.default()
202198
# Options per https://django-storages.readthedocs.io/en/latest/backends/gcloud.html
203199
DEFAULT_FILE_STORAGE = "storages.backends.gcloud.GoogleCloudStorage"
204200
GS_BUCKET_NAME = conf.OPTIONS["FileStorage"]["GS_BUCKET_NAME"]

kolibri/plugins/facility/views.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
from kolibri.core.logger.models import ContentSessionLog
2828
from kolibri.core.logger.models import GenerateCSVLogRequest
2929

30-
3130
CSV_EXPORT_FILENAMES = {}
3231
CSV_EXPORT_FILENAMES.update(LOGGER_CSV_EXPORT_FILENAMES)
3332
CSV_EXPORT_FILENAMES.update(USER_CSV_EXPORT_FILENAMES)
@@ -103,6 +102,9 @@ def exported_csv_info(request, facility_id):
103102
if log_request is not None:
104103
start = log_request.selected_start_date.isoformat()
105104
end = log_request.selected_end_date.isoformat()
105+
filename = CSV_EXPORT_FILENAMES[log_type].format(
106+
facility.name, facility.id[:4], start[:10], end[:10]
107+
)
106108
else:
107109
start = ""
108110
end = ""

requirements/storages.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
# Additional reqs for running kolibri with GCS file storage backend
2-
django-storages[google]==1.14.2
2+
django-storages[google]==1.14.5
3+
google-auth==2.38.0

0 commit comments

Comments
 (0)