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)
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)
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, ['*****@*****.**'])
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)