[GeoNode-users] Implement file upload in GeoNode Django Rest Framework

Pankaj Sharma Pankaj.Sharma at auckland.ac.nz
Thu Mar 24 10:13:17 PDT 2022


Hello,

I am trying to upload a simple textfile as a Geonode document to Geonode via the Django Rest Framework. I know the file upload using GeoNode DRF is not implemented. I also know that the Geonode DRF is based on the DRF on the Github respository.

I want to implement the file upload facility in Geonode DRF. I have been going in circles looking at the Python code - I know I would have to modify the request.py file, but how?

Anyone can give me some pointers as to where to start, or maybe some file I can replace in DRF and it would start to work. I am posting my FETCH CODE which is not working because the file handler code is not implemented.

 console.log("Trying to upload document ")
     //now to send the document upload in geonode
    let url = 'http://127.0.0.1:4040/api/v2/documents/';
    var crf_token1 = $('[name="csrfmiddlewaretoken"]').attr('value');

     //method where we use a token
     let headers = new Headers();
     var crf_token = $('[name="csrfmiddlewaretoken"]').attr('value');
     headers.set('X-CSRFToken', crf_token);

    // lets first get a good sample file
    var ds_url = 'http://127.0.0.1:4040/static/ds_assets/dtest.txt';
    var fileD;
    fetch(ds_url)
      .then( res => res.blob() )
      .then( blob => {
         fileD = window.URL.createObjectURL(blob);
      });

    var formData = new FormData();
    //fetch related parameters
    formData.append('file', fileD);
    formData.append('owner', 'admin');             formData.append('title', 'testdoc');
    formData.append('abstract', 'testdoc');        formData.append('attribution', 'test');
    formData.append('bbox_polygon', 'MULTIPOLYGON (((0 0, 0 1, 1 1, 1 0, 0 0)))');
    formData.append('constraints_other', 'no');    formData.append('data_quality_statement', 'no');
    formData.append('doi', 'test');                formData.append('embed_url', 'test');
    formData.append('is_approved', 'true');        formData.append('is_published', 'true');
    formData.append('ll_bbox_polygon', 'MULTIPOLYGON (((0 0, 0 1, 1 1, 1 0, 0 0)))');
    formData.append('maintenance_frequency', '1'); formData.append('metadata_only', 'true');
    formData.append('popular_count', '1');         formData.append('share_count', '1');
    formData.append('srid', '1');                  formData.append('purpose', '1');         formData.append('rating', '1');
    formData.append('language', 'English');        formData.append('supplemental_information', 'No information provided');
    formData.append('temporal_extent_end', '2022-02-02 12:21');         formData.append('temporal_extent_start', '2022-02-02 12:21');
    formData.append('thumbnail_url', 'test');      formData.append('Regions', 'Global');
    formData.append('Responsible', 'admin');       formData.append('date', '2022-02-02 12:21');
    formData.append('edition', 'test');            formData.append('date_type', 'test');

    fetch(url, {method:'POST',
            headers: headers ,
            body: formData,
            credentials: "same-origin",
            })
    .then(response => response.json())
    .then(json => console.log(json));

Dr. Pankaj Sharma
Research Fellow
GIScience team, School of Environment
The University of Auckland
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/geonode-users/attachments/20220324/2c95c6a3/attachment.html>


More information about the geonode-users mailing list