def subjects_list(request): if request.method == 'GET': subjects = Subject.objects.all() serializer = SubjectSerializer(subjects, many=True) return JsonResponse(serializer.data, safe=False) elif request.method == 'POST': query_string = request.POST.get('query', '') subject = get_subject_by_query_string(query_string=query_string) if subject and subject.requested_recently(): subject.request_time = timezone.now() subject.save(update_fields=['request_time']) serializer = SubjectSerializer(data=subject.to_dict()) if serializer.is_valid(): return JsonResponse(serializer.data, status=201) else: data = fetch_data( url='https://rmsp.nalog.ru/search-proc.json', query_string=query_string, ) if data: subject = Subject(**data) subject.save() subject.query_set.create(query_string=query_string) serializer = SubjectSerializer(data=subject.to_dict()) if serializer.is_valid(): return JsonResponse(serializer.data, status=201) return JsonResponse({'error': 'Query string is invalid'}, status=400)
def test_get_subjects_list(self): subject_list_empty = models_conf_classes.SubjectConf.get_objects_dict_list_or_404(Subject)[0].json subject = Subject('Test') db.session.add(subject) db.session.commit() subject_list = models_conf_classes.SubjectConf.get_objects_dict_list_or_404(Subject)[0].json self.assertTrue(subject.to_dict() in subject_list['items']) self.assertEqual(subject_list_empty['msg'], 'objects is not found') self.assertEqual(subject_list_empty.get('items', False), False)
def test_to_dict_method(self): teacher = User(email='*****@*****.**') subject = Subject("Test") teacher.is_teacher = True db.session.add(teacher) db.session.add(subject) db.session.commit() db.session.commit() tch_dict = teacher.to_dict() sub_dict = subject.to_dict() self.assertIsInstance(tch_dict, dict) self.assertIsInstance(sub_dict, dict)
def test_get_subject_by_id_func(self): subject = Subject('Test') db.session.add(subject) db.session.commit() subject_data = models_conf_classes.SubjectConf.get_obj_dict_or_404(Subject, subject.id) self.assertEqual(subject.to_dict(), subject_data[0].json['item'])