<div class="gmail_quote">2011/1/23 Alex Mandel <span dir="ltr">&lt;<a href="mailto:tech_dev@wildintellect.com">tech_dev@wildintellect.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div><div></div><div class="h5">On 01/22/2011 03:26 PM, Alessandro Pasotti wrote:<br>
&gt; 2011/1/22 Gary Sherman &lt;<a href="mailto:gsherman@geoapt.com">gsherman@geoapt.com</a>&gt;<br>
&gt;<br>
&gt;&gt; On 1/22/11 8:57 AM, Alessandro Pasotti wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; 2011/1/22 Gary Sherman &lt;<a href="mailto:gsherman@geoapt.com">gsherman@geoapt.com</a> &lt;mailto:<a href="mailto:gsherman@geoapt.com">gsherman@geoapt.com</a>&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;    On 1/22/11 1:25 AM, Alessandro Pasotti wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;        2011/1/22 Paolo Cavallini &lt;<a href="mailto:cavallini@faunalia.it">cavallini@faunalia.it</a><br>
&gt;&gt;&gt;        &lt;mailto:<a href="mailto:cavallini@faunalia.it">cavallini@faunalia.it</a>&gt;<br>
&gt;&gt;&gt;        &lt;mailto:<a href="mailto:cavallini@faunalia.it">cavallini@faunalia.it</a> &lt;mailto:<a href="mailto:cavallini@faunalia.it">cavallini@faunalia.it</a>&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;            Il giorno ven, 21/01/2011 alle 19.37 +0100, Alessandro<br>
&gt;&gt;&gt;        Pasotti ha<br>
&gt;&gt;&gt;            scritto:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;         &gt; The missing piece was the authentication bridge with OSGEO.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;            AFAIK this is now working. If so, what prevents us from setting<br>
&gt;&gt;&gt;            everything in place?<br>
&gt;&gt;&gt;            All the best.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;        I&#39;was able to login with my osgeo credentials but I couldn&#39;t<br>
&gt;&gt;&gt;        upload a<br>
&gt;&gt;&gt;        plugin: it fails with permission denied on the folder where the<br>
&gt;&gt;&gt;        plugin<br>
&gt;&gt;&gt;        files should reside.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;        Somebody with root access to the server should fix it.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;        [Errno 13] Permission denied:<br>
&gt;&gt;&gt;        &#39;********************/qgis/static/packages&#39;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;    The validation of plugin packages doesn&#39;t work properly for all<br>
&gt;&gt;&gt;    packages. My plugin that uploads and validates find on the &quot;old&quot; repo<br>
&gt;&gt;&gt;    (<a href="http://pyqgis.org" target="_blank">pyqgis.org</a> &lt;<a href="http://pyqgis.org" target="_blank">http://pyqgis.org</a>&gt;) fails on the new site:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;    File upload must be a valid QGIS Python plugin compressed archive.<br>
&gt;&gt;&gt;    Cannot find __init__.py in the compressed package: this does not<br>
&gt;&gt;&gt;    seems a valid plugin (I searched for pluginbuilder/Makefile__init__.py)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;    Looks like it is munging things together that shouldn&#39;t be....<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;<br>
&gt; Your plugin loads without errors on my dev environment (I cannot reproduce<br>
&gt; the issue).<br>
&gt;<br>
&gt; I will try on the server tomorrow.<br>
&gt;<br>
&gt; In the meantime, I&#39;ve opened a project on redmine for the django site.<br>
&gt;<br>
<br>
</div></div>It appears that relying on the 1st item in the zip to always be<br>
packagename.zip just isn&#39;t 100% reliable. My metaedit plugin fails that<br>
test in python but is clearly formatted correctly when extracted or<br>
downloaded by qgis. I did test in python by hand too and metaedit/ isn&#39;t<br>
in the namelist at all for some reason even though the folder is there<br>
when the package is extracted.<br>
<br>
Here are some possible ways to change the validator<br>
namelist[0].split(&#39;/&#39;) to grab whatever is before the /<br>
or package.split(&#39;.&#39;) to grab the name of the zip minus the ext<br>
- There are several other ways to do this in python with the os and path<br>
modules, or slicing. The nice part about package.split is that you could<br>
save both the packagename and ext to test if the ext is zip<br>
<br>
packagename,ext = package.split(&#39;.&#39;)<br>
<br></blockquote><div><br></div><div>Thanks Alex, </div><div><br></div><div>I agree, but this would be a different check:</div><div><br></div><div>the intention was to check that *inside* the zip there is a folder with name = package_name, non to check that the zip file is named package_name.</div>
<div><br></div><div>Perhaps I misunderstood the specs, but I guess that the plugin zip file could be whatever name we like (for example I name my zipfiles with the version postfix such as QuickWKT_0.1.zip, QuickWKT_0.2.zip etc. etc.), what I wanted to check is that inside the zip there is a folder named package_name (in this example &quot;QuickWKT&quot;).</div>
<div><br></div><div><br></div><div>I changed the line to</div><div><br></div><div><div><br></div></div><div><div>        # Checks that package_name/__init__.py exists</div><div>        namelist = zip.namelist()</div><div>
        try:</div><div>            package_name = namelist[0][:namelist[0].index(&#39;/&#39;)]</div><div>        except:</div><div>            raise ValidationError( _(&quot;Cannot find a folder inside the compressed package: this does not seems a valid plugin&quot;) )</div>
</div><div><br></div><div><br></div><div><br></div><div>this should make it more robust</div><div><br></div><div> </div></div>-- <br>Alessandro Pasotti<br>w3:   <a href="http://www.itopen.it">www.itopen.it</a><br>