# HG changeset patch # User Laure Bourgois # Date 1234176932 -3600 # Node ID 4bbeb62ba9556c8cb1ff2d47e00dd2f630b9c79a # Parent 005f78d21fc7e251d77ae0ffb44b903182bc3538 add a linked data view for project. this linked data view will be extended to pertinent entities in the future. We remark that we use doap format if it exists (doap:created, doap:description ...), we use our own vocabulary (available in tbox view) if doap does not supports it. diff -r 005f78d21fc7 -r 4bbeb62ba955 web/views/linkedData.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/views/linkedData.py Mon Feb 09 11:55:32 2009 +0100 @@ -0,0 +1,78 @@ +from logilab.mtconverter import html_escape + +from cubicweb.common.view import EntityView + +from urlparse import urlparse + +class LinkedDataProjectView(EntityView): + id = 'project_linked_data' + title = _('Project linked data') + accepts = ('Project',) + templatable = False + content_type = 'text/xml' + + def call(self): + '''display all project attribut and project dependencies and external project (in doap format) if + it is related to''' + + self.w(u'\n' % self.req.encoding) + self.w(u'''\n''') + for i in xrange(self.rset.rowcount): + self.cell_call(row=i, col=0) + self.w(u'\n') + + def cell_call(self, row, col): + self.wview('project_linked_data_item', self.rset, row=row, col=col) + +class LinkedDataProjectItemView(EntityView): + id = 'project_linked_data_item' + accepts = ('Project',) + + def cell_call(self, row, col): + entity = self.complete_entity(row, col) + self.w(u'\n' % html_escape(entity.absolute_url())) + self.w(u' %s\n' % html_escape(unicode(entity.dc_title()))) + self.w(u' %s\n' % (entity.creation_date.strftime('%Y-%m-%d'))) + self.w(u' %s\n' % html_escape(unicode(entity.summary))) + self.w(u' %s\n' % html_escape(unicode(entity.description))) + self.w(u' %s\n' % html_escape(entity.url or entity.absolute_url())) + if entity.modification_date: + self.w(u'%s\n'% (entity.modification_date.strftime('%Y-%m-%d'))) + if entity.vcsurl: + self.w(u''' + + ''' % html_escape(entity.vcsurl)) + if entity.reporturl: + self.w(u'"%s"' % html_escape(entity.vcsurl)) + + if entity.downloadurl: + self.w(u' %s\n' % html_escape(entity.downloadurl)) + liste = urlparse(entity.absolute_url()) + internal_address = liste[1] + for externalproject in entity.uses: + self.w(u'\n') + if externalproject.e_schema == 'ExtProject': + if externalproject.absolute_url().find(internal_address) > 0: + self.w(u'') + self.w(u' %s'% externalproject.absolute_url()) + else: + self.w(u'%s'% externalproject.absolute_url()) + self.w(u'\n') + for externalproject in entity.recommends: + self.w(u'\n') + if externalproject.e_schema == 'ExtProject': + if externalproject.absolute_url().find(internal_address) > 0: + self.w(u'') + self.w(u'%s'% externalproject.absolute_url()) + else: + self.w(u'%s'% externalproject.absolute_url()) + self.w(u'%s'% externalproject.absolute_url()) + + self.w(u'\n') + +