<div dir="ltr">Very useful Hugo, also for the list. Glad you solved. The only advice, in case the api response gets slow is to reduce the numbers of the results per query.<div><br></div><div>Ciao</div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-06-19 15:55 GMT+02:00 FERRARI Hugo <span dir="ltr"><<a href="mailto:ferrari_hugo@yahoo.fr" target="_blank">ferrari_hugo@yahoo.fr</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <br>
    The simplest and less "resource-consuming" way I finally found is<br>
    In resourcebase_api, create_response()<br>
    Just make an other guardian query (get_objects_for_user) to get
    resource ids that the user can download. <br>
    then I iterate over the  complete list of objects already stores in
    data['objects'] variable, and add a single field in each json object
    to indicate if user can download resource or not.<br>
    It fits to my needs and it's only one more query on the DB.<br>
    <div>Thanks again<br>
      Hugo<br>
      Ps: i don't know if this kind of message has to be shared as it is
      a very particular developement problem. please tell me if it is
      not the case.<br>
      <br>
      <br>
      -------- Message transféré --------
      <table border="0" cellpadding="0" cellspacing="0">
        <tbody>
          <tr>
            <th align="RIGHT" nowrap valign="BASELINE">Sujet :
            </th>
            <td>Re: [GeoNode-users] modifying the layer list request</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap valign="BASELINE">Date : </th>
            <td>Fri, 19 Jun 2015 08:45:15 +0200</td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap valign="BASELINE">De : </th>
            <td>Simone Dalmasso <a href="mailto:simone.dalmasso@gmail.com" target="_blank"><simone.dalmasso@gmail.com></a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap valign="BASELINE">Pour : </th>
            <td>FERRARI Hugo <a href="mailto:ferrari_hugo@yahoo.fr" target="_blank"><ferrari_hugo@yahoo.fr></a></td>
          </tr>
          <tr>
            <th align="RIGHT" nowrap valign="BASELINE">Copie
              à : </th>
            <td><a href="mailto:geonode-users@lists.osgeo.org" target="_blank">geonode-users@lists.osgeo.org</a>
              <a href="mailto:geonode-users@lists.osgeo.org" target="_blank"><geonode-users@lists.osgeo.org></a></td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      The query on the cb should be more or less ok. The big difference
      is that it's fetching all the data a user has permission then
      dumps them in bulk. In your case it will fetch all the data then
      loop over each of them to see whether the user has permission or
      not and add a "permitted " field on the API on the fly. That loop
      is what we avoided by customizing the API. <span></span><br>
      <br>
      Il venerdì 19 giugno 2015, FERRARI Hugo <<a href="mailto:ferrari_hugo@yahoo.fr" target="_blank">ferrari_hugo@yahoo.fr</a>>
      ha scritto:<br>
      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
        <div bgcolor="#FFFFFF" text="#000000"> <br>
          <blockquote type="cite">
            <div> It works pretty well the way I did, but I understand
              the  problem. <br>
              There is no perfomance decrease yet it is probably because
              i'm in the developpement stage with few users, not in
              production.<br>
              When you say it slows down the API, is it because it
              produces many more SQL requests on the DB ? <br>
              (ie Having a first result from the db, then making new
              queries to obtain the user-resource-permision value)<br>
              Can a solution  be to build a <a href="https://docs.djangoproject.com/en/1.8/topics/db/sql/" target="_blank">raw SQL query</a> a bit more complex ? <br>
              create a special view with a join between user, resource
              and perms then request it... only reading it, never write.<br>
              <br>
              Thanks<br>
              <br>
              <br>
              Le 18/06/2015 17:09, Simone Dalmasso a écrit :<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Hi Hugo,
                <div>the "easies" way would be to create a dedicated API
                  for non permitted resources that is used in a separate
                  tab in the search pages dedicate to resources that are
                  in GeoNode but the user does not have the permission
                  to view.</div>
                <div>The reasons behind that are:</div>
                <div>- The current api, for performances purpose, do not
                  loop over each result in any way, they just take the
                  data from the db, apply filters, then send to the
                  client. If you have to distinguish between permitted
                  and not permitted then you have to add back the post
                  processing that will slow down the API. Better have a
                  dedicated API to this task.</div>
                <div>- In the client side, there's Angular.js that
                  renders the resources and even if the angular tags
                  look the same as the django ones {{tag}} they are
                  actually rendered by Angular. The
                  _resourcebase_snippet works this way, so you cannot
                  use django template tags in there.</div>
                <div><br>
                </div>
                <div>If you create a separate tab you can use the same
                  logic both on the client and on the server with just a
                  different api endpoint at the price of not having the
                  results mixed in the same list.</div>
                <div><br>
                </div>
                <div>If you decide to activate the API post processing
                  (dehidratation cycle) then try to keep it as light as
                  possible otherwise the performances will drop
                  especially if you visualize many data all together.</div>
              </div>
              <div class="gmail_extra"><br>
                <div class="gmail_quote">2015-06-18 13:38 GMT+02:00
                  FERRARI Hugo <span dir="ltr"><<a>ferrari_hugo@yahoo.fr</a>></span>:<br>
                  <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello

                    everyone<br>
                    I've modified geonode behavior to make every user
                    (logged or not) to view the complete list of the
                    resources stored in geoserver and geonode store, and
                    the ability to download the metadatas.<br>
                    Then I add some restrictions to allow only a few
                    users to explore it:<br>
                     what I mean by "exploring it" is displaying the
                    geoexplorer frame for layers and giving auth to
                    download it.<br>
                    the aim is to show users the whole catalog first,
                    and e-mail the Point of Contact if a resource cannot
                    be retrivied because of restriction.<br>
                    <br>
                    To improve the user experience I want to make a
                    distinction on resource lists:<br>
                    when a resource is only "viewable" (ie displayed in
                    the list but with no permision to download it),<br>
                     it displays a "restricted access" message in the
                    resource-base-snippet template, near the MD infos
                    and thumbnail.<br>
                    So the user will be aware that he has no right to
                    retrieve it directly without contact the PoC.<br>
                    <br>
                    To do that I modify JSON answer from the server when
                    we ask him to get the list of available resources:<br>
                    the answer is built in create_response method from
                    CommonModelApi in api module.<br>
                    We can see that a single resource retrieved from the
                    db is sent back with some Metadata-fields.<br>
                    I just want to put a single boolean that will tell
                    if user has the right to download it.<br>
                    <br>
                    I have  already written the short function to get
                    this boolean, but as a template tag, used in the
                    resources detail templates.<br>
                    So i 'll have to write an other function to use it
                    the python module.<br>
                    It will produce duplicate code.<br>
                    <br>
                    Do you have some advice to do it in a better way ?<br>
                    <br>
                    Thanks,<br>
                    Hugo FERRARI<br>
                    <br>
                    <br>
                    Le 17/06/2015 23:00, <a>geonode-users-request@lists.osgeo.org</a>
                    a écrit :<br>
                    <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
                      Send geonode-users mailing list submissions to<br>
                              <a>geonode-users@lists.osgeo.org</a><br>
                      <br>
                      To subscribe or unsubscribe via the World Wide
                      Web, visit<br>
                              <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users</a><br>
                      or, via email, send a message with subject or body
                      'help' to<br>
                              <a>geonode-users-request@lists.osgeo.org</a><br>
                      <br>
                      You can reach the person managing the list at<br>
                              <a>geonode-users-owner@lists.osgeo.org</a><br>
                      <br>
                      When replying, please edit your Subject line so it
                      is more specific<br>
                      than "Re: Contents of geonode-users digest..."<br>
                      <br>
                      <br>
                      Today's Topics:<br>
                      <br>
                          1. Cannot find /var/lib/geonode/ to get
                      templates (William Francis)<br>
                          2. Re: Query on a medium sized postgis table
                      layer takes forever<br>
                             on 2.4b25 (Paolo Corti)<br>
                          3. Implementing GeoNode for University
                      (Florian Hoedt)<br>
                          4. Re: Query on a medium sized postgis table
                      layer  takes forever<br>
                             on 2.4b25 (Francesco Bartoli)<br>
                          5. Bad Thumbnail png files (Miguel-Angel
                      Manso-Callejo (UPM))<br>
                          6. Re: Bad Thumbnail png files (Simone
                      Dalmasso)<br>
                      <br>
                      <br>
