diff --git a/entities.py b/entities.py index f22970e9210c9af8977208f80e15ad4fcb6905f3_ZW50aXRpZXMucHk=..c483d7767340a42eccd0ad2bd751cfc839da04d9_ZW50aXRpZXMucHk= 100644 --- a/entities.py +++ b/entities.py @@ -44,9 +44,10 @@ descr = u'%s %s' % (_('posted on'), self.format_date(self.creation_date)) return descr + # isioc interface def isioc_content(self): return self.content def isioc_container(self): rset = self.related('entry_of') entity = rset.get_entity(0, 0) @@ -47,10 +48,19 @@ def isioc_content(self): return self.content def isioc_container(self): rset = self.related('entry_of') entity = rset.get_entity(0, 0) - return entity + return entity + + def isioc_type(self): + return 'BlogPost' + + def isioc_replies(self): + return [] + + def isioc_topics(self): + return [] class Blog(AnyEntity): """customized class for Blog entities""" @@ -66,5 +76,6 @@ rql = 'Any E ORDERBY D DESC WHERE E is BlogEntry, E entry_of X, X eid %s, E creation_date D' % self.eid return self.build_url(rql=rql, vid='rss', vtitle=self.dc_title()) + # isioc interface def isioc_type(self): return 'Weblog' @@ -69,4 +80,7 @@ def isioc_type(self): return 'Weblog' + + def isioc_items(self): + return self.reverse_entry_of diff --git a/views.py b/views.py index f22970e9210c9af8977208f80e15ad4fcb6905f3_dmlld3MucHk=..c483d7767340a42eccd0ad2bd751cfc839da04d9_dmlld3MucHk= 100644 --- a/views.py +++ b/views.py @@ -23,7 +23,8 @@ from cubicweb.web.htmlwidgets import BoxLink, BoxWidget from cubicweb.interfaces import ISiocItem, ISiocContainer - +# FIXME: this view is generic and should be defined in cubicweb/web/views/?? +# See ticket #224980 class SIOCView(EntityView): id = 'sioc' __selectors__ = EntityView.__selectors__ + (implement_interface,) @@ -31,7 +32,6 @@ title = _('sioc') templatable = False content_type = 'text/xml' - item_vid = 'sioc_item' def call(self): self.w(u'<?xml version="1.0" encoding="%s"?>\n' % self.req.encoding) @@ -44,7 +44,7 @@ xmlns:sioctype="http://rdfs.org/sioc/types#" xmlns:dcterms="http://purl.org/dc/terms/">\n''') for i in xrange(self.rset.rowcount): - self.cell_call(row=i, col=0) + self.cell_call(i, 0) self.w(u'</rdf:RDF>\n') def cell_call(self, row, col): @@ -48,9 +48,5 @@ self.w(u'</rdf:RDF>\n') def cell_call(self, row, col): - entity = self.complete_entity(row,col) - if entity.id =='BlogEntry': - self.wview(self.item_vid, self.rset, row=row, col=col) - else: - self.wview('sioc_container', self.rset, row=row, col=col) + self.wview('sioc_element', self.rset, row=row, col=col) @@ -56,8 +52,7 @@ - -class SIOCBlogContainerView(EntityView): - id = 'sioc_container' +class SIOCContainerView(EntityView): + id = 'sioc_element' __selectors__ = EntityView.__selectors__ + (implement_interface,) accepts_interfaces = (ISiocContainer,) templatable = False content_type = 'text/xml' @@ -60,8 +55,7 @@ __selectors__ = EntityView.__selectors__ + (implement_interface,) accepts_interfaces = (ISiocContainer,) templatable = False content_type = 'text/xml' - accepts = ('Blog',) def cell_call(self, row, col): entity = self.complete_entity(row, col) @@ -65,9 +59,8 @@ def cell_call(self, row, col): entity = self.complete_entity(row, col) - self.w(u' <sioc:%s rdf:about="%s">\n' % (html_escape(entity.isioc_type()), - html_escape(entity.absolute_url()))) - - self.w(u'<dcterms:title>%s</dcterms:title>'% html_escape(unicode(entity.title))) - self.w(u'<dcterms:created>%s</dcterms:created>'% entity.creation_date) + self.w(u'<sioc:%s rdf:about="%s">\n' % (html_escape(entity.isioc_type()), + html_escape(entity.absolute_url()))) + self.w(u'<dcterms:title>%s</dcterms:title>' % html_escape(unicode(entity.title))) + self.w(u'<dcterms:created>%s</dcterms:created>' % entity.creation_date) self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date) @@ -73,4 +66,4 @@ self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date) - + self.w(u'<!-- FIXME : here be items -->')#entity.isioc_items() self.w(u'</sioc:%s>\n' % entity.isioc_type()) @@ -75,6 +68,6 @@ self.w(u'</sioc:%s>\n' % entity.isioc_type()) -class SIOCItemView(SIOCBlogContainerView): - id ='sioc_item' - accepts = ('BlogEntry',) +class SIOCItemView(EntityView): + id = 'sioc_element' + __selectors__ = EntityView.__selectors__ + (implement_interface,) accepts_interfaces = (ISiocItem,) @@ -80,5 +73,6 @@ accepts_interfaces = (ISiocItem,) - - + templatable = False + content_type = 'text/xml' + def cell_call(self, row, col): entity = self.complete_entity(row, col) @@ -83,10 +77,11 @@ def cell_call(self, row, col): entity = self.complete_entity(row, col) - self.w(u' <sioc:Post rdf:about="%s">\n' % html_escape(entity.absolute_url())) - self.w(u'<dcterms:title>%s</dcterms:title>'% html_escape(unicode(entity.title))) - self.w(u'<dcterms:created>%s</dcterms:created>'% entity.creation_date) + self.w(u'<sioc:%s rdf:about="%s">\n' % ('Post', #entity.isioc_type(), + html_escape(entity.absolute_url()))) + self.w(u'<dcterms:title>%s</dcterms:title>' % html_escape(unicode(entity.title))) + self.w(u'<dcterms:created>%s</dcterms:created>' % entity.creation_date) self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date) if entity.content: self.w(u'<sioc:content>%s</sioc:content>''' % html_escape(entity.isioc_content())) if entity.related('entry_of'): self.w(u'<sioc:has_container rdf:resource="%s"/>\n' % html_escape(entity.isioc_container().absolute_url())) @@ -88,8 +83,7 @@ self.w(u'<dcterms:modified>%s</dcterms:modified>' % entity.modification_date) if entity.content: self.w(u'<sioc:content>%s</sioc:content>''' % html_escape(entity.isioc_content())) if entity.related('entry_of'): self.w(u'<sioc:has_container rdf:resource="%s"/>\n' % html_escape(entity.isioc_container().absolute_url())) - if entity.creator: - foaf = entity.creator.view('foaf') + for creator in entity.created_by: self.w(u'<sioc:has_creator>\n') @@ -95,5 +89,5 @@ self.w(u'<sioc:has_creator>\n') - self.w(u'<sioc:User rdf:about="%s">\n' % entity.dc_creator().absolute_url()) - self.w(foaf) + self.w(u'<sioc:User rdf:about="%s">\n' % creator.absolute_url()) + self.w(creator.view('foaf')) self.w(u'</sioc:User>\n') self.w(u'</sioc:has_creator>\n') @@ -98,6 +92,8 @@ self.w(u'</sioc:User>\n') self.w(u'</sioc:has_creator>\n') - self.w(u' </sioc:Post>\n') + self.w(u'<!-- FIXME : here be topics -->')#entity.isioc_topics() + self.w(u'<!-- FIXME : here be replies -->')#entity.isioc_replies() + self.w(u' </sioc:%s>\n' % 'Post') class BlogPrimaryView(baseviews.PrimaryView):