Example #1
0
    def form_valid(self, form, *args, **kwargs):

        # all we've done is validate that the form is validly formed.
        # This has nothing to do with the actual data import being valid.
        sourcefile = self.request.FILES['sourcefile']
        post_data = self.request.POST.copy()
        meta_from_filename = True

        if 'type' in post_data and 'attributes' in post_data:
            meta_from_filename = False

        importer = TablibImporter(sourcefile, post_data, meta_from_filename)
        valid, errors = importer.validate()

        if not valid:
            error_dicts = [e.to_json() for e in errors]
            return HttpResponseBadRequest(json.dumps(error_dicts), content_type='application/json')

        if self.request.is_ajax():
            save_import.apply_async((importer.deferred(), self.request.user.email))
            return HttpResponse(u'OK')
        else:
            #save = importer.save()
            save = save_import.apply_async((importer.deferred(), self.request.user.email))
            if save:
                return redirect('import_success')
            else:
                return HttpResponseServerError(_(u'Save failed.'))
Example #2
0
def save_import(deferred, email):

    from openbudgets.apps.transport.incoming.importers.tablibimporter import \
        TablibImporter

    importer = TablibImporter()
    saved = importer.resolve(deferred).save()

    sender = settings.EMAIL_HOST_USER
    recipient = email

    container = deferred['container']
    name = container.get('name', '')
    if not name:
        name = get_parser(deferred['class']).container_model._meta.verbose_name + ' of '
        entity = container.get('entity', None)
        period = container.get('period_start')
        if entity:
            try:
                entity_name = getattr(entity, 'name')
            except AttributeError:
                entity_name = entity.get('name')
            name += entity_name
        else:
            name += 'unknown'
        name += ' for ' + period

    if saved:
        subject = _('[OPEN BUDGETS]: Data import success')
        message = _('The data import succeeded for ' + name)

    else:
        subject = _('[OPEN BUDGETS]: Data import failure')
        message = _('The data import failed for ' + name)

    return send_mail(subject, message, sender, [recipient], fail_silently=True)