diff --git a/lib_group_section.py b/lib_group_section.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b668cf3e3f23597675db682072fbe08ce7074d0
--- /dev/null
+++ b/lib_group_section.py
@@ -0,0 +1,525 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2004-2008 Centro de Computacao Cientifica e Software Livre
+# Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+#
+# This file is part of participatorio/opendata
+#
+# participatorio/opendata is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+
+import MySQLdb
+import codecs
+import datetime
+
+#--------------------------------------------------------------------#
+# Definition of XML Levels initial space
+# These variables are meant to be used in front of every
+# string written on the xml file to make the correct indentation
+l1="\t"
+l2="\t\t"
+l3="\t\t\t"
+l4="\t\t\t\t"
+l5="\t\t\t\t\t"
+l6="\t\t\t\t\t\t"
+l7="\t\t\t\t\t\t\t"
+#--------------------------------------------------------------------#
+
+######################################################################
+# Query definitions:
+
+#--------------------------------------------------------------------#
+# Argument: None
+# Return: All group instances, and its info, from database.
+qry_groups_info = \
+("	SELECT g.guid, g.name, g.description, u.guid, u.name, e.time_created \
+	FROM elgg_entities e, elgg_groups_entity g, elgg_users_entity u\
+	WHERE e.guid = g.guid AND e.owner_guid = u.guid \
+    AND (e.access_id = 1 OR e.access_id = 2) \
+    ORDER BY e.time_created ASC; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Group_ID / InfoType_ID
+# Return: All InfoTypes' posts from this group.
+qry_group_posts = \
+("	SELECT o.guid, o.title, o.description, u.guid, u.name, e.time_created\
+	FROM elgg_entities e, elgg_objects_entity o, elgg_users_entity u\
+	WHERE e.guid = o.guid AND e.owner_guid = u.guid\
+    AND (e.access_id = 1 OR e.access_id = 2) \
+    AND e.container_guid = %s AND e.subtype = %s \
+    ORDER BY e.time_created ASC; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Group_ID
+# Return: Flag containing the access control to become a group member
+qry_group_access_permission = \
+("  SELECT CASE WHEN s.string = '2' THEN 'public' ELSE 'private' END \
+    FROM elgg_metadata d, elgg_metastrings s \
+    WHERE d.value_id = s.id \
+    AND d.entity_guid = %s AND d.name_id = %s; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Group_ID / InfoType_ID
+# Return: Yes or No, depending on the permission given by the owner.
+qry_post_content_permission = \
+("  SELECT CASE WHEN s.string = 'yes' THEN 'Sim' ELSE 'Nao' END \
+    FROM elgg_metadata d, elgg_metastrings s \
+    WHERE d.value_id = s.id \
+    AND d.entity_guid = %s AND d.name_id = %s;")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Post_ID
+# Return: All comments, and its info, made on the post.
+qry_post_comments = \
+("	SELECT u.guid, u.name, m.string, a.time_created \
+	FROM elgg_annotations a, elgg_metastrings m, elgg_users_entity u \
+	WHERE a.value_id = m.id AND a.owner_guid = u.guid \
+    AND (a.access_id = 1 OR a.access_id = 2) \
+    AND a.entity_guid = %s \
+    ORDER BY a.time_created ASC; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Group_ID
+# Return: All members' name from this group.
+qry_group_members = \
+("  SELECT u.guid, u.name \
+    FROM elgg_users_entity u, elgg_entity_relationships r \
+    WHERE u.guid = r.guid_one \
+    AND r.relationship = 'member' AND r.guid_two = %s; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Post_ID / InfoType_ID
+# Return: Essential information about the group or post, such as
+#   blog's excerpts and bookmark's link
+qry_post_content = \
+("  SELECT s.string\
+    FROM elgg_metadata d, elgg_metastrings s \
+    WHERE d.value_id = s.id \
+    AND d.entity_guid = %s AND d.name_id = %s; ")
+#--------------------------------------------------------------------#
+    
+######################################################################
+
+######################################################################
+# Support functions:
+
+#--------------------------------------------------------------------#
+def cdata(string):
+    cdata_string="<![CDATA["+string+"]]>"
+    return cdata_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def uidstr(guid):
+    uid_string=" uid="+"\'"+str(guid)+"\'"
+    return uid_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def cidstr(guid):
+    uid_string=" cid="+"\'"+str(guid)+"\'"
+    return uid_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def permstr(perm):
+    perm_string=" habilitado="+"\'"+str(perm)+"\'"
+    return perm_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def qtystr(quantity):
+    qty_string=" quantidade="+"\'"+str(quantity)+"\'"
+    return qty_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def datestr(time):
+    if time != '':
+        date=str(datetime.datetime.fromtimestamp(int(time)))
+    else:
+        date=''
+    return date
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def post_content(db, post_guid, content_typeid):
+    content = db.cursor()
+    content.execute(qry_post_content, (post_guid, content_typeid,))
+    if content.rowcount == 1:
+        post_content = content.fetchone()[0]
+    else:
+        post_content=''
+        print "ERRO! Nenhum ou Mais do que um resultado para a query"
+    content.close()
+    
+    return post_content
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def postcontent_permission (db, group_guid, content_id):
+        
+    perm = db.cursor()
+    perm.execute(qry_post_content_permission, (group_guid, content_id,))
+
+    if perm.rowcount == 1:
+       permission=perm.fetchone()[0]
+    else:
+        permission=''
+        print "ERRO! Nenhum ou Mais do que um resultado para a query"
+    
+    perm.close()
+    
+    return permission        
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def groupaccess_permission (db, group_guid):
+        
+    access = db.cursor()
+    
+    # 55 = select * from elgg_metastrings where string = 'membership';
+    access.execute(qry_group_access_permission, (group_guid, 55,))
+
+    if access.rowcount == 1:
+       access_control=access.fetchone()[0]
+    else:
+        access_control=''
+        print "ERRO! Nenhum ou Mais do que um resultado para a query"
+    
+    access.close()
+    
+    return access_control        
+#--------------------------------------------------------------------#
+
+######################################################################
+
+######################################################################
+# Functions that write on XML file
+
+#--------------------------------------------------------------------#
+def write_comments (db, xml, post_guid):
+    post_comments = db.cursor()
+    post_comments.execute(qry_post_comments, (post_guid,))
+            
+    xml.write(l4+"<comentarios>\n")
+    for (user_id, user_name, string, time) in post_comments:
+        
+        xml.write(l5+"<comentario>\n")
+        xml.write(l6+"<usuario"+uidstr(user_id)+">"+user_name+"</usuario>\n")
+        xml.write(l6+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l6+"<mensagem>"+cdata(string)+"</mensagem>\n")
+        xml.write(l5+"</comentario>\n")
+        
+    xml.write(l4+"</comentarios>\n")
+    
+    post_comments.close()
+#--------------------------------------------------------------------#
+
+#-------------------------------------------------------------------#
+def write_groupmembers_subsection (db, xml, group_guid):
+    group_members = db.cursor()
+    group_members.execute(qry_group_members, (group_guid,))
+    
+    xml.write(l2+"<quantidade_membros>"+str(group_members.rowcount)+\
+                                        "</quantidade_membros>\n")
+                    
+    xml.write(l2+"<membros>\n")
+    for (user_id, user_name) in group_members:
+        xml.write(l3+"<usuario"+uidstr(user_id)+">"+user_name+"</usuario>\n")
+    xml.write(l2+"</membros>\n")
+    
+    group_members.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groupfiles_subsection (db, xml, group_guid):
+    group_files = db.cursor()
+    
+    # 1 = select * from elgg_entity_subtypes where subtype='file';
+    group_files.execute(qry_group_posts, (group_guid, 1,))
+    
+    # 50 = select * from elgg_metastrings where string='file_enable';
+    perm=postcontent_permission(db, group_guid, 50)
+    
+    xml.write(l2+"<arquivos"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_files:
+        
+        link_prefix="http://participatorio.juventude.gov.br/file/download/"
+        file_link=str(link_prefix)+str(post_guid)
+        
+        xml.write(l3+"<arquivo>\n")
+
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+file_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+                    
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</arquivo>\n")
+        
+    xml.write(l2+"</arquivos>\n")
+    
+    group_files.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groupforumtopics_subsection (db, xml, group_guid):
+    group_forumtopics = db.cursor()
+    
+    # 7 = select * from elgg_entity_subtypes where subtype='groupforumtopic';
+    group_forumtopics.execute(qry_group_posts, (group_guid, 7,))
+    
+    # 52 = select * from elgg_metastrings where string='forum_enable';
+    perm=postcontent_permission(db, group_guid, 52)
+    
+    xml.write(l2+"<debates"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_forumtopics:
+            
+        xml.write(l3+"<debate>\n")
+
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<texto>"+cdata(post_desc)+"</texto>\n")
+            
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</debate>\n")
+        
+    xml.write(l2+"</debates>\n")
+    
+    group_forumtopics.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groupbookmarks_subsection (db, xml, group_guid):
+    group_bookmarks = db.cursor()
+    
+    # 13 = select * from elgg_entity_subtypes where subtype='bookmarks';
+    group_bookmarks.execute(qry_group_posts, (group_guid, 13,))
+    
+    # 49 = select * from elgg_metastrings where string='bookmarks_enable';
+    perm=postcontent_permission(db, group_guid, 49)
+    
+    xml.write(l2+"<favoritos"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_bookmarks:
+            
+        # 90 = select * from elgg_metastrings where string='address';
+        bookmark_link=post_content(db,post_guid,90)
+        
+        xml.write(l3+"<favorito>\n")
+
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+bookmark_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+                            
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</favorito>\n")
+    
+    xml.write(l2+"</favoritos>\n")
+    
+    group_bookmarks.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_grouppages_subsection (db, xml, group_guid):
+    group_pages = db.cursor()
+    
+    # 14 = select * from elgg_entity_subtypes where subtype='page_top';
+    group_pages.execute(qry_group_posts, (group_guid, 14,))
+    
+    # 53 = select * from elgg_metastrings where string='pages_enable';
+    perm=postcontent_permission(db, group_guid, 53)
+    
+    xml.write(l2+"<paginas"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_pages:
+            
+        xml.write(l3+"<pagina>\n")
+
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<texto>"+cdata(post_desc)+"</texto>\n")
+                    
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</pagina>\n")
+        
+    xml.write(l2+"</paginas>\n")
+    
+    group_pages.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groupvideos_subsection (db, xml, group_guid):
+    group_videos = db.cursor()
+    
+    # 12 = select * from elgg_entity_subtypes where subtype='videos';
+    group_videos.execute(qry_group_posts, (group_guid, 12,))
+    
+    # 399 = select * from elgg_metastrings where string='videos_enable';
+    perm=postcontent_permission(db, group_guid, 399)
+    
+    xml.write(l2+"<videos"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_videos:
+            
+        # 477 = select * from elgg_metastrings where string='video_url';
+        video_link=post_content(db,post_guid, 477)
+            
+        xml.write(l3+"<video>\n")
+
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+video_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+            
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</video>\n")
+        
+    xml.write(l2+"</videos>\n")
+    
+    group_videos.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groupevents_subsection (db, xml, group_guid):
+    group_events = db.cursor()
+    
+    # 6 = select * from elgg_entity_subtypes where subtype='calendar_event';
+    group_events.execute(qry_group_posts, (group_guid, 6,))
+    
+    # 54 = select * from elgg_metastrings where string='event_calendar_enable';
+    perm=postcontent_permission(db, group_guid, 54)
+    
+    xml.write(l2+"<eventos"+permstr(perm)+">\n")
+    
+    for (post_guid, post_title, post_desc, owner_id, owner_name, time)\
+        in group_events:
+            
+        # 18 = select * from elgg_metastrings where string='venue';
+        venue=post_content(db, post_guid, 18)
+        
+        # 20 = select * from elgg_metastrings where string='start_date';
+        time_start=post_content(db, post_guid, 20)
+
+        # 22 = select * from elgg_metastrings where string='end_date';
+        time_end=post_content(db, post_guid, 22)
+        
+        # 26 = select * from elgg_metastrings where string='fees';
+        fees=post_content(db, post_guid, 26)
+        
+        # 28 = select * from elgg_metastrings where string='contact';
+        contact=post_content(db, post_guid, 28)
+        
+        # 30 = select * from elgg_metastrings where string='organizer';
+        organizer=post_content(db, post_guid, 30)
+
+        xml.write(l3+"<evento>\n")
+        xml.write(l4+"<autor"+uidstr(owner_id)+">"+owner_name+"</autor>\n")
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<organizador>"+organizer+"</organizador>\n")
+        xml.write(l4+"<contato>"+contact+"</contato>\n")
+        xml.write(l4+"<endereco>"+venue+"</endereco>\n")
+        xml.write(l4+"<data_inicio>"+datestr(time_start)+"</data_inicio>\n")
+        xml.write(l4+"<data_fim>"+datestr(time_end)+"</data_fim>\n")
+        xml.write(l4+"<taxa_participacao>"+fees+"</taxa_participacao>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+        
+        xml.write(l3+"</evento>\n")
+        
+        write_comments(db,xml,post_guid)
+    
+    xml.write(l2+"</eventos>\n")
+    
+    group_events.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_groups_section(db, xml_file):
+
+    xml = codecs.open(xml_file,'w',encoding='utf-8')
+    
+    xml.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+
+    xml.write("<comunidades>\n")
+    
+    groups_info = db.cursor()
+    groups_info.execute(qry_groups_info)
+    
+    for (guid, title, desc, owner_id, owner_name, time) in groups_info:
+        
+        # 45 = select * from elgg_metastrings where string='briefdescription';
+        brief_desc=post_content(db,guid, 45)
+        
+        xml.write(l1+"<comunidade"+cidstr(guid)+">\n")
+
+        # Write all group's information
+        xml.write(l2+"<proprietario"+uidstr(owner_id)+">"+\
+                                    owner_name+"</proprietario>\n")
+        xml.write(l2+"<titulo>"+title+"</titulo>\n")
+        xml.write(l2+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l2+"<descricao>"+cdata(desc)+"</descricao>\n")
+        xml.write(l2+"<breve_descricao>"+cdata(brief_desc)+\
+                                    "</breve_descricao>\n")
+                                    
+        if groupaccess_permission(db, guid) == 'public':
+            
+            # Write a list of group member's name
+            write_groupmembers_subsection(db, xml, guid)
+        
+            # Write a list, and all the info, of all posts made on the group.
+            write_groupfiles_subsection(db, xml, guid)
+            write_groupforumtopics_subsection(db, xml, guid)
+            write_groupbookmarks_subsection(db, xml, guid)
+            write_grouppages_subsection(db, xml, guid)
+            write_groupvideos_subsection(db, xml, guid)
+            write_groupevents_subsection(db, xml, guid)
+        
+        xml.write(l1+"</comunidade>\n")
+        
+    xml.write("</comunidades>\n")
+    
+    groups_info.close()
+    
+    xml.close()
+#--------------------------------------------------------------------#
+
+######################################################################
diff --git a/lib_user_section.py b/lib_user_section.py
new file mode 100644
index 0000000000000000000000000000000000000000..dc05d9cc84349bb3755373a6b33df68d5cef85de
--- /dev/null
+++ b/lib_user_section.py
@@ -0,0 +1,494 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2004-2008 Centro de Computacao Cientifica e Software Livre
+# Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+#
+# This file is part of participatorio/opendata
+#
+# participatorio/opendata is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+
+import MySQLdb
+import codecs
+import datetime
+
+#--------------------------------------------------------------------#
+# Definition of XML Levels initial space
+# These variables are meant to be used in front of every
+# string written on the xml file to make the correct indentation
+l1="\t"
+l2="\t\t"
+l3="\t\t\t"
+l4="\t\t\t\t"
+l5="\t\t\t\t\t"
+l6="\t\t\t\t\t\t"
+l7="\t\t\t\t\t\t\t"
+#--------------------------------------------------------------------#
+
+######################################################################
+# Query definitions:
+
+#--------------------------------------------------------------------#
+# Argument: None
+# Return: All member instances, and its info, from database.
+qry_users_info = \
+("	SELECT u.guid, u.name \
+	FROM elgg_entities e, elgg_users_entity u \
+	WHERE e.guid = u.guid \
+    AND (e.access_id = 1 OR e.access_id = 2); ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Group_ID / InfoType_ID
+# Return: All InfoTypes' posts made by this group.
+qry_user_posts = \
+("	SELECT o.guid, o.title, o.description, e.time_created \
+	FROM elgg_entities e, elgg_objects_entity o \
+	WHERE e.guid = o.guid \
+    AND (e.access_id = 1 OR e.access_id = 2) \
+    AND e.owner_guid = %s AND e.container_guid = %s AND e.subtype = %s \
+    ORDER BY e.time_created ASC; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Post_ID
+# Return: All comments, and its info, made on the post.
+qry_post_comments = \
+("	SELECT u.guid, u.name, m.string, a.time_created \
+	FROM elgg_annotations a, elgg_metastrings m, elgg_users_entity u \
+	WHERE a.value_id = m.id AND a.owner_guid = u.guid \
+    AND (a.access_id = 1 OR a.access_id = 2) \
+    AND a.entity_guid = %s \
+    ORDER BY a.time_created ASC; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: User_ID
+# Return: All user friends' name
+qry_user_friends = \
+("	SELECT u.guid, u.name \
+	FROM elgg_users_entity u, elgg_entity_relationships r \
+	WHERE u.guid = r.guid_two \
+	AND r.guid_one = %s AND r.relationship = 'friend'; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: User_ID
+# Return: Name of all the groups owned/created by the user.
+qry_user_owngroups = \
+("	SELECT g.guid, g.name \
+	FROM elgg_entities e, elgg_groups_entity g \
+	WHERE e.guid = g.guid \
+	AND e.owner_guid = %s AND e.container_guid = %s; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: User_ID
+# Return: Name of all the groups that the user is a member.
+qry_user_membergroups = \
+("	SELECT g.guid, g.name \
+	FROM elgg_entity_relationships r, elgg_groups_entity g \
+	WHERE r.guid_two = g.guid \
+	AND r.relationship = 'member' AND r.guid_one = %s; ")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+# Argument: Post_ID / InfoType_ID
+# Return: Essential information about the group or post, such as
+#   blog's excerpts and bookmark's link
+qry_post_content = \
+("  SELECT s.string\
+    FROM elgg_metadata d, elgg_metastrings s \
+    WHERE d.value_id = s.id \
+    AND d.entity_guid = %s AND d.name_id = %s; ")
+#--------------------------------------------------------------------#
+
+######################################################################
+
+######################################################################
+# Support functions:
+
+#--------------------------------------------------------------------#
+def cdata(string):
+    cdata_string="<![CDATA["+string+"]]>"
+    return cdata_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def uidstr(guid):
+    uid_string=" uid="+"\'"+str(guid)+"\'"
+    return uid_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def cidstr(guid):
+    uid_string=" cid="+"\'"+str(guid)+"\'"
+    return uid_string
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def datestr(time):
+    if time != '':
+        date=str(datetime.datetime.fromtimestamp(int(time)))
+    else:
+        date=''
+    return date
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def post_content(db, post_guid, content_typeid):
+    content = db.cursor()
+    content.execute(qry_post_content, (post_guid, content_typeid,))
+    if content.rowcount == 1:
+        post_content = content.fetchone()[0]
+    else:
+        post_content=''
+        print "ERRO! Nenhum ou Mais do que um resultado para a query"
+        
+    content.close()
+    
+    return post_content
+#--------------------------------------------------------------------#
+
+######################################################################
+
+######################################################################
+# Functions that write on XML file
+
+#--------------------------------------------------------------------#
+def write_tag (xml, level, tag_name, info_str, attr_str):
+    tag_begin=("<"+tag_name+attr_str+">")
+    tag_end=("</"+tag_name+">")
+    xml.write(level+tag_begin+info_str+tag_end+"\n")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_comments (db, xml, post_guid):
+    post_comments = db.cursor()
+    post_comments.execute(qry_post_comments, (post_guid,))
+    
+    xml.write(l4+"<comentarios>\n")
+    for (user_id, user_name, string, time) in post_comments:
+        
+        xml.write(l5+"<comentario>\n")
+        xml.write(l6+"<usuario"+uidstr(user_id)+">"+\
+            user_name+"</usuario>\n")
+        xml.write(l6+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l6+"<mensagem>"+cdata(string)+"</mensagem>\n")
+        xml.write(l5+"</comentario>\n")
+        
+    xml.write(l4+"</comentarios>\n")
+    
+    post_comments.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userfriends_subsection (db, xml, user_guid):
+    friends_info = db.cursor()
+    friends_info.execute(qry_user_friends, (user_guid))
+    
+    xml.write(l2+"<amigos>\n")
+    for (friend_id, friend_name) in friends_info:
+        xml.write(l3+"<usuario"+uidstr(friend_id)+">"+\
+            friend_name+"</usuario>\n")
+    
+    xml.write(l2+"</amigos>\n")
+        
+    friends_info.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userowngroup_subsection (db, xml, user_guid):        
+    user_owngroups = db.cursor()
+    user_owngroups.execute(qry_user_owngroups, (user_guid, user_guid, ))
+        
+    xml.write(l3+"<dono>\n")
+    for (group_id, group_title) in user_owngroups:
+        xml.write(l4+"<comunidade"+cidstr(group_id)+">"+\
+            group_title+"</comunidade>\n")
+    xml.write(l3+"</dono>\n")
+        
+    user_owngroups.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_usermembergroup_subsection (db, xml, user_guid):
+    user_membergroups = db.cursor()
+    user_membergroups.execute(qry_user_membergroups, (user_guid, ))
+        
+    xml.write(l3+"<membro>\n")
+    for (group_id, group_title) in user_membergroups:
+        xml.write(l4+"<comunidade"+cidstr(group_id)+">"+\
+            group_title+"</comunidade>\n")
+    xml.write(l3+"</membro>\n")
+        
+    user_membergroups.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_usergroups_subsection (db, xml, user_guid):
+    xml.write(l2+"<comunidades>\n")
+    write_userowngroup_subsection(db, xml, user_guid)
+    write_usermembergroup_subsection(db, xml, user_guid)
+    xml.write(l2+"</comunidades>\n")
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userfiles_subsection (db, xml, user_guid):
+    user_files = db.cursor()
+    
+    # 1 = select * from elgg_entity_subtypes where subtype='file';
+    user_files.execute(qry_user_posts, (user_guid, user_guid, 1,))
+    
+    xml.write(l2+"<arquivos>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_files:
+                    
+        link_prefix="http://participatorio.juventude.gov.br/file/download/"
+        file_link=str(link_prefix)+str(post_guid)
+        
+        xml.write(l3+"<arquivo>\n")
+        
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+file_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+            
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</arquivo>\n")
+    
+    xml.write(l2+"</arquivos>\n")
+    user_files.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userblogs_subsection (db, xml, user_guid):
+    user_blogs = db.cursor()
+    
+    # 4 = select * from elgg_entity_subtypes where subtype='blog';
+    user_blogs.execute(qry_user_posts, (user_guid, user_guid, 4,))
+    
+    xml.write(l2+"<blogs>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_blogs:
+                    
+        post_excerpt = db.cursor()
+        
+        # 64 = select * from elgg_metastrings where string='excerpt';
+        post_excerpt=post_content(db,post_guid,64)
+            
+        xml.write(l3+"<blog>\n")
+
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<resumo>"+cdata(post_excerpt)+"</resumo>\n")
+        xml.write(l4+"<texto>"+cdata(post_desc)+"</texto>\n")
+                    
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</blog>\n")
+            
+    xml.write(l2+"</blogs>\n")
+    
+    user_blogs.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userbookmarks_subsection (db, xml, user_guid):
+    user_bookmarks = db.cursor()
+    
+    # 13 = select * from elgg_entity_subtypes where subtype='bookmarks';
+    user_bookmarks.execute(qry_user_posts, (user_guid, user_guid, 13,))
+    
+    xml.write(l2+"<favoritos>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_bookmarks:
+                    
+        # 90 = select * from elgg_metastrings where string='address';
+        bookmark_link=post_content(db,post_guid,90)
+  
+        xml.write(l3+"<favorito>\n")
+
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+bookmark_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+                    
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</favorito>\n")
+                
+    xml.write(l2+"</favoritos>\n")
+    
+    user_bookmarks.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#    
+def write_userpages_subsection (db, xml, user_guid):
+    user_pages = db.cursor()
+    
+    # 14 = select * from elgg_entity_subtypes where subtype='page_top';
+    user_pages.execute(qry_user_posts, (user_guid, user_guid, 14,))
+    
+    xml.write(l2+"<paginas>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_pages:
+                        
+        xml.write(l3+"<pagina>\n")
+
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<texto>"+cdata(post_desc)+"</texto>\n")
+                    
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</pagina>\n")
+        
+    xml.write(l2+"</paginas>\n")
+    
+    user_pages.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_uservideos_subsection (db, xml, user_guid):
+    user_videos = db.cursor()
+    
+    # 12 = select * from elgg_entity_subtypes where subtype='videos';
+    user_videos.execute(qry_user_posts, (user_guid, user_guid, 12,))
+    
+    xml.write(l2+"<videos>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_videos:
+                    
+        # 477 = select * from elgg_metastrings where string='video_url';
+        video_link=post_content(db, post_guid, 477)
+             
+        xml.write(l3+"<video>\n")
+        
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<link>"+video_link+"</link>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+        
+        write_comments(db,xml,post_guid)
+        
+        xml.write(l3+"</video>\n")
+        
+    xml.write(l2+"</videos>\n")
+    
+    user_videos.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#
+def write_userevents_subsection (db, xml, user_guid):
+    user_events = db.cursor()
+    
+    # 6 = select * from elgg_entity_subtypes where subtype='calendar_event';
+    user_events.execute(qry_user_posts, (user_guid, user_guid, 6,))
+    
+    xml.write(l2+"<eventos>\n")
+    
+    for (post_guid, post_title, post_desc, time)\
+        in user_events:
+            
+        # 18 = select * from elgg_metastrings where string='venue';
+        venue=post_content(db, post_guid, 18)
+        
+        # 20 = select * from elgg_metastrings where string='start_date';
+        time_start=post_content(db, post_guid, 20)
+
+        # 22 = select * from elgg_metastrings where string='end_date';
+        time_end=post_content(db, post_guid, 22)
+        
+        # 26 = select * from elgg_metastrings where string='fees';
+        fees=post_content(db, post_guid, 26)
+        
+        # 28 = select * from elgg_metastrings where string='contact';
+        contact=post_content(db, post_guid, 28)
+        
+        # 30 = select * from elgg_metastrings where string='organizer';
+        organizer=post_content(db, post_guid, 30)
+        
+        xml.write(l3+"<evento>\n")
+        
+        xml.write(l4+"<titulo>"+post_title+"</titulo>\n")
+        xml.write(l4+"<data>"+datestr(time)+"</data>\n")
+        xml.write(l4+"<organizador>"+organizer+"</organizador>\n")
+        xml.write(l4+"<contato>"+contact+"</contato>\n")
+        xml.write(l4+"<endereco>"+venue+"</endereco>\n")
+        xml.write(l4+"<data_inicio>"+datestr(time_start)+"</data_inicio>\n")
+        xml.write(l4+"<data_fim>"+datestr(time_end)+"</data_fim>\n")
+        xml.write(l4+"<taxa_participacao>"+fees+"</taxa_participacao>\n")
+        xml.write(l4+"<descricao>"+cdata(post_desc)+"</descricao>\n")
+        
+        xml.write(l3+"</evento>\n")
+        
+        write_comments(db,xml,post_guid)
+    
+    xml.write(l2+"</eventos>\n")
+    
+    user_events.close()
+#--------------------------------------------------------------------#
+
+#--------------------------------------------------------------------#    
+def write_users_section (db, xml_file):
+    
+    xml = codecs.open(xml_file,'w',encoding='utf-8')
+    
+    xml.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
+
+    xml.write("<usuarios>\n")
+    
+    users_info = db.cursor()
+    users_info.execute(qry_users_info)
+    
+    for (guid, name) in users_info:
+        
+        xml.write(l1+"<usuario"+uidstr(guid)+">\n")
+        
+        # Write all user's information
+        xml.write(l2+"<nome>"+name+"</nome>\n")
+            
+        # Write a list of user friend's names
+        write_userfriends_subsection(db, xml, guid)
+        
+        # Write a list of all groups that the user owns or belongs
+        write_usergroups_subsection(db, xml, guid)
+        
+        # Write a list, and all the info, of all posts made by the user
+        write_userfiles_subsection(db, xml, guid)
+        write_userblogs_subsection(db, xml, guid)
+        write_userbookmarks_subsection(db, xml, guid)
+        write_userpages_subsection(db, xml, guid)
+        write_uservideos_subsection(db, xml, guid)
+        write_userevents_subsection(db, xml, guid)
+        
+        xml.write(l1+"</usuario>\n")
+    
+    xml.write("</usuarios>\n")
+    
+    users_info.close()
+    
+    xml.close()
+#--------------------------------------------------------------------#
+
+######################################################################
diff --git a/participatorio_opendata.py b/participatorio_opendata.py
new file mode 100644
index 0000000000000000000000000000000000000000..8522320c1249839f756fcfd4df56aab9d519a3e7
--- /dev/null
+++ b/participatorio_opendata.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright (C) 2004-2008 Centro de Computacao Cientifica e Software Livre
+# Departamento de Informatica - Universidade Federal do Parana - C3SL/UFPR
+#
+# This file is part of participatorio/opendata
+#
+# participatorio/opendata is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+
+import MySQLdb
+
+from users_section_lib import write_users_section 
+from groups_section_lib import write_groups_section 
+
+def main():
+    
+    db = MySQLdb.connect(host='localhost', \
+                        user='opendata', \
+                        passwd='123mudar', \
+                        db='elgg', \
+                        charset='utf8')
+    
+    write_users_section(db,'secao_users.xml')
+    write_groups_section(db,'secao_groups.xml')
+    
+    db.close()   
+    
+    return 0
+
+if __name__ == '__main__':
+    main()
+