Skip to content
Snippets Groups Projects
Commit c483d7767340 authored by Laure Bourgois's avatar Laure Bourgois
Browse files

Implementing new (and more complete) ISioc interfaces.

Sioc views are generic and should be moved to cubicweb/views (see ticket #224980).
parent f22970e9210c
No related branches found
No related tags found
No related merge requests found
......@@ -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
......@@ -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):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment