Пример #1
0
    def setUp(self):
        owner, _ = User.objects.get_or_create(username='******', email='*****@*****.**')
        source = os.path.join(LOCAL_DIR, 'data/person_test.csv')
        self.importer = MyCSVImporter

        self.task = DataImpoterTask()
        self.task.run(importer=self.importer, source=source, owner=owner)
Пример #2
0
    def setUp(self):
        owner, _ = User.objects.get_or_create(username='******', email='*****@*****.**')
        source = os.path.join(LOCAL_DIR, 'data/person_test.csv')
        self.importer = TestMeta

        self.task = DataImpoterTask()
        self.task.run(importer=self.importer, source=source, owner=owner)
Пример #3
0
class DataImporterTaskTest(TestCase):
    def setUp(self):
        owner, _ = User.objects.get_or_create(username='******',
                                              email='*****@*****.**')
        source = os.path.join(LOCAL_DIR, 'data/person_test.csv')
        self.importer = TestMeta

        self.task = DataImpoterTask()
        self.task.run(importer=self.importer, source=source, owner=owner)

    def test_task_run(self):
        created_person = Person.objects.filter(first_name='Eldo',
                                               last_name='Rock',
                                               age='28').exists()
        self.assertTrue(created_person)

    def test_task_create_all(self):
        self.assertEqual(Person.objects.all().count(), 3)

    def test_send_email(self):
        outbox = mail.outbox[0]
        self.assertEqual(outbox.body, 'Your file was imported with sucess')
        self.assertEqual(outbox.to, ['*****@*****.**'])
Пример #4
0
class DataImporterTaskTest(TestCase):

    def setUp(self):
        owner, _ = User.objects.get_or_create(username='******', email='*****@*****.**')
        source = os.path.join(LOCAL_DIR, 'data/person_test.csv')
        self.importer = TestMeta

        self.task = DataImpoterTask()
        self.task.run(importer=self.importer, source=source, owner=owner)

    def test_task_run(self):
        created_person = Person.objects.filter(first_name='Eldo',
                                               last_name='Rock',
                                               age='28').exists()
        self.assertTrue(created_person)

    def test_task_create_all(self):
        self.assertEqual(Person.objects.all().count(), 3)

    def test_send_email(self):
        outbox = mail.outbox[0]
        self.assertEqual(outbox.body, 'Your file was imported with sucess')
        self.assertEqual(outbox.to, ['*****@*****.**'])
Пример #5
0
class DataImporterForm(FormView):
    """
    Usage example
    ==============

    class DataImporterCreateView(DataImporterForm):
        extra_context = {'title': 'Create Form Data Importer',
                         'template_file': 'myfile.csv'
                        }
        importer = MyImporterModel
    """
    model = FileHistory
    template_name = 'data_importer.html'
    form_class = FileUploadForm
    task = DataImpoterTask()
    importer = None
    is_task = True
    success_url = '.'
    extra_context = {
        'title': 'Form Data Importer',
        'template_file': 'myfile.csv'
    }

    def get_context_data(self, **kwargs):
        context = super(DataImporterForm, self).get_context_data(**kwargs)
        context.update(self.extra_context)
        return context

    def form_valid(self, form, owner=None):
        if self.request.user.id:
            owner = self.request.user

        content_type = ContentType.objects.get_for_model(
            self.importer.Meta.model)
        file_history, _ = FileHistory.objects.get_or_create(
            file_upload=form.cleaned_data['file_upload'],
            owner=owner,
            content_type=content_type)

        if not self.is_task or not hasattr(self.task, 'delay'):
            self.task.run(importer=self.importer,
                          source=file_history,
                          owner=owner,
                          send_email=False)
            if self.task.parser.errors:
                messages.error(self.request, self.task.parser.errors)
            else:
                messages.success(self.request, "File uploaded successfully")
        else:
            self.task.delay(importer=self.importer,
                            source=file_history,
                            owner=owner)
            if owner:
                messages.info(
                    self.request,
                    "When importer was finished one email will send to: %s" %
                    owner.email)
            else:
                messages.info(self.request, "Importer task in queue")

        return super(DataImporterForm, self).form_valid(form)