----------------------------------------------------------------------<br>
                      <br>
                      Message: 1<br>
                      Date: Wed, 17 Jun 2015 19:24:51 +0630<br>
                      From: William Francis <<a>william.francis.james@gmail.com</a>><br>
                      To: <a>geonode-users@lists.osgeo.org</a><br>
                      Subject: [GeoNode-users] Cannot find
                      /var/lib/geonode/ to get<br>
                              templates<br>
                      Message-ID:<br>
                              <<a>CAD0vh4b+a6wKWaLRO-XcFxJB5ccGmfHLpbpSAXtp5p3VAs2k6g@mail.gmail.com</a>><br>
                      Content-Type: text/plain; charset="utf-8"<br>
                      <br>
                      Hello,<br>
                      <br>
                      I am following the Customizing the geonode
                      instructions and looking for the<br>
                      template files to copy to etc/geonode/templates<br>
                      <br>
                      e.g.<br>
                      <br>
/var/lib/geonode/src/GeoNodePy/geonode/templates/index.html<br>
                      <br>
                      However the directory  /var/lib/geonode/ doesn't
                      exist.<br>
                      <br>
                      <br>
                      Where can I find a copy of these templates?<br>
                      <br>
                      I am using v*ersion 2.4b25*  of geonode.<br>
                      <br>
                      Thank you.<br>
                      <br>
                      Will<br>
                      -------------- next part --------------<br>
                      An HTML attachment was scrubbed...<br>
                      URL: <<a href="http://lists.osgeo.org/pipermail/geonode-users/attachments/20150617/e56cd76e/attachment-0001.html" rel="noreferrer" target="_blank">http://lists.osgeo.org/pipermail/geonode-users/attachments/20150617/e56cd76e/attachment-0001.html</a>><br>
                      <br>
                      ------------------------------<br>
                      <br>
                      Message: 2<br>
                      Date: Wed, 17 Jun 2015 15:36:35 +0200<br>
                      From: Paolo Corti <<a>pcorti@gmail.com</a>><br>
                      To: Rainer Lissewski <<a>rainerlissewski@gmail.com</a>><br>
                      Cc: "<a>geonode-users@lists.osgeo.org</a>"
                      <<a>geonode-users@lists.osgeo.org</a>><br>
                      Subject: Re: [GeoNode-users] Query on a medium
                      sized postgis table<br>
                              layer takes forever on 2.4b25<br>
                      Message-ID:<br>
                              <<a>CAHXrU-Jo1L19VAFGZyS+i6WYMm2wtO693KTjBw6F18OqAzCkzA@mail.gmail.com</a>><br>
                      Content-Type: text/plain; charset=UTF-8<br>
                      <br>
                      On Wed, Jun 17, 2015 at 2:30 PM, Rainer Lissewski<br>
                      <<a>rainerlissewski@gmail.com</a>>

                      wrote:<br>
                      <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> Hi, in the map view, I
                        have tried to query a single attribute value<br>
                        (varchar) from a layer with about 5000 rows, and
                        it has been running over an<br>
                        hour now, with no result. If someone can guide
                        me where to look for the<br>
                        possible culprit (geoserver, django,...), I
                        would gladly take any hints<br>
                        <br>
                      </blockquote>
                      Things I would check (in this order):<br>
                      * response to the getfeatureinfo request using
                      your browser debug toolbar<br>
                      * geoserver log<br>
                      * try the query in postgis and check it using
                      EXPLAIN<br>
                      <br>
                      regards<br>
                      p<br>
                      <br>
                      <br>
                      <br>
                    </blockquote>
                    <br>
                    _______________________________________________<br>
                    geonode-users mailing list<br>
                    <a>geonode-users@lists.osgeo.org</a><br>
                    <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users</a><br>
                  </blockquote>
                </div>
                <br>
                <br clear="all"><span class="HOEnZb"><font color="#888888">
                <div><br>
                </div>
                -- <br>
                <div>Simone </div>
              </font></span></div><span class="HOEnZb"><font color="#888888">
            </font></span></blockquote><span class="HOEnZb"><font color="#888888">
            <br>
          </font></span></blockquote><span class="HOEnZb"><font color="#888888">
          <br>
        </font></span></div><span class="HOEnZb"><font color="#888888">
      </font></span></blockquote><span class="HOEnZb"><font color="#888888">
      <br>
      <br>
      -- <br>
      Simone <br>
      <br>
    </font></span></div>
    <br>
  </div>

<br>_______________________________________________<br>
geonode-users mailing list<br>
<a href="mailto:geonode-users@lists.osgeo.org">geonode-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users" rel="noreferrer" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/geonode-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Simone </div>
</div>