def test_import_csv(self): csv = [ 'name,type,ra,dec', 'm13,SIDEREAL,250.421,36.459', 'm27,SIDEREAL,299.901,22.721' ] result = import_targets(csv) self.assertEqual(len(result['targets']), 2)
def test_import_csv(self): csv = [ 'identifier,name,type,ra,dec', 'm13,Hercules Globular Cluster,SIDEREAL,250.421,36.459', 'm27,Dumbbell Nebula,SIDEREAL,299.901,22.721' ] result = import_targets(csv) self.assertEqual(len(result['targets']), 2)
def post(self, request): csv_file = request.FILES['target_csv'] csv_stream = StringIO(csv_file.read().decode('utf-8'), newline=None) result = import_targets(csv_stream) messages.success(request, 'Targets created: {}'.format(len(result['targets']))) for error in result['errors']: messages.warning(request, error) return redirect(reverse('tom_targets:list'))
def test_import_with_extra(self): csv = [ 'identifier,name,type,ra,dec,redshift', 'm13,Hercules Globular Cluster,SIDEREAL,250.421,36.459,5', 'm27,Dumbbell Nebula,SIDEREAL,299.901,22.721,5' ] result = import_targets(csv) self.assertEqual(len(result['targets']), 2) for target in result['targets']: self.assertTrue(TargetExtra.objects.filter(target=target, key='redshift', value='5').exists())
def test_import_csv_with_multiple_names(self): csv = [ 'name,type,ra,dec,name1,name2', 'm13,SIDEREAL,250.421,36.459,Tom,Joe', 'm27,SIDEREAL,299.901,22.721,John,Doe' ] result = import_targets(csv) self.assertEqual(len(result['targets']), 2) aliases = {'m13': 'Tom,Joe', 'm27': 'John,Doe'} for target_name in aliases: target = Target.objects.get(name=target_name) for alias in aliases[target_name].split(','): self.assertTrue( TargetName.objects.filter(target=target, name=alias).exists())
def post(self, request): """ Handles the POST requests to this view. Creates a StringIO object and passes it to ``import_targets``. :param request: the request object passed to this view :type request: HTTPRequest """ csv_file = request.FILES['target_csv'] csv_stream = StringIO(csv_file.read().decode('utf-8'), newline=None) result = import_targets(csv_stream) messages.success(request, 'Targets created: {}'.format(len(result['targets']))) for error in result['errors']: messages.warning(request, error) return redirect(reverse('tom_targets:list'))