Exemplo n.º 1
0
    def run(self, *args, **kwargs):
        instance = self.get_object()
        serializer = JobRunSerializer(exporter=instance,
                                      data=self.request.data,
                                      **self.get_serializer_kwargs())
        serializer.is_valid(raise_exception=True)

        cf = CachedFile(web_download=False)
        cf.date = now()
        cf.expires = now() + timedelta(hours=24)
        cf.save()
        d = serializer.data
        for k, v in d.items():
            if isinstance(v, set):
                d[k] = list(v)
        async_result = self.do_export(cf, instance, d)

        url_kwargs = {
            'asyncid': str(async_result.id),
            'cfid': str(cf.id),
        }
        url_kwargs.update(self.kwargs)
        return Response(
            {
                'download':
                reverse('api-v1:exporters-download',
                        kwargs=url_kwargs,
                        request=self.request)
            },
            status=status.HTTP_202_ACCEPTED)
Exemplo n.º 2
0
 def exporters(self):
     exporters = []
     responses = register_data_exporters.send(self.request.event)
     for ex in sorted([response(self.request.event, self.request.organizer) for r, response in responses], key=lambda ex: str(ex.verbose_name)):
         ex._serializer = JobRunSerializer(exporter=ex)
         exporters.append(ex)
     return exporters
Exemplo n.º 3
0
 def exporters(self):
     exporters = []
     events = (self.request.auth or self.request.user).get_events_with_permission('can_view_orders', request=self.request).filter(
         organizer=self.request.organizer
     )
     responses = register_multievent_data_exporters.send(self.request.organizer)
     for ex in sorted([response(events, self.request.organizer) for r, response in responses if response], key=lambda ex: str(ex.verbose_name)):
         ex._serializer = JobRunSerializer(exporter=ex, events=events)
         exporters.append(ex)
     return exporters
Exemplo n.º 4
0
 def exporters(self):
     exporters = []
     if isinstance(self.request.auth, (Device, TeamAPIToken)):
         perm_holder = self.request.auth
     else:
         perm_holder = self.request.user
     events = perm_holder.get_events_with_permission(
         'can_view_orders',
         request=self.request).filter(organizer=self.request.organizer)
     responses = register_multievent_data_exporters.send(
         self.request.organizer)
     for ex in sorted([
             response(events, self.request.organizer)
             for r, response in responses if response
     ],
                      key=lambda ex: str(ex.verbose_name)):
         ex._serializer = JobRunSerializer(exporter=ex, events=events)
         exporters.append(ex)
     return exporters