def forms(self, request, **kwargs): """Add a form to a project or list forms for the project. The request key `xls_file` holds the XLSForm file object. """ project = self.object = self.get_object() if request.method.upper() == 'POST': survey = utils.publish_project_xform(request, project) if isinstance(survey, XForm): if 'formid' in request.data: serializer_cls = XFormSerializer else: serializer_cls = XFormCreateSerializer serializer = serializer_cls(survey, context={'request': request}) published_by_formbuilder = request.data.get( 'published_by_formbuilder' ) if str_to_bool(published_by_formbuilder): MetaData.published_by_formbuilder(survey, 'True') return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(survey, status=status.HTTP_400_BAD_REQUEST) xforms = XForm.objects.filter(project=project) serializer = XFormSerializer(xforms, context={'request': request}, many=True) return Response(serializer.data)