def rss_item_for_object(obj, lang): syndication_tool = obj.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) rdf_namespace = nsmap['rdf'] E = ElementMaker(None, nsmap=nsmap) xml = E.item( {'{%s}about' % rdf_namespace: obj.absolute_url()}, E.link(replace_illegal_xml(obj.absolute_url())), E.title(replace_illegal_xml(obj.non_empty_title(lang))), E.description( replace_illegal_xml(obj.getLocalProperty('description', lang))), Dc.title(replace_illegal_xml(obj.non_empty_title(lang))), Dc.identifier(replace_illegal_xml(obj.identifier())), Dc.date(obj.utShowFullDateTimeHTML(obj.releasedate)), Dc.description( replace_illegal_xml(obj.getLocalProperty('description', lang))), Dc.contributor(replace_illegal_xml(obj.contributor)), Dc.language(lang)) for k in obj.getLocalProperty('coverage', lang).split(','): xml.append(Dc.coverage(replace_illegal_xml(k.strip()))) for k in obj.getLocalProperty('keywords', lang).split(','): xml.append(Dc.subject(replace_illegal_xml(k.strip()))) xml.append(Dc.rights(replace_illegal_xml(obj.rights))) return xml
def syndicateThis(self, lang=None): if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap["dc"], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap["ut"], nsmap=nsmap) item.extend( Dc.root( Dc.type(self.document_type), Dc.format(self.format()), Dc.source(self.getLocalProperty("source", lang)), Dc.creator(self.getLocalProperty("creator", lang)), Dc.publisher(self.getLocalProperty("publisher", lang)), Dc.relation(self.relation), Ut.file_link(self.getLocalProperty("file_link", lang)), Ut.file_link_local(self.getLocalProperty("file_link_local", lang)), ) ) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID(k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) item.extend( Dc.root( Ut.creator_mail(self.creator_email), Ut.type_document(self.document_type), Ut.source_link(self.source_link), ) ) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend( Dc.root( Dc.type(self.document_type), Dc.format(self.format()), Dc.source(self.getLocalProperty('source', lang)), Dc.creator(self.getLocalProperty('creator', lang)), Dc.publisher(self.getLocalProperty('publisher', lang)), Dc.relation(self.relation), Ut.file_link(self.getLocalProperty('file_link', lang)), Ut.file_link_local( self.getLocalProperty('file_link_local', lang)))) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID( k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) item.extend( Dc.root(Ut.creator_mail(self.creator_email), Ut.type_document(self.document_type), Ut.source_link(self.source_link))) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend(Dc.root( Dc.type(self.type_law), Dc.format(self.format()), Dc.source(self.getLocalProperty('source', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.publisher(l_site.getLocalProperty('publisher', lang)), Dc.relation(self.relation) )) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID(k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) item.extend(Dc.root( Ut.type_law(self.type_law), Ut.file_link(self.file_link), #Ut.file_link_local(self.file_link_local), Ut.official_journal_ref(self.getLocalProperty('official_journal_ref', lang)), Ut.source_link(self.source_link), Ut.geozone(self.geozone), Ut.original_language(self.original_language), Ut.statute(self.statute) )) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() self.getLocalProperty('location') item = rss_item_for_object(self, lang) syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] ev_namespace = nsmap['ev'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) Ev = ElementMaker(namespace=ev_namespace, nsmap=nsmap) the_rest = Dc.root( Dc.type('Event'), Dc.format('text'), Dc.source(l_site.publisher), Dc.creator(l_site.creator), Dc.publisher(l_site.publisher), Ev.location(self.location), Ev.organizer(self.host), Ev.type(self.getPortalI18n().get_translation('', self.getEventTypeTitle(self.event_type))), Ev.startdate(self.utShowFullDateTimeHTML(self.start_date)) ) if self.end_date: the_rest.append(Ev.enddate(self.utShowFullDateTimeHTML(self.end_date))) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] ev_namespace = nsmap['ev'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) Ev = ElementMaker(namespace=ev_namespace, nsmap=nsmap) the_rest = Dc.root( Dc.type('Meeting'), Dc.format('text'), Dc.source(l_site.getLocalProperty('publisher', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.publisher(l_site.getLocalProperty('publisher', lang)), Ev.startdate(self.utShowFullDateTimeHTML( self.interval.start_date)), Ev.enddate(self.utShowFullDateTimeHTML(self.interval.end_date)), Ev.location(self.geo_address()), Ev.organizer(self.contact_person), Ev.type('Meeting') ) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def rss_item_for_object(obj,lang): syndication_tool = obj.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) rdf_namespace = nsmap['rdf'] E = ElementMaker(None, nsmap=nsmap) xml = E.item( {'{%s}about'%rdf_namespace : obj.absolute_url()}, E.link(replace_illegal_xml(obj.absolute_url())), E.title(replace_illegal_xml(obj.non_empty_title(lang))), E.description(replace_illegal_xml(obj.getLocalProperty('description', lang))), Dc.title(replace_illegal_xml(obj.non_empty_title(lang))), Dc.identifier(replace_illegal_xml(obj.identifier())), Dc.date(obj.utShowFullDateTimeHTML(obj.releasedate)), Dc.description(replace_illegal_xml(obj.getLocalProperty('description', lang))), Dc.contributor(replace_illegal_xml(obj.contributor)), Dc.language(lang) ) for k in obj.getLocalProperty('coverage', lang).split(','): xml.append(Dc.coverage(replace_illegal_xml(k.strip()))) for k in obj.getLocalProperty('keywords', lang).split(','): xml.append(Dc.subject(replace_illegal_xml(k.strip()))) xml.append(Dc.rights(replace_illegal_xml(obj.rights))) return xml
def syndicateThis(self, lang=None): """ Generates RDF item tag for an object. B{This method can be overwritten by some types of objects in order to add specific tags.} @param lang: content language @type lang: string """ l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) rdf_namespace = nsmap['rdf'] dc_namespace = nsmap['dc'] Rdf = ElementMaker(namespace=rdf_namespace, nsmap=nsmap) Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) E = ElementMaker(None, nsmap=nsmap) xml = Rdf.RDF( E.item( {'{%s}about'%rdf_namespace : self.absolute_url()}, E.link(self.absolute_url()), E.title(self.non_empty_title(lang)), E.description(self.getLocalProperty('description', lang)), Dc.title(self.non_empty_title(lang)), Dc.identifier(self.identifier()), Dc.date(self.utShowFullDateTimeHTML(self.releasedate)), Dc.description(self.getLocalProperty('description', lang)), Dc.contributor(self.contributor), Dc.language(lang) ) ) item = xml[0] for k in self.getLocalProperty('coverage', lang).split(','): item.append(Dc.coverage(k.strip())) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Dc.subject(k.strip())) item.append(Dc.rights(self.getLocalProperty('rights', lang))) the_rest = ( Dc.publisher(l_site.getLocalProperty('publisher', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.type(self.type()), Dc.format(self.format()), Dc.source(l_site.getLocalProperty('publisher', lang)), ) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ev = ElementMaker(namespace=nsmap['ev'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend(Dc.root( Dc.type('Event'), Dc.format(self.format()), Dc.source(self.getLocalProperty('source', lang)), Dc.creator(self.getLocalProperty('creator', lang)), Dc.publisher(l_site.getLocalProperty('publisher', lang)), Dc.relation(self.relation), )) for k in self.subject: theme_ob = self.getPortalThesaurus().getThemeByID(k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) item.extend(Ev.root( Ev.organizer(self.getLocalProperty('organizer', lang)), Ev.type(self.event_type), Ev.startdate(self.utShowFullDateTimeHTML(self.start_date)) )) if self.end_date: item.append(Ev.enddate(self.utShowFullDateTimeHTML(self.end_date))) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Ut.keyword(k)) item.extend(Ut.root( Ut.creator_mail(self.creator_email), Ut.contact_name(self.getLocalProperty('contact_person', lang)), Ut.contact_mail(self.contact_email), Ut.contact_phone(self.contact_phone), Ut.event_type(self.event_type), Ut.file_link(self.getLocalProperty('file_link', lang)), Ut.file_link_copy(self.getLocalProperty('file_link_copy', lang)), Ut.source_link(self.source_link), Ut.organizer(self.getLocalProperty('organizer', lang)), Ut.geozone(self.geozone), Ut.address(self.getLocalProperty('address', lang)), Ut.duration(self.getLocalProperty('duration', lang)), Ut.event_status(self.event_status), Ut.start_date(self.utShowFullDateTimeHTML(self.start_date)) )) if self.end_date: item.append(Ut.end_date(self.utShowFullDateTimeHTML(self.end_date))) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) the_rest = Dc.root(Dc.type('Text'), Dc.format('application'), Dc.source(l_site.publisher), Dc.creator(l_site.creator), Dc.publisher(l_site.publisher)) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) dc_namespace = nsmap['dc'] Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) the_rest = Dc.root( Dc.type('Text'), Dc.format('application'), Dc.source(l_site.publisher), Dc.creator(l_site.creator), Dc.publisher(l_site.publisher)) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): """ Generates RDF item tag for an object. B{This method can be overwritten by some types of objects in order to add specific tags.} @param lang: content language @type lang: string """ l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() syndication_tool = self.getSyndicationTool() namespaces = syndication_tool.getNamespaceItemsList() nsmap = get_nsmap(namespaces) rdf_namespace = nsmap['rdf'] dc_namespace = nsmap['dc'] Rdf = ElementMaker(namespace=rdf_namespace, nsmap=nsmap) Dc = ElementMaker(namespace=dc_namespace, nsmap=nsmap) E = ElementMaker(None, nsmap=nsmap) xml = Rdf.RDF( E.item({'{%s}about' % rdf_namespace: self.absolute_url()}, E.link(self.absolute_url()), E.title(self.non_empty_title(lang)), E.description(self.getLocalProperty('description', lang)), Dc.title(self.non_empty_title(lang)), Dc.identifier(self.identifier()), Dc.date(self.utShowFullDateTimeHTML(self.releasedate)), Dc.description(self.getLocalProperty('description', lang)), Dc.contributor(self.contributor), Dc.language(lang))) item = xml[0] for k in self.getLocalProperty('coverage', lang).split(','): item.append(Dc.coverage(k.strip())) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Dc.subject(k.strip())) item.append(Dc.rights(self.getLocalProperty('rights', lang))) the_rest = ( Dc.publisher(l_site.getLocalProperty('publisher', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.type(self.type()), Dc.format(self.format()), Dc.source(l_site.getLocalProperty('publisher', lang)), ) item.extend(the_rest) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def index_html(self, feed='', REQUEST=None, RESPONSE=None): """ """ if feed == 'atom': return self.syndicateAtom(self, self.get_objects_for_rdf(), self.language) s = self.getSite() lang = self.language if lang == 'auto': lang = self.gl_get_selected_language() l_items = self.get_objects_for_rdf() namespaces = self.getNamespaceItemsList() nsmap = get_nsmap(namespaces) header = [] for n in namespaces: header.append(str(n)) rdf_namespace = nsmap['rdf'] Rdf = ElementMaker(namespace=rdf_namespace, nsmap=nsmap) E = ElementMaker(None, nsmap=nsmap) xml = Rdf.RDF(rss_channel_for_channel(self, lang)) channel = xml[0] items = channel[-1] seq = etree.SubElement(items, '{%s}Seq' % rdf_namespace) for i in l_items: x = etree.SubElement(seq, '{%s}li' % rdf_namespace, resource=i.absolute_url()) if self.hasImage(): image = E.image( E.title(self.title), E.url(self.getImagePath()), E.link(s.absolute_url()), E.description(self.utToUtf8(self.description)) ) xml.append(image) received_items = ''.join([i.syndicateThis() for i in l_items]) received = '<rdf:RDF %s>%s</rdf:RDF>' % (' '.join(header), received_items) xml_received = etree.XML(received, etree.XMLParser(strip_cdata=False)) xml.extend(xml_received) self.REQUEST.RESPONSE.setHeader('content-type', 'text/xml') return etree.tostring(xml, xml_declaration=True, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend( Dc.root(Dc.type('Text'), Dc.format(self.format()), Dc.source(self.getLocalProperty('source', lang)), Dc.creator(self.getLocalProperty('creator', lang)), Dc.publisher(self.getLocalProperty('publisher', lang)), Dc.relation(self.relation))) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID( k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Ut.keywords(k)) item.extend( Ut.root( Ut.creator_mail(self.creator_email), Ut.contact_name(self.getLocalProperty('contact_person', lang)), Ut.contact_mail(self.getLocalProperty('contact_email', lang)), Ut.contact_phone(self.getLocalProperty('contact_phone', lang)), Ut.news_type(self.news_type), Ut.file_link(self.getLocalProperty('file_link', lang)), Ut.file_link_local( self.getLocalProperty('file_link_local', lang)), Ut.source_link(self.source_link), Ut.start_date(self.utShowFullDateTimeHTML(self.news_date)), Ut.save_date( self.utShowFullDateTimeHTML( self.bobobase_modification_time())))) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend(Dc.root( Dc.type('Text'), Dc.format(self.format()), Dc.source(self.getLocalProperty('source', lang)), Dc.creator(self.getLocalProperty('creator', lang)), Dc.publisher(self.getLocalProperty('publisher', lang)), Dc.relation(self.relation) )) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID(k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(Dc.subject(theme_name.strip())) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Ut.keywords(k)) item.extend(Ut.root( Ut.creator_mail(self.creator_email), Ut.contact_name(self.getLocalProperty('contact_person', lang)), Ut.contact_mail(self.getLocalProperty('contact_email', lang)), Ut.contact_phone(self.getLocalProperty('contact_phone', lang)), Ut.news_type(self.news_type), Ut.file_link(self.getLocalProperty('file_link', lang)), Ut.file_link_local(self.getLocalProperty('file_link_local', lang)), Ut.source_link(self.source_link), Ut.start_date(self.utShowFullDateTimeHTML(self.news_date)), Ut.save_date(self.utShowFullDateTimeHTML(self.bobobase_modification_time())) )) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend(Dc.root( Dc.type('Text'), Dc.format(self.format()), Dc.source(l_site.getLocalProperty('creator', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.publisher(l_site.getLocalProperty('publisher', lang)) )) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID(k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(theme_name.strip()) item.extend(Ut.root( Ut.ID(self.id), Ut.Acronym(self.getLocalProperty('acronym', lang)), Ut.Title(self.getLocalProperty('title', lang)), Ut.Budget_Total(self.budget, Currency="EUR"), )) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Ut.keywords(k)) for fund_item in self.getFundings(): item.extend(Ut.Root( Ut.Funding( Ut.Source(fund_item.getLocalProperty('funding_source', lang)), Ut.Programme(fund_item.getLocalProperty('funding_programme', lang)), Ut.Type(fund_item.getLocalProperty('funding_type', lang)), Ut.Funding_Rate(fund_item.getLocalProperty('funding_rate', lang))), Ut.Programme_Field(self.getLocalProperty('programme', lang)), Ut.Source(self.getLocalProperty('source', lang)), Ut.WebSite(self.resourceurl), Ut.Background(self.getLocalProperty('description', lang)), Ut.Objectives(self.getLocalProperty('objectives', lang)), Ut.Results(self.getLocalProperty('results', lang)), Ut.Starting_Date(self.start_date), Ut.Ending_date(self.end_date) )) for doc_item in self.getDocuments(): item.append(Ut.Document( Dc.title(doc_item.getLocalProperty('title', lang)), Dc.file_link(doc_item.getLocalProperty('file_link', lang)), Ut.type_document(doc_item.document_type), )) partners = Ut.Partners() #TODO: the acronym property was not specified for org_item in self.getOrganisations(): partners.extend(Ut.root( Ut.Or_Name(org_item.getLocalProperty('results', lang), Or_Acronym='acronym'), Ut.Or_Type(org_item.org_type), Ut.Or_Desc(org_item.getLocalProperty('description', lang)), Ut.Or_address(org_item.getLocalProperty('address', lang)) )) for k in self.splitToList(org_item.getLocalProperty('coverage', lang)): partners.append(Ut.Or_Country(k)) partners.extend(Ut.root( Ut.Or_WebSite(org_item.org_url), #TODO: explain the coordinator attribute #TODO: contacts must be a list Ut.Or_Contact( #TODO: explain attribute 'Project_Manager Ut.Co_Title(org_item.getLocalProperty('contact_title', lang)), Ut.Co_FirstName(org_item.getLocalProperty('contact_firstname', lang)), Ut.Co_LastName(org_item.getLocalProperty('contact_lastname', lang)), Ut.Co_Position(org_item.getLocalProperty('contact_position', lang)), Ut.Co_Email(org_item.contact_email), Ut.Co_Tel(org_item.contact_phone), Ut.Co_Fax(org_item.contact_fax), Coordinator="0" ) )) if self.getOrganisations(): item.append(partners) field_sites = Ut.Field_sites() for fs_item in self.getFieldSites(): field_sites = Ut.Field_sites( Ut.Site_name(fs_item.getLocalProperty('title', lang)), Ut.Site_country(fs_item.getLocalProperty('coverage', lang)) ) for k in self.splitToList(fs_item.getLocalProperty('fieldsite_rb', lang)): field_sites.append(Ut.River_basin(k)) if self.getFieldSites(): item.append(field_sites) return etree.tostring(item, xml_declaration=False, encoding="utf-8")
def syndicateThis(self, lang=None): l_site = self.getSite() if lang is None: lang = self.gl_get_selected_language() item = rss_item_for_object(self, lang) nsmap = get_nsmap(self.getSyndicationTool().getNamespaceItemsList()) Dc = ElementMaker(namespace=nsmap['dc'], nsmap=nsmap) Ut = ElementMaker(namespace=nsmap['ut'], nsmap=nsmap) item.extend( Dc.root(Dc.type('Text'), Dc.format(self.format()), Dc.source(l_site.getLocalProperty('creator', lang)), Dc.creator(l_site.getLocalProperty('creator', lang)), Dc.publisher(l_site.getLocalProperty('publisher', lang)))) for k in self.subject: if k: theme_ob = self.getPortalThesaurus().getThemeByID( k, self.gl_get_selected_language()) theme_name = theme_ob.theme_name if theme_name: item.append(theme_name.strip()) item.extend( Ut.root( Ut.ID(self.id), Ut.Acronym(self.getLocalProperty('acronym', lang)), Ut.Title(self.getLocalProperty('title', lang)), Ut.Budget_Total(self.budget, Currency="EUR"), )) for k in self.getLocalProperty('keywords', lang).split(','): item.append(Ut.keywords(k)) for fund_item in self.getFundings(): item.extend( Ut.Root( Ut.Funding( Ut.Source( fund_item.getLocalProperty('funding_source', lang)), Ut.Programme( fund_item.getLocalProperty('funding_programme', lang)), Ut.Type( fund_item.getLocalProperty('funding_type', lang)), Ut.Funding_Rate( fund_item.getLocalProperty('funding_rate', lang))), Ut.Programme_Field(self.getLocalProperty( 'programme', lang)), Ut.Source(self.getLocalProperty('source', lang)), Ut.WebSite(self.resourceurl), Ut.Background(self.getLocalProperty('description', lang)), Ut.Objectives(self.getLocalProperty('objectives', lang)), Ut.Results(self.getLocalProperty('results', lang)), Ut.Starting_Date(self.start_date), Ut.Ending_date(self.end_date))) for doc_item in self.getDocuments(): item.append( Ut.Document( Dc.title(doc_item.getLocalProperty('title', lang)), Dc.file_link(doc_item.getLocalProperty('file_link', lang)), Ut.type_document(doc_item.document_type), )) partners = Ut.Partners() #TODO: the acronym property was not specified for org_item in self.getOrganisations(): partners.extend( Ut.root( Ut.Or_Name(org_item.getLocalProperty('results', lang), Or_Acronym='acronym'), Ut.Or_Type(org_item.org_type), Ut.Or_Desc(org_item.getLocalProperty('description', lang)), Ut.Or_address(org_item.getLocalProperty('address', lang)))) for k in self.splitToList( org_item.getLocalProperty('coverage', lang)): partners.append(Ut.Or_Country(k)) partners.extend( Ut.root( Ut.Or_WebSite(org_item.org_url), #TODO: explain the coordinator attribute #TODO: contacts must be a list Ut.Or_Contact( #TODO: explain attribute 'Project_Manager Ut.Co_Title( org_item.getLocalProperty('contact_title', lang)), Ut.Co_FirstName( org_item.getLocalProperty('contact_firstname', lang)), Ut.Co_LastName( org_item.getLocalProperty('contact_lastname', lang)), Ut.Co_Position( org_item.getLocalProperty('contact_position', lang)), Ut.Co_Email(org_item.contact_email), Ut.Co_Tel(org_item.contact_phone), Ut.Co_Fax(org_item.contact_fax), Coordinator="0"))) if self.getOrganisations(): item.append(partners) field_sites = Ut.Field_sites() for fs_item in self.getFieldSites(): field_sites = Ut.Field_sites( Ut.Site_name(fs_item.getLocalProperty('title', lang)), Ut.Site_country(fs_item.getLocalProperty('coverage', lang))) for k in self.splitToList( fs_item.getLocalProperty('fieldsite_rb', lang)): field_sites.append(Ut.River_basin(k)) if self.getFieldSites(): item.append(field_sites) return etree.tostring(item, xml_declaration=False, encoding="utf-8")