예제 #1
0
 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")
예제 #2
0
 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")
예제 #3
0
 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")
예제 #4
0
 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")
예제 #5
0
 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")
예제 #6
0
 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")
예제 #7
0
 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")
예제 #8
0
 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")
예제 #9
0
    def test_rss_item_for_object(self):
        syndication_tool = self.portal.getSyndicationTool()
        namespaces = {}
        for n in syndication_tool.getNamespaceItemsList():
            if n.prefix != '':
                namespaces[n.prefix] = n.value
            else:
                namespaces['a'] = n.value
        addNyEvent(self.portal['info'],
                   id='9000',
                   contributor='Me',
                   title='Eveniment',
                   start_date='12/12/2012',
                   description='About something')
        event = self.portal['info']['9000']
        event.approveThis()
        self.portal.recatalogNyObject(self.portal['info']['9000'])
        lang = self.portal.gl_get_selected_language()
        self.portal._setLocalPropValue('rights', lang, 'No rights')
        tree = rss_item_for_object(event, lang)
        title = tree.xpath('./title', namespaces=namespaces)[0]
        link = tree.xpath('./link', namespaces=namespaces)[0]
        description = tree.xpath('./description', namespaces=namespaces)[0]
        dc_title = tree.xpath('./dc:title', namespaces=namespaces)[0]
        identifier = tree.xpath('./dc:identifier', namespaces=namespaces)[0]
        dc_description = tree.xpath('./dc:description',
                                    namespaces=namespaces)[0]
        contributor = tree.xpath('./dc:contributor', namespaces=namespaces)[0]
        language = tree.xpath('./dc:language', namespaces=namespaces)[0]
        rights = tree.xpath('./dc:rights', namespaces=namespaces)[0]

        self.assertEqual(title.text, event.title)
        self.assertEqual(link.text, event.absolute_url())
        self.assertEqual(description.text, event.description)
        self.assertEqual(dc_title.text, event.title)
        self.assertEqual(identifier.text, event.absolute_url())
        self.assertEqual(dc_description.text, event.description)
        self.assertEqual(contributor.text, event.contributor)
        self.assertEqual(language.text, lang)
        self.assertEqual(rights.text, event.rights)
예제 #10
0
 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")
예제 #11
0
 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")
예제 #12
0
 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")
예제 #13
0
 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")