def render_to_response(self, context, **response_kwargs): analytics.track(self.request.user.username, 'temba.contact_exported') user = self.request.user org = user.get_org() group = None group_id = self.request.REQUEST.get('g', None) if group_id: groups = ContactGroup.user_groups.filter(pk=group_id, org=org) if groups: group = groups[0] host = self.request.branding['host'] export = ExportContactsTask.objects.create(created_by=user, modified_by=user, org=org, group=group, host=host) export_contacts_task.delay(export.pk) from django.contrib import messages if not getattr(settings, 'CELERY_ALWAYS_EAGER', False): messages.info(self.request, _("We are preparing your export. ") + _("We will e-mail you at %s when it is ready.") % self.request.user.username) else: export = ExportContactsTask.objects.get(id=export.pk) dl_url = reverse('assets.download', kwargs=dict(type='contact_export', identifier=export.pk)) messages.info(self.request, _("Export complete, you can find it here: %s (production users will get an email)") % dl_url) return HttpResponseRedirect(reverse('contacts.contact_list'))
def resume_failed_tasks(): now = timezone.now() window = now - timedelta(hours=1) contact_exports = ExportContactsTask.objects.filter( modified_on__lte=window).exclude(status__in=[ ExportContactsTask.STATUS_COMPLETE, ExportContactsTask.STATUS_FAILED ]) for contact_export in contact_exports: export_contacts_task.delay(contact_export.pk) flow_results_exports = ExportFlowResultsTask.objects.filter( modified_on__lte=window).exclude(status__in=[ ExportFlowResultsTask.STATUS_COMPLETE, ExportFlowResultsTask.STATUS_FAILED ]) for flow_results_export in flow_results_exports: export_flow_results_task.delay(flow_results_export.pk) msg_exports = ExportMessagesTask.objects.filter( modified_on__lte=window).exclude(status__in=[ ExportMessagesTask.STATUS_COMPLETE, ExportMessagesTask.STATUS_FAILED ]) for msg_export in msg_exports: export_messages_task.delay(msg_export.pk)
def render_to_response(self, context, **response_kwargs): analytics.track(self.request.user.username, 'temba.contact_exported') user = self.request.user org = user.get_org() group = None group_id = self.request.REQUEST.get('g', None) if group_id: groups = ContactGroup.user_groups.filter(pk=group_id, org=org) if groups: group = groups[0] host = self.request.branding['host'] # is there already an export taking place? existing = ExportContactsTask.objects.filter(org=org, is_finished=False, created_on__gt=timezone.now() - timedelta(hours=24))\ .order_by('-created_on').first() # if there is an existing export, don't allow it if existing: messages.info(self.request, _("There is already an export in progress, started by %s. You must wait " "for that export to complete before starting another." % existing.created_by.username)) # otherwise, off we go else: export = ExportContactsTask.objects.create(created_by=user, modified_by=user, org=org, group=group, host=host) export_contacts_task.delay(export.pk) if not getattr(settings, 'CELERY_ALWAYS_EAGER', False): messages.info(self.request, _("We are preparing your export. We will e-mail you at %s when it is ready.") % self.request.user.username) else: export = ExportContactsTask.objects.get(id=export.pk) dl_url = reverse('assets.download', kwargs=dict(type='contact_export', pk=export.pk)) messages.info(self.request, _("Export complete, you can find it here: %s (production users will get an email)") % dl_url) return HttpResponseRedirect(reverse('contacts.contact_list'))
def render_to_response(self, context, **response_kwargs): analytics.track(self.request.user.username, 'temba.contact_exported') user = self.request.user org = user.get_org() group = None group_id = self.request.REQUEST.get('g', None) if group_id: groups = ContactGroup.user_groups.filter(pk=group_id, org=org) if groups: group = groups[0] host = self.request.branding['host'] # is there already an export taking place? existing = ExportContactsTask.objects.filter(org=org, is_finished=False, created_on__gt=timezone.now() - timedelta(hours=24))\ .order_by('-created_on').first() # if there is an existing export, don't allow it if existing: messages.info(self.request, _("There is already an export in progress, started by %s. You must wait " "for that export to complete before starting another." % existing.created_by.username)) # otherwise, off we go else: export = ExportContactsTask.objects.create(created_by=user, modified_by=user, org=org, group=group, host=host) export_contacts_task.delay(export.pk) if not getattr(settings, 'CELERY_ALWAYS_EAGER', False): messages.info(self.request, _("We are preparing your export. We will e-mail you at %s when it is ready.") % self.request.user.username) else: export = ExportContactsTask.objects.get(id=export.pk) dl_url = reverse('assets.download', kwargs=dict(type='contact_export', identifier=export.pk)) messages.info(self.request, _("Export complete, you can find it here: %s (production users will get an email)") % dl_url) return HttpResponseRedirect(reverse('contacts.contact_list'))