<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mi espacio &#187; python</title>
	<atom:link href="http://www.manuelrecena.com/blog/archives/tag/python/feed" rel="self" type="application/rss+xml" />
	<link>http://www.manuelrecena.com/blog</link>
	<description>Donde escribo sobre cosas que forman parte de mi vida profesional</description>
	<lastBuildDate>Sun, 05 Feb 2012 21:20:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>cmislib, cliente CMIS en python</title>
		<link>http://www.manuelrecena.com/blog/archives/922</link>
		<comments>http://www.manuelrecena.com/blog/archives/922#comments</comments>
		<pubDate>Sun, 23 May 2010 19:15:51 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[alfresco]]></category>
		<category><![CDATA[cmis]]></category>
		<category><![CDATA[nuxeo]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[trac]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=922</guid>
		<description><![CDATA[A finales de agosto del año pasado comencé un nuevo proyecto, un plugin para Trac que permitiese su integración con Alfresco. Desde entonces mucho ha llovido, especialmente este año. Cuando comencé no encontré ninguna librería que facilitase el trabajo con el Restful API que proporciona Alfresco y comencé un pequeño cliente para este proyecto. Más [...]]]></description>
			<content:encoded><![CDATA[<p>A <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/803" target="_blank">finales de agosto</a> del año pasado comencé un nuevo <a title="Sitio web del proyecto" href="http://clinker.klicap.es/projects/alfrescointegration" target="_blank">proyecto</a>, un plugin para Trac que permitiese su integración con Alfresco. Desde entonces mucho ha llovido, especialmente este año. Cuando comencé no encontré ninguna librería que facilitase el trabajo con el <a title="Información sobre Restful API de Alfresco" href="http://wiki.alfresco.com/wiki/Alfresco_REST_API" target="_blank">Restful API que proporciona Alfresco</a> y comencé un pequeño cliente para este proyecto. Más adelante pensé que si el cliente maduraba, quizás me convendría liberarlo de forma independiente al plugin para que otros pudieran evolucionarlo y mejorarlo. Yo sólo quería implementar los métodos más básicos.</p>
<p>Los momentos de <a title="Referencia a la wikipedia" href="http://es.wikipedia.org/wiki/Stand_by" target="_blank">standby</a> son realmente malos para cualquier proyecto, pero lo son especialmente para proyectos en los que sólo hay una persona y su planificación no se extiende más allá de tres meses para la primera versión. Con el nacimiento de <a title="Información sobre klicap" href="http://blog.klicap.es/about">klicap</a>, decidimos impulsar este plugin y <a title="Timeline del proyecto" href="http://clinker.klicap.es/projects/alfrescointegration/timeline" target="_blank">en ello estamos</a>. Antes de retomarlo, analicé el trabajo realizado y me cuestioné algunas decisiones previas. Durante esos días, descubrí <a title="Sitio web de la librería" href="http://code.google.com/p/cmislib" target="_blank">cmislib</a>. Según he pedido comprobar, su primer commit tiene fecha de mediados de diciembre de 2009. Su autor es <a title="Blog de Jeff Potts" href="http://ecmarchitect.com">Jeff Potts</a>, presidente y CEO en <a title="Sitio web de Metaversant Group, Inc." href="http://www.metaversant.com" target="_blank">Metaversant Group, Inc.</a>, donde parece que es el único empleado. Esta librería, escrita en python, forma parte del proyecto (en incubación) <a title="Sitio web del proyecto Apache Chemistry" href="http://incubator.apache.org/chemistry" target="_blank">Apache Chemistry</a>. Éste último tiene como objetivo proporcionar librerías cliente para trabajar con soluciones que implementen la especificación <a title="Información sobre la especificación" href="http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis-spec-v1.0.html" target="_blank">CMIS</a>. La librería no está completa, aun quedan funcionalidades por implementar, pero desde luego su última versión 0.3 publicada es estable y cubre gran parte de la especificación. Teniendo en cuenta que la versión 1.0 de la especificación de CMIS tiene fecha 1 de mayo de 2010, sólo me queda agradecer el excelente trabajo de Jeff.</p>
<p>Esto se traduce en que he dejado de implementar mi propio cliente, y he comenzado a usar esta librería. Esto hace incluso que me planté el nombre del plugin, porque ahora podemos integrar Trac con Alfresco, Nuxeo y otros ECM que implementen CMIS. Desde <a title="klicap en twitter" href="http://twitter.com/klicap" target="_blank">@klicap</a> haremos lo posible por colaborar en este proyecto.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/922/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar que Alfresco REST API está disponible</title>
		<link>http://www.manuelrecena.com/blog/archives/842</link>
		<comments>http://www.manuelrecena.com/blog/archives/842#comments</comments>
		<pubDate>Thu, 12 Nov 2009 11:47:21 +0000</pubDate>
		<dc:creator>Manuel Jesús Recena Soto</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[alfresco]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.manuelrecena.com/blog/?p=842</guid>
		<description><![CDATA[Para el plugin de Trac que estoy desarrollando (en los huecos que tengo) estoy desarrollando un pequeño cliente en python que me permita trabajar cómodamente con Alfresco REST API, especialmente con CMIS Web Reference. Uno de los métodos que necesitaba para este cliente es aquel que me permitiese comprobar si la configuración para trabajar con [...]]]></description>
			<content:encoded><![CDATA[<p>Para el <a title="Referencia a una entrada de este blog" href="http://www.manuelrecena.com/blog/archives/803" target="_blank">plugin de Trac</a> que estoy desarrollando (en los huecos que tengo) estoy desarrollando un <a title="Acceso al código fuente del plugin" href="http://trac.ebabel.info/projects/alfrescointegration/browser/trunk/alfrescointegration/alfresco_backend.py" target="_blank">pequeño cliente</a> en python que me permita trabajar cómodamente con <a title="Referencia a la documentación de Alfresco sobre su RESTful API" href="http://wiki.alfresco.com/wiki/Repository_RESTful_API_Reference" target="_blank">Alfresco REST API</a>, especialmente con <a title="Referencia a la documentación de Alfresco sobre su RESTful API (CMIS Web Reference)" href="http://wiki.alfresco.com/wiki/CMIS_Web_Scripts_Reference" target="_blank">CMIS Web Reference</a>. Uno de los métodos que necesitaba para este cliente es aquel que me permitiese comprobar si la configuración para trabajar con el API era correcta. Comprobar eso lleva implícito comprobar que Alfresco está disponible (se tiene acceso HTTP).</p>
<p>La configuración del plugin en relación a Alfresco es muy simple:</p>
<ul>
<li>Usuario y contraseña (credenciales)</li>
<li>URL base en la que se publica RESTful API</li>
</ul>
<p>Dejo por aquí el fragmento de código:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">def</span> is_alive<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
    isAlive_service = <span style="color: #008000;">self</span>.__url_api + <span style="color: #483d8b;">'/login'</span> +  <span style="color: #483d8b;">'?u=dummy&amp;amp;pw=dummy'</span>
    <span style="color: #008000;">self</span>.__log.<span style="color: black;">debug</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Restful Service: '</span> + isAlive_service<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">try</span>:
        response, content = <span style="color: #008000;">self</span>.__http.<span style="color: black;">request</span><span style="color: black;">&#40;</span>isAlive_service, <span style="color: #483d8b;">'GET'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> response.<span style="color: black;">status</span> == <span style="color: #dc143c;">httplib</span>.<span style="color: black;">FORBIDDEN</span>:
            <span style="color: #008000;">self</span>.__log.<span style="color: black;">debug</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Alfresco RESTful API is alive'</span><span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            <span style="color: #008000;">self</span>.__log.<span style="color: black;">debug</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Alfresco RESTful API is not alive'</span><span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span>
    <span style="color: #ff7700;font-weight:bold;">except</span>:
        <span style="color: #008000;">self</span>.__log.<span style="color: black;">debug</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'Alfresco RESTful API is not alive'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span></pre></div></div>

<p>Cualquier sugerencia será bienvenida.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.manuelrecena.com/blog/archives/842/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

