def process(self): self.ensure_files_exist_locally() # zip everything in self.needed_files zip_filename = self.get_zip_filename(self.token_data) zip_file_path = self.create_zip(zip_filename) # upload to AWS as zip_filename s3boto_storage = _managed_S3BotoStorage() with default_storage.open(zip_file_path) as myfile: result = s3boto_storage.save(zip_filename, myfile) # send token-link via email self.send_email(self.token) self.conclude()
def dispatch(self, request, *args, **kwargs): # # take the passed in token and decode it, use the decoded parameters # to try to find and serve the exported zip file from s3 # self.storage = _managed_S3BotoStorage() self.export_service = None token_data = signing.loads(kwargs.get('token'), salt=settings.URL_ENCODE_SECRET_KEY) kwargs.update(token_data) kwargs.update({'slug': token_data.get('matter_slug')}) self.kwargs = kwargs return super(MatterDownloadExportView, self).dispatch(request, *args, **kwargs)
def save(self): """ Update the user profile data """ profile = self.user.profile data = profile.data firm_logo = self.cleaned_data.pop('firm_logo', None) if firm_logo is not None: if hasattr(firm_logo, 'name'): image_storage = _managed_S3BotoStorage() # slugify a unique name name, ext = os.path.splitext(firm_logo.name) filename = slugify('%s-%s-%s' % (data.get('firm_name', self.user.username), self.user.pk, name)) image_name = '%s%s' % (filename, ext) # save to s3 result = image_storage.save('firms/%s' % image_name, firm_logo) # save to cleaned_data self.cleaned_data['firm_logo'] = image_storage.url(name=result) data.update(**self.cleaned_data) profile.data = data profile.save(update_fields=['data'])