Beispiel #1
0
    def to_representation(self, value):
        """
        Return a signed url
        """
        permission = self.permission()

        if not (permission.has_object_action_permission(
                'GET', self.context['request'].user, value)
                and permission.has_action_permission(
                    'GET', self.context['request'].user, value.__class__)):
            return None

        url_args = [getattr(value, arg) for arg in self.url_args]
        url = reverse_signed(self.url_name, args=url_args)

        if self.filename:
            filename = self.filename
        elif self.file_attr:
            file = getattr(value, self.file_attr, None)
            if not file:
                return None
            else:
                filename = os.path.basename(file.name)
        else:
            filename = '---'

        return {'url': url, 'name': filename}
Beispiel #2
0
 def document_link(self, obj):
     if obj.document and obj.document.file:
         template = loader.get_template('admin/document_button.html')
         if 'localhost' in connection.tenant.domain_url:
             download_url = obj.document.file.url
         else:
             download_url = reverse_signed('kyc-document', args=(obj.id, ))
         return template.render({'document_url': download_url})
     return "_"
Beispiel #3
0
    def test_download_invalid_signature(self):
        result = export(Exporter,
                        tenant=self.tenant,
                        from_date=timezone.now(),
                        to_date=timezone.now() - datetime.timedelta(days=180))

        response = self.client.get(
            reverse_signed('exportdb_download', args=(result, )) + '123')

        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
Beispiel #4
0
 def document(self, obj):
     if obj.connect_account and \
             isinstance(obj.connect_account, PlainPayoutAccount) and \
             obj.connect_account.document and \
             obj.connect_account.document.file:
         template = loader.get_template('admin/document_button.html')
         if 'localhost' in connection.tenant.domain_url:
             download_url = obj.connect_account.document.file.url
         else:
             download_url = reverse_signed('kyc-document',
                                           args=(obj.connect_account.id, ))
         return template.render({'document_url': download_url})
     return "_"
Beispiel #5
0
    def test_download(self):
        result = export(Exporter,
                        tenant=self.tenant,
                        from_date=timezone.now(),
                        to_date=timezone.now() - datetime.timedelta(days=180))

        response = self.client.get(
            reverse_signed('exportdb_download', args=(result, )))
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertTrue(response['Content-Disposition'].startswith(
            'attachment; filename="export-'))
        self.assertTrue(response['X-Accel-Redirect'].startswith(
            '/media/private/exports/export'))
        self.assertEqual(
            response['Content-Type'],
            'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        )
Beispiel #6
0
    def get(self, request, *args, **kwargs):
        async_result = AsyncResult(request.session.get(EXPORTDB_EXPORT_KEY))
        if not async_result:
            return self.json_response({'status': 'FAILURE', 'progress': 0})

        if async_result.state == 'PROGRESS':
            progress = async_result.info['progress']
            if progress > 0.99:
                progress = 0.99
        elif async_result.ready():
            progress = 1
        else:
            progress = 1

        content = {
            'status':
            async_result.state,
            'progress':
            progress,
            'file':
            reverse_signed('exportdb_download', args=(async_result.result, ))
            if async_result.ready() else None
        }
        return self.json_response(content)
Beispiel #7
0
 def get_links(self, instance):
     return {
         'ical': reverse_signed('event-ical', args=(instance.pk, )),
         'google': instance.google_calendar_link,
         'outlook': instance.outlook_link,
     }
Beispiel #8
0
 def document_url(self):
     # pk may be unset if not saved yet, in which case no url can be
     # generated.
     if self.pk is not None and self.file:
         return reverse_signed('project-document-file', args=(self.pk, ))
     return None
Beispiel #9
0
 def get_link(self, obj):
     parent_id = getattr(obj, self.relationship).get().pk
     return reverse_signed(self.content_view_name, args=(parent_id, ))
Beispiel #10
0
def resume_link(obj):
    if obj.resume:
        url = reverse_signed('task-member-resume', args=(obj.id, ))

        return format_html(u"<a href='{}'>{}</a>", str(url), _('Resume'))