示例#1
0
    def create(self, request, *args, **kwargs):
        owner = _get_owner(request)
        survey = utils.publish_xlsform(request, owner)

        if isinstance(survey, XForm):
            xform = XForm.objects.get(pk=survey.pk)
            # The XForm has been created, but `publish_xlsform` relies on
            # `onadata.apps.main.forms.QuickConverter`, which uses standard
            # Django forms and only recognizes the `xls_file`, `xls_url`,
            # `dropbox_xls_url`, and `text_xls_form` fields.
            # Use the DRF serializer to update the XForm with values for other
            # fields.
            serializer = XFormSerializer(xform,
                                         data=request.data,
                                         context={'request': request},
                                         partial=True)
            serializer.is_valid(raise_exception=True)
            serializer.save()
            headers = self.get_success_headers(serializer.data)

            return Response(serializer.data,
                            status=status.HTTP_201_CREATED,
                            headers=headers)

        return Response(survey, status=status.HTTP_400_BAD_REQUEST)
示例#2
0
    def create(self, request, *args, **kwargs):
        owner = _get_owner(request)
        survey = utils.publish_xlsform(request, owner)

        if isinstance(survey, XForm):
            xform = XForm.objects.get(pk=survey.pk)
            # The XForm has been created, but `publish_xlsform` relies on
            # `onadata.apps.main.forms.QuickConverter`, which uses standard
            # Django forms and only recognizes the `xls_file`, `xls_url`,
            # `dropbox_xls_url`, and `text_xls_form` fields.
            # Use the DRF serializer to update the XForm with values for other
            # fields.
            serializer = XFormSerializer(xform,
                                         data=request.data,
                                         context={'request': request},
                                         partial=True)
            serializer.is_valid(raise_exception=True)
            serializer.save()
            # noti = xform.logs.create(source=request.user, type=7, title="new Kobo form",
            #                          organization=request.organization,
            #                         description="new kobo form {0} created by {1}".
            #                         format(xform.title, request.user.username))
            # result = {}
            # result['description'] = noti.description
            # result['url'] = noti.get_absolute_url()
            # ChannelGroup("notify-0").send({"text":json.dumps(result)})
            # if noti.organization:
            #     ChannelGroup("notify-{}".format(noti.organization.id)).send({"text":json.dumps(result)})
            headers = self.get_success_headers(serializer.data)

            return Response(serializer.data,
                            status=status.HTTP_201_CREATED,
                            headers=headers)

        return Response(survey, status=status.HTTP_400_BAD_REQUEST)
示例#3
0
    def create(self, request, *args, **kwargs):
        owner = _get_owner(request)
        survey = utils.publish_xlsform(request, owner)

        if isinstance(survey, XForm):
            xform = XForm.objects.get(pk=survey.pk)
            # The XForm has been created, but `publish_xlsform` relies on
            # `onadata.apps.main.forms.QuickConverter`, which uses standard
            # Django forms and only recognizes the `xls_file`, `xls_url`,
            # `dropbox_xls_url`, and `text_xls_form` fields.
            # Use the DRF serializer to update the XForm with values for other
            # fields.
            serializer = XFormSerializer(
                xform,
                data=request.data,
                context={'request': request},
                partial=True
            )
            serializer.is_valid(raise_exception=True)
            serializer.save()
            headers = self.get_success_headers(serializer.data)

            return Response(serializer.data, status=status.HTTP_201_CREATED,
                            headers=headers)

        return Response(survey, status=status.HTTP_400_BAD_REQUEST)