From d604347d9f8f65a04ff99e7da754f1849426c58c Mon Sep 17 00:00:00 2001
From: Bruno Nocera Zanette <brunonzanette@gmail.com>
Date: Mon, 16 Sep 2013 16:12:03 -0300
Subject: [PATCH] Add Function to open file

Added a function to open file.
This change is meant for the case of having to write multiple files.
For example, one file for each user, or group.

Signed-off-by: Bruno Nocera Zanette <brunonzanette@gmail.com>
---
 lib/json/group_section.py           | 272 ++++++++++++++--------------
 lib/json/user_section.py            | 237 ++++++++++++------------
 lib/json/write_support_functions.py |   6 +
 lib/xml/group_section.py            |  11 +-
 lib/xml/user_section.py             |  11 +-
 lib/xml/write_support_functions.py  |   7 +
 6 files changed, 276 insertions(+), 268 deletions(-)

diff --git a/lib/json/group_section.py b/lib/json/group_section.py
index 65225c0..214d813 100644
--- a/lib/json/group_section.py
+++ b/lib/json/group_section.py
@@ -22,24 +22,22 @@
 # USA.
 
 import MySQLdb
-import codecs
-import datetime
 
 import queries_definition as qry
 import write_support_functions as wrt
 
 ######################################################################
-# Functions that write on XML file
+# Functions that write on JSON file
 
 #-------------------------------------------------------------------#
-def write_groupmembers_subsection (db, xml, group_guid):
+def write_groupmembers_subsection (db, json, group_guid):
     group_members = db.cursor()
     group_members.execute(qry.qry_group_members, (group_guid,))
     
     qty=str(group_members.rowcount)
-    wrt.write_tag(xml,2,"quantidadeMembros",qty,",")
+    wrt.write_tag(json,2,"quantidadeMembros",qty,",")
                 
-    wrt.write_open_tag(xml,2,"membros","[")
+    wrt.write_open_tag(json,2,"membros","[")
     
     row=0
     for (user_id, user_name, user_username)\
@@ -47,25 +45,25 @@ def write_groupmembers_subsection (db, xml, group_guid):
             
         row=row+1
             
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         prefix='profile/'
         user_attr=wrt.urlparticipa(prefix,user_username)
         
-        wrt.write_open_tag(xml,4,"usuario","{")
-        wrt.write_tag(xml,5,"uid",user_attr,",")
-        wrt.write_tag(xml,5,"nome",user_name,"")
-        wrt.write_close_tag(xml,4,"}",False)
+        wrt.write_open_tag(json,4,"usuario","{")
+        wrt.write_tag(json,5,"uid",user_attr,",")
+        wrt.write_tag(json,5,"nome",user_name,"")
+        wrt.write_close_tag(json,4,"}",False)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_members.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_members.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_members.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groupfiles_subsection (db, xml, group_guid):
+def write_groupfiles_subsection (db, json, group_guid):
     group_files = db.cursor()
     
     # 1 = select * from elgg_entity_subtypes where subtype='file';
@@ -74,8 +72,8 @@ def write_groupfiles_subsection (db, xml, group_guid):
     # 50 = select * from elgg_metastrings where string='file_enable';
     perm=wrt.postcontent_permission(db, group_guid, 50)
     
