Example #1
0
    def setup_upload(self, dbkey=None):
        """Create an upload with associated inputs.

        :param integer dbkey: if set use the upload record with given db key.
        :returns: a :py:class:`geonode.mtapi.models.Upload` instance
        """
        if dbkey:
            [upload] = Upload.objects.filter(id=dbkey)
            return upload

        files = [
            ("gmpe_logic_tree.xml", "lt_gmpe"),
            ("small_exposure.xml", "exposure"),
            ("source_model1.xml", "source"),
            ("source_model2.xml", "source"),
            ("source_model_logic_tree.xml", "lt_source"),
            ("vulnerability.xml", "vulnerability")]
        upload = view_utils.prepare_upload()
        for file, type in files:
            path = os.path.join(upload.path, file)
            # This is equivalent to what the touch command does.
            open(path, "w+").close()
            input = Input(path=path, owner=upload.owner, input_type=type,
                          upload=upload)
            input.save()
        return upload
Example #2
0
    def setup_upload(self, dbkey=None):
        """Create an upload with associated inputs.

        :param integer dbkey: if set use the upload record with given db key.
        :returns: a :py:class:`geonode.mtapi.models.Upload` instance
        """
        if dbkey:
            [upload] = Upload.objects.filter(id=dbkey)
            return upload

        files = [("gmpe_logic_tree.xml", "lt_gmpe"),
                 ("small_exposure.xml", "exposure"),
                 ("source_model1.xml", "source"),
                 ("source_model2.xml", "source"),
                 ("source_model_logic_tree.xml", "lt_source"),
                 ("vulnerability.xml", "vulnerability")]
        upload = view_utils.prepare_upload()
        for file, type in files:
            path = os.path.join(upload.path, file)
            # This is equivalent to what the touch command does.
            open(path, "w+").close()
            input = Input(path=path,
                          owner=upload.owner,
                          input_type=type,
                          upload=upload)
            input.save()
        return upload
Example #3
0
 def test_prepare_upload(self):
     """
     `prepare_upload` returns a :py:class:`geonode.mtapi.models.Upload`
     instance. The latter's `path` must be a file system directory and have
     `0777` permissions.
     """
     upload = prepare_upload()
     self.assertTrue(isinstance(upload, Upload))
     info = os.stat(upload.path)
     self.assertTrue(stat.S_ISDIR(info.st_mode))
     self.assertEqual('0777', oct(stat.S_IMODE(info.st_mode)))
Example #4
0
def input_upload(request):
    """This handles a collection of input files uploaded by the GUI user.

    The request must be a HTTP POST.

    :param request: the :py:class:`django.http.HttpRequest` object
    :returns: a :py:class:`django.http.HttpResponse` object with status code
        `200` after starting an external NRML loader program that will process
        the uploaded source model files.
    :raises Http404: if the request is not a HTTP POST request.
    """
    print("request.FILES: %s\n" % pprint.pformat(request.FILES))
    if request.method == "POST":
        upload = view_utils.prepare_upload()
        for uploaded_file in request.FILES.getlist('input_files'):
            handle_uploaded_file(upload, uploaded_file)
        load_source_files(upload)
        return HttpResponse(prepare_upload_result(upload, status="success"),
                            mimetype="text/html")
    else:
        raise Http404