Use the correct bucket for storing contact lists

We don’t want to muddy them up with the normal CSV uploads.

I’ve tried to reuse the existing S3 code where possible because it’s
well tested.

Buckets have already been created.
This commit is contained in:
Chris Hill-Scott
2020-03-13 13:53:18 +00:00
parent 1c02476ee7
commit 03f2368deb
9 changed files with 121 additions and 47 deletions

View File

@@ -1,16 +1,60 @@
from flask import abort
from flask import abort, current_app
from notifications_utils.formatters import strip_whitespace
from app.models import JSONModel
from app.notify_client.contact_list_api_client import contact_list_api_client
from app.s3_client.s3_csv_client import get_csv_metadata
from app.s3_client.s3_csv_client import (
get_csv_metadata,
s3download,
s3upload,
set_metadata_on_csv_upload,
)
class ContactList(JSONModel):
@staticmethod
def get_bucket_name():
return current_app.config['CONTACT_LIST_UPLOAD_BUCKET_NAME']
@staticmethod
def upload(service_id, file_dict):
return s3upload(
service_id,
file_dict,
current_app.config['AWS_REGION'],
bucket=ContactList.get_bucket_name(),
)
@staticmethod
def download(service_id, upload_id):
return strip_whitespace(s3download(
service_id,
upload_id,
bucket=ContactList.get_bucket_name(),
))
@staticmethod
def set_metadata(service_id, upload_id, **kwargs):
return set_metadata_on_csv_upload(
service_id,
upload_id,
bucket=ContactList.get_bucket_name(),
**kwargs,
)
@staticmethod
def get_metadata(service_id, upload_id):
return get_csv_metadata(
service_id,
upload_id,
bucket=ContactList.get_bucket_name(),
)
@classmethod
def create(cls, service_id, upload_id):
metadata = get_csv_metadata(service_id, upload_id)
metadata = cls.get_metadata(service_id, upload_id)
if not metadata.get('valid'):
abort(403)

View File

@@ -6,7 +6,6 @@ from notifications_utils.timezones import local_timezone
from werkzeug.utils import cached_property
from app.models import JSONModel
from app.models.contact_list import ContactList
from app.models.job import (
ImmediateJobs,
PaginatedJobs,
@@ -133,9 +132,6 @@ class Service(JSONModel):
return []
return ScheduledJobs(self.id)
def save_contact_list(self, upload_id):
return ContactList.create(self.id, upload_id)
@cached_property
def invited_users(self):
return InvitedUsers(self.id)