-    wrt.write_tag(xml,2,"arquivosHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"arquivos","[")
+    wrt.write_tag(json,2,"arquivosHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"arquivos","[")
     
     row=0
     for (post_guid, post_title, post_desc, \
@@ -84,39 +82,39 @@ def write_groupfiles_subsection (db, xml, group_guid):
             
         row=row+1
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         prefix='file/download/'
         file_link=wrt.urlparticipa(prefix,str(post_guid))
         
         prefix='file/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
 
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",file_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",file_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
                     
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_files.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_files.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_files.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groupforumtopics_subsection (db, xml, group_guid):
+def write_groupforumtopics_subsection (db, json, group_guid):
     group_forumtopics = db.cursor()
     
     # 7 = select * from elgg_entity_subtypes where subtype='groupforumtopic';
@@ -125,8 +123,8 @@ def write_groupforumtopics_subsection (db, xml, group_guid):
     # 52 = select * from elgg_metastrings where string='forum_enable';
     perm=wrt.postcontent_permission(db, group_guid, 52)
     
-    wrt.write_tag(xml,2,"debatesHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"debates","[")
+    wrt.write_tag(json,2,"debatesHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"debates","[")
     
     row=0
     for (post_guid, post_title, post_desc, \
@@ -135,35 +133,35 @@ def write_groupforumtopics_subsection (db, xml, group_guid):
             
         row=row+1
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         prefix='discussion/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
 
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"texto",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"texto",post_desc,",")
             
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_forumtopics.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_forumtopics.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_forumtopics.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groupbookmarks_subsection (db, xml, group_guid):
+def write_groupbookmarks_subsection (db, json, group_guid):
     group_bookmarks = db.cursor()
     
     # 13 = select * from elgg_entity_subtypes where subtype='bookmarks';
@@ -172,8 +170,8 @@ def write_groupbookmarks_subsection (db, xml, group_guid):
     # 49 = select * from elgg_metastrings where string='bookmarks_enable';
     perm=wrt.postcontent_permission(db, group_guid, 49)
     
-    wrt.write_tag(xml,2,"favoritosHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"favoritos","[")
+    wrt.write_tag(json,2,"favoritosHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"favoritos","[")
     
     row=0
     for (post_guid, post_title, post_desc, \
@@ -182,39 +180,39 @@ def write_groupbookmarks_subsection (db, xml, group_guid):
             
         row=row+1
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         # 90 = select * from elgg_metastrings where string='address';
         bookmark_link=wrt.post_content(db,post_guid,90)
         
         prefix='bookmarks/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
 
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",bookmark_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",bookmark_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
                             
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_bookmarks.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_bookmarks.rowcount))
     
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_bookmarks.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_grouppages_subsection (db, xml, group_guid):
+def write_grouppages_subsection (db, json, group_guid):
     group_pages = db.cursor()
     
     # 14 = select * from elgg_entity_subtypes where subtype='page_top';
@@ -223,8 +221,8 @@ def write_grouppages_subsection (db, xml, group_guid):
     # 53 = select * from elgg_metastrings where string='pages_enable';
     perm=wrt.postcontent_permission(db, group_guid, 53)
     
-    wrt.write_tag(xml,2,"paginasHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"paginas","[")
+    wrt.write_tag(json,2,"paginasHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"paginas","[")
     
     row=0
     for (post_guid, post_title, post_desc,
@@ -233,35 +231,35 @@ def write_grouppages_subsection (db, xml, group_guid):
             
         row=row+1
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         prefix='pages/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
 
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"texto",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"texto",post_desc,",")
                     
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_pages.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_pages.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_pages.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groupvideos_subsection (db, xml, group_guid):
+def write_groupvideos_subsection (db, json, group_guid):
     group_videos = db.cursor()
     
     # 12 = select * from elgg_entity_subtypes where subtype='videos';
@@ -270,8 +268,8 @@ def write_groupvideos_subsection (db, xml, group_guid):
     # 399 = select * from elgg_metastrings where string='videos_enable';
     perm=wrt.postcontent_permission(db, group_guid, 399)
     
-    wrt.write_tag(xml,2,"videosHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"videos","[")
+    wrt.write_tag(json,2,"videosHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"videos","[")
     
     row=0
     for (post_guid, post_title, post_desc, \
@@ -283,36 +281,36 @@ def write_groupvideos_subsection (db, xml, group_guid):
         # 477 = select * from elgg_metastrings where string='video_url';
         video_link=wrt.post_content(db,post_guid, 477)
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
             
         prefix='videos/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
         
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",video_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",video_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
             
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
 
-        wrt.write_close_tag(xml,3,"}",(row < group_videos.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_videos.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     group_videos.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groupevents_subsection (db, xml, group_guid):
+def write_groupevents_subsection (db, json, group_guid):
     group_events = db.cursor()
     
     # 6 = select * from elgg_entity_subtypes where subtype='calendar_event';
@@ -321,8 +319,8 @@ def write_groupevents_subsection (db, xml, group_guid):
     # 54 = select * from elgg_metastrings where string='event_calendar_enable';
     perm=wrt.postcontent_permission(db, group_guid, 54)
     
-    wrt.write_tag(xml,2,"eventosHabilitado",perm,",")
-    wrt.write_open_tag(xml,2,"eventos","[")
+    wrt.write_tag(json,2,"eventosHabilitado",perm,",")
+    wrt.write_open_tag(json,2,"eventos","[")
     
     row=0
     for (post_guid, post_title, post_desc, \
@@ -331,7 +329,7 @@ def write_groupevents_subsection (db, xml, group_guid):
             
         row=row+1
             
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
             
         # 18 = select * from elgg_metastrings where string='venue';
         venue=wrt.post_content(db, post_guid, 18)
@@ -353,42 +351,42 @@ def write_groupevents_subsection (db, xml, group_guid):
 
         prefix='event_calendar/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_tag(xml,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
                 
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,4,"autor","{")
-        wrt.write_tag(xml,5,"uid",owner_attr,",")
-        wrt.write_tag(xml,5,"nome",owner_name,"")
-        wrt.write_close_tag(xml,4,"}",True)
+        wrt.write_open_tag(json,4,"autor","{")
+        wrt.write_tag(json,5,"uid",owner_attr,",")
+        wrt.write_tag(json,5,"nome",owner_name,"")
+        wrt.write_close_tag(json,4,"}",True)
         
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"organizador",organizer,",")
-        wrt.write_tag(xml,4,"contato",contact,",")
-        wrt.write_tag(xml,4,"endereco",venue,",")
-        wrt.write_tag(xml,4,"dataInicio",wrt.datestr(time_start),",")
-        wrt.write_tag(xml,4,"dataFim",wrt.datestr(time_end),",")
-        wrt.write_tag(xml,4,"taxaParticipacao",fees,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"organizador",organizer,",")
+        wrt.write_tag(json,4,"contato",contact,",")
+        wrt.write_tag(json,4,"endereco",venue,",")
+        wrt.write_tag(json,4,"dataInicio",wrt.datestr(time_start),",")
+        wrt.write_tag(json,4,"dataFim",wrt.datestr(time_end),",")
+        wrt.write_tag(json,4,"taxaParticipacao",fees,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
         
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < group_events.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < group_events.rowcount))
     
-    wrt.write_close_tag(xml,2,"]",False)
+    wrt.write_close_tag(json,2,"]",False)
     
     group_events.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groups_section(db, xml_file):
+def write_groups_section (db, json_filename):
 
-    xml = codecs.open(xml_file,'w',encoding='utf-8')
+    json = wrt.open_json_file(json_filename)
     
-    wrt.write_open_tag(xml,0,"","{")
-    wrt.write_open_tag(xml,0,"comunidades","[")
+    wrt.write_open_tag(json,0,"","{")
+    wrt.write_open_tag(json,0,"comunidades","[")
     
     groups_info = db.cursor()
     groups_info.execute(qry.qry_groups_info)
@@ -402,53 +400,53 @@ def write_groups_section(db, xml_file):
         # 45 = select * from elgg_metastrings where string='briefdescription';
         brief_desc=wrt.post_content(db,guid, 45)
         
-        wrt.write_open_tag(xml,1,"","{")
+        wrt.write_open_tag(json,1,"","{")
         
         prefix='groups/profile/'
         group_attr=wrt.urlparticipa(prefix,str(guid))
-        wrt.write_tag(xml,4,"cid",group_attr,",")
+        wrt.write_tag(json,2,"cid",group_attr,",")
 
         # Write all group's information
         prefix='profile/'
         owner_attr=wrt.urlparticipa(prefix,owner_username)
         
-        wrt.write_open_tag(xml,2,"proprietario","{")
-        wrt.write_tag(xml,3,"uid",owner_attr,",")
-        wrt.write_tag(xml,3,"nome",owner_name,"")
-        wrt.write_close_tag(xml,2,"}",True)
+        wrt.write_open_tag(json,2,"proprietario","{")
+        wrt.write_tag(json,3,"uid",owner_attr,",")
+        wrt.write_tag(json,3,"nome",owner_name,"")
+        wrt.write_close_tag(json,2,"}",True)
                 
-        wrt.write_tag(xml,2,"titulo",title,",")
-        wrt.write_tag(xml,2,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,2,"descricao",desc,",")
+        wrt.write_tag(json,2,"titulo",title,",")
+        wrt.write_tag(json,2,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,2,"descricao",desc,",")
         
         if wrt.groupaccess_permission(db, guid) == 'public':
             comma=","
         else:
             comma=""
             
-        wrt.write_tag(xml,2,"breveDescricao",brief_desc,comma)
+        wrt.write_tag(json,2,"breveDescricao",brief_desc,comma)
                                             
         if wrt.groupaccess_permission(db, guid) == 'public':
             
             # Write a list of group member's name
-            write_groupmembers_subsection(db, xml, guid)
+            write_groupmembers_subsection(db, json, 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)
+            write_groupfiles_subsection(db, json, guid)
+            write_groupforumtopics_subsection(db, json, guid)
+            write_groupbookmarks_subsection(db, json, guid)
+            write_grouppages_subsection(db, json, guid)
+            write_groupvideos_subsection(db, json, guid)
+            write_groupevents_subsection(db, json, guid)
             
-        wrt.write_close_tag(xml,1,"}",(row < groups_info.rowcount))
+        wrt.write_close_tag(json,1,"}",(row < groups_info.rowcount))
         
-    wrt.write_close_tag(xml,0,"]",False)
-    wrt.write_close_tag(xml,0,"}",False)
+    wrt.write_close_tag(json,0,"]",False)
+    wrt.write_close_tag(json,0,"}",False)
     
     groups_info.close()
     
-    xml.close()
+    json.close()
 #--------------------------------------------------------------------#
 
 ######################################################################
diff --git a/lib/json/user_section.py b/lib/json/user_section.py
index 2597e28..7e0d22f 100644
--- a/lib/json/user_section.py
+++ b/lib/json/user_section.py
@@ -22,21 +22,22 @@
 # USA.
 
 import MySQLdb
-import codecs
-import datetime
 
 import queries_definition as qry
 import write_support_functions as wrt
 
 ######################################################################
-# Functions that write on XML file
+# Functions that write on JSON file
 
 #--------------------------------------------------------------------#
-def write_userfriends_subsection (db, xml, user_guid):
+def write_userfriends_subsection (db, json, user_guid):
     friends_info = db.cursor()
     friends_info.execute(qry.qry_user_friends, (user_guid))
     
-    wrt.write_open_tag(xml,2,"amigos","[")
+    qty=str(friends_info.rowcount)
+    wrt.write_tag(json,2,"quantidadeAmigos",qty,",")
+    
+    wrt.write_open_tag(json,2,"amigos","[")
     
     row=0
     for (friend_id, friend_name, friend_username)\
@@ -44,27 +45,27 @@ def write_userfriends_subsection (db, xml, user_guid):
         
         row=row+1
             
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
         prefix='profile/'
         friend_attr=wrt.urlparticipa(prefix,friend_username)
         
-        wrt.write_tag(xml,4,"uid",friend_attr,",")
-        wrt.write_tag(xml,4,"usuario",friend_name,"")
+        wrt.write_tag(json,4,"uid",friend_attr,",")
+        wrt.write_tag(json,4,"usuario",friend_name,"")
         
-        wrt.write_close_tag(xml,3,"}",(row < friends_info.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < friends_info.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
         
     friends_info.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_userowngroup_subsection (db, xml, user_guid):        
+def write_userowngroup_subsection (db, json, user_guid):        
     user_owngroups = db.cursor()
     user_owngroups.execute(qry.qry_user_owngroups, (user_guid, user_guid, ))
         
-    wrt.write_open_tag(xml,3,"dono","[")
+    wrt.write_open_tag(json,3,"dono","[")
     
     row=0
     for (group_id, group_title)\
@@ -72,27 +73,27 @@ def write_userowngroup_subsection (db, xml, user_guid):
             
         row=row+1
             
-        wrt.write_open_tag(xml,4,"","{")
+        wrt.write_open_tag(json,4,"","{")
         
         prefix='groups/profile/'
         group_attr=wrt.urlparticipa(prefix,str(group_id))
         
-        wrt.write_tag(xml,5,"cid",group_attr,",")
-        wrt.write_tag(xml,5,"titulo",group_title,"")
+        wrt.write_tag(json,5,"cid",group_attr,",")
+        wrt.write_tag(json,5,"titulo",group_title,"")
         
-        wrt.write_close_tag(xml,4,"}",(row < user_owngroups.rowcount))
+        wrt.write_close_tag(json,4,"}",(row < user_owngroups.rowcount))
         
-    wrt.write_close_tag(xml,3,"]",True)
+    wrt.write_close_tag(json,3,"]",True)
         
     user_owngroups.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_usermembergroup_subsection (db, xml, user_guid):
+def write_usermembergroup_subsection (db, json, user_guid):
     user_membergroups = db.cursor()
     user_membergroups.execute(qry.qry_user_membergroups, (user_guid, ))
         
-    wrt.write_open_tag(xml,3,"membro","[")
+    wrt.write_open_tag(json,3,"membro","[")
     
     row=0
     for (group_id, group_title)\
@@ -100,37 +101,37 @@ def write_usermembergroup_subsection (db, xml, user_guid):
             
         row=row+1
             
-        wrt.write_open_tag(xml,4,"","{")
+        wrt.write_open_tag(json,4,"","{")
         
         prefix='groups/profile/'
         group_attr=wrt.urlparticipa(prefix,str(group_id))
         
-        wrt.write_tag(xml,5,"cid",group_attr,",")
-        wrt.write_tag(xml,5,"titulo",group_title,"")
+        wrt.write_tag(json,5,"cid",group_attr,",")
+        wrt.write_tag(json,5,"titulo",group_title,"")
         
-        wrt.write_close_tag(xml,4,"}",(row < user_membergroups.rowcount))
+        wrt.write_close_tag(json,4,"}",(row < user_membergroups.rowcount))
         
-    wrt.write_close_tag(xml,3,"]",False)
+    wrt.write_close_tag(json,3,"]",False)
         
     user_membergroups.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_usergroups_subsection (db, xml, user_guid):
-    wrt.write_open_tag(xml,2,"comunidades","{")
-    write_userowngroup_subsection(db, xml, user_guid)
-    write_usermembergroup_subsection(db, xml, user_guid)
-    wrt.write_close_tag(xml,2,"}",True)
+def write_usergroups_subsection (db, json, user_guid):
+    wrt.write_open_tag(json,2,"comunidades","{")
+    write_userowngroup_subsection(db, json, user_guid)
+    write_usermembergroup_subsection(db, json, user_guid)
+    wrt.write_close_tag(json,2,"}",True)
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_userfiles_subsection (db, xml, user_guid):
+def write_userfiles_subsection (db, json, user_guid):
     user_files = db.cursor()
     
     # 1 = select * from elgg_entity_subtypes where subtype='file';
     user_files.execute(qry.qry_user_posts, (user_guid, user_guid, 1,))
     
-    wrt.write_open_tag(xml,2,"arquivos","[")
+    wrt.write_open_tag(json,2,"arquivos","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -144,31 +145,31 @@ def write_userfiles_subsection (db, xml, user_guid):
         prefix='file/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",file_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",file_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
             
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < user_files.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_files.rowcount))
     
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     user_files.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_userblogs_subsection (db, xml, user_guid):
+def write_userblogs_subsection (db, json, user_guid):
     user_blogs = db.cursor()
     
     # 4 = select * from elgg_entity_subtypes where subtype='blog';
     user_blogs.execute(qry.qry_user_posts, (user_guid, user_guid, 4,))
     
-    wrt.write_open_tag(xml,2,"blogs","[")
+    wrt.write_open_tag(json,2,"blogs","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -183,31 +184,31 @@ def write_userblogs_subsection (db, xml, user_guid):
             
         prefix='blog/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
 
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"resumo",post_excerpt,",")
-        wrt.write_tag(xml,4,"texto",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"resumo",post_excerpt,",")
+        wrt.write_tag(json,4,"texto",post_desc,",")
                     
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < user_blogs.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_blogs.rowcount))
             
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     user_blogs.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_userbookmarks_subsection (db, xml, user_guid):
+def write_userbookmarks_subsection (db, json, user_guid):
     user_bookmarks = db.cursor()
     
     # 13 = select * from elgg_entity_subtypes where subtype='bookmarks';
     user_bookmarks.execute(qry.qry_user_posts, (user_guid, user_guid, 13,))
     
-    wrt.write_open_tag(xml,2,"favoritos","[")
+    wrt.write_open_tag(json,2,"favoritos","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -220,31 +221,31 @@ def write_userbookmarks_subsection (db, xml, user_guid):
   
         prefix='bookmarks/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
     
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",bookmark_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",bookmark_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
                     
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < user_bookmarks.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_bookmarks.rowcount))
                 
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     user_bookmarks.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#    
-def write_userpages_subsection (db, xml, user_guid):
+def write_userpages_subsection (db, json, user_guid):
     user_pages = db.cursor()
     
     # 14 = select * from elgg_entity_subtypes where subtype='page_top';
     user_pages.execute(qry.qry_user_posts, (user_guid, user_guid, 14,))
     
-    wrt.write_open_tag(xml,2,"paginas","[")
+    wrt.write_open_tag(json,2,"paginas","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -255,30 +256,30 @@ def write_userpages_subsection (db, xml, user_guid):
         prefix='pages/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
 
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"texto",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"texto",post_desc,",")
                     
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < user_pages.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_pages.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     user_pages.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_uservideos_subsection (db, xml, user_guid):
+def write_uservideos_subsection (db, json, user_guid):
     user_videos = db.cursor()
     
     # 12 = select * from elgg_entity_subtypes where subtype='videos';
     user_videos.execute(qry.qry_user_posts, (user_guid, user_guid, 12,))
     
-    wrt.write_open_tag(xml,2,"videos","[")
+    wrt.write_open_tag(json,2,"videos","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -292,32 +293,32 @@ def write_uservideos_subsection (db, xml, user_guid):
         prefix='videos/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"link",video_link,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"link",video_link,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
         
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
         
-        wrt.write_close_tag(xml,3,"}",(row < user_videos.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_videos.rowcount))
         
-    wrt.write_close_tag(xml,2,"]",True)
+    wrt.write_close_tag(json,2,"]",True)
     
     user_videos.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_userevents_subsection (db, xml, user_guid):
+def write_userevents_subsection (db, json, user_guid):
     user_events = db.cursor()
     
     # 6 = select * from elgg_entity_subtypes where subtype='calendar_event';
     user_events.execute(qry.qry_user_posts, (user_guid, user_guid, 6,))
     
     
-    wrt.write_open_tag(xml,2,"eventos","[")
+    wrt.write_open_tag(json,2,"eventos","[")
     
     row=0
     for (post_guid, post_title, post_desc, time)\
@@ -346,35 +347,35 @@ def write_userevents_subsection (db, xml, user_guid):
         prefix='event_calendar/view/'
         post_attr=wrt.urlparticipa(prefix,str(post_guid))
         
-        wrt.write_open_tag(xml,3,"","{")
+        wrt.write_open_tag(json,3,"","{")
         
-        wrt.write_tag(xml,4,"pid",post_attr,",")
-        wrt.write_tag(xml,4,"titulo",post_title,",")
-        wrt.write_tag(xml,4,"data",wrt.datestr(time),",")
-        wrt.write_tag(xml,4,"organizador",organizer,",")
-        wrt.write_tag(xml,4,"contato",contact,",")
-        wrt.write_tag(xml,4,"endereco",venue,",")
-        wrt.write_tag(xml,4,"dataInicio",time_start,",")
-        wrt.write_tag(xml,4,"dataFim",time_end,",")
-        wrt.write_tag(xml,4,"taxaParticipacao",fees,",")
-        wrt.write_tag(xml,4,"descricao",post_desc,",")
+        wrt.write_tag(json,4,"pid",post_attr,",")
+        wrt.write_tag(json,4,"titulo",post_title,",")
+        wrt.write_tag(json,4,"data",wrt.datestr(time),",")
+        wrt.write_tag(json,4,"organizador",organizer,",")
+        wrt.write_tag(json,4,"contato",contact,",")
+        wrt.write_tag(json,4,"endereco",venue,",")
+        wrt.write_tag(json,4,"dataInicio",time_start,",")
+        wrt.write_tag(json,4,"dataFim",time_end,",")
+        wrt.write_tag(json,4,"taxaParticipacao",fees,",")
+        wrt.write_tag(json,4,"descricao",post_desc,",")
         
-        wrt.write_comments(db,xml,post_guid)
+        wrt.write_comments(db,json,post_guid)
             
-        wrt.write_close_tag(xml,3,"}",(row < user_events.rowcount))
+        wrt.write_close_tag(json,3,"}",(row < user_events.rowcount))
     
-    wrt.write_close_tag(xml,2,"]",False)
+    wrt.write_close_tag(json,2,"]",False)
     
     user_events.close()
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#    
-def write_users_section (db, xml_file):
+def write_users_section (db, json_filename):
     
-    xml = codecs.open(xml_file,'w',encoding='utf-8')
+    json = wrt.open_json_file(json_filename)
     
-    wrt.write_open_tag(xml,0,"","{")
-    wrt.write_open_tag(xml,0,"usuarios","[")
+    wrt.write_open_tag(json,0,"","{")
+    wrt.write_open_tag(json,0,"usuarios","[")
     
     users_info = db.cursor()
     users_info.execute(qry.qry_users_info)
@@ -388,34 +389,34 @@ def write_users_section (db, xml_file):
         prefix='profile/'
         user_attr=wrt.urlparticipa(prefix,username)
         
-        wrt.write_open_tag(xml,1,"","{")
+        wrt.write_open_tag(json,1,"","{")
         
         # Write all user's information
-        wrt.write_tag(xml,2,"uid",user_attr,",")
-        wrt.write_tag(xml,2,"nome",name,",")
+        wrt.write_tag(json,2,"uid",user_attr,",")
+        wrt.write_tag(json,2,"nome",name,",")
             
         # Write a list of user friend's names
-        write_userfriends_subsection(db, xml, guid)
+        write_userfriends_subsection(db, json, guid)
         
         # Write a list of all groups that the user owns or belongs
-        write_usergroups_subsection(db, xml, guid)
+        write_usergroups_subsection(db, json, 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)
+        write_userfiles_subsection(db, json, guid)
+        write_userblogs_subsection(db, json, guid)
+        write_userbookmarks_subsection(db, json, guid)
+        write_userpages_subsection(db, json, guid)
+        write_uservideos_subsection(db, json, guid)
+        write_userevents_subsection(db, json, guid)
         
-        wrt.write_close_tag(xml,1,"}",(row < users_info.rowcount))
+        wrt.write_close_tag(json,1,"}",(row < users_info.rowcount))
     
-    wrt.write_close_tag(xml,0,"]",False)
-    wrt.write_close_tag(xml,0,"}",False)
+    wrt.write_close_tag(json,0,"]",False)
+    wrt.write_close_tag(json,0,"}",False)
     
     users_info.close()
     
-    xml.close()
+    json.close()
 #--------------------------------------------------------------------#
 
 ######################################################################
diff --git a/lib/json/write_support_functions.py b/lib/json/write_support_functions.py
index b6c0e4e..8af946e 100644
--- a/lib/json/write_support_functions.py
+++ b/lib/json/write_support_functions.py
@@ -31,6 +31,12 @@ import queries_definition as qry
 ######################################################################
 # Support functions:
 
+#--------------------------------------------------------------------#
+def open_json_file (json_filename):
+    json_file = codecs.open(json_filename,'w',encoding='utf-8')
+    return json_file
+#--------------------------------------------------------------------#
+
 #--------------------------------------------------------------------#
 def lvl (l):
     if l == 1:
diff --git a/lib/xml/group_section.py b/lib/xml/group_section.py
index f6f729e..bf6a4d1 100644
--- a/lib/xml/group_section.py
+++ b/lib/xml/group_section.py
@@ -22,8 +22,6 @@
 # USA.
 
 import MySQLdb
-import codecs
-import datetime
 
 import queries_definition as qry
 import write_support_functions as wrt
@@ -36,7 +34,8 @@ def write_groupmembers_subsection (db, xml, group_guid):
     group_members = db.cursor()
     group_members.execute(qry.qry_group_members, (group_guid,))
     
-    wrt.write_tag(xml,2,"quantidade_membros",str(group_members.rowcount),'')
+    qty=str(group_members.rowcount)
+    wrt.write_tag(xml,2,"quantidade_membros",qty,'')
                     
     wrt.write_open_tag(xml,2,"membros",'')
     for (user_id, user_name, user_username) in group_members:
@@ -301,11 +300,9 @@ def write_groupevents_subsection (db, xml, group_guid):
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#
-def write_groups_section(db, xml_file):
-
-    xml = codecs.open(xml_file,'w',encoding='utf-8')
+def write_groups_section (db, xml_filename):
     
-    xml.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?")
+    xml = wrt.open_xml_file(xml_filename)
 
     wrt.write_open_tag(xml,0,"comunidades",'')
     
diff --git a/lib/xml/user_section.py b/lib/xml/user_section.py
index f40a186..e779bf5 100644
--- a/lib/xml/user_section.py
+++ b/lib/xml/user_section.py
@@ -22,8 +22,6 @@
 # USA.
 
 import MySQLdb
-import codecs
-import datetime
 
 import queries_definition as qry
 import write_support_functions as wrt
@@ -36,6 +34,9 @@ def write_userfriends_subsection (db, xml, user_guid):
     friends_info = db.cursor()
     friends_info.execute(qry.qry_user_friends, (user_guid))
     
+    qty=str(friends_info.rowcount)
+    wrt.write_tag(xml,2,"quantidade_amigos",qty,'')
+    
     wrt.write_open_tag(xml,2,"amigos",'')
     for (friend_id, friend_name, friend_username) in friends_info:
         prefix='profile/'
@@ -302,11 +303,9 @@ def write_userevents_subsection (db, xml, user_guid):
 #--------------------------------------------------------------------#
 
 #--------------------------------------------------------------------#    
-def write_users_section (db, xml_file):
-    
-    xml = codecs.open(xml_file,'w',encoding='utf-8')
+def write_users_section (db, xml_filename):
     
-    xml.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
+    xml = wrt.open_xml_file(xml_filename)
 
     wrt.write_open_tag(xml,0,"usuarios",'')
     
diff --git a/lib/xml/write_support_functions.py b/lib/xml/write_support_functions.py
index e124e2a..6175f7c 100644
--- a/lib/xml/write_support_functions.py
+++ b/lib/xml/write_support_functions.py
@@ -30,6 +30,13 @@ import queries_definition as qry
 ######################################################################
 # Support functions:
 
+#--------------------------------------------------------------------#
+def open_xml_file (xml_filename):
+    xml_file = codecs.open(xml_filename,'w',encoding='utf-8')
+    xml_file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?")
+    return xml_file
+#--------------------------------------------------------------------#
+
 #--------------------------------------------------------------------#
 def lvl (l):
     if l == 1:
-- 
GitLab