<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>