From f00bf4b3db488646edda07a9ed6a7d1292475d49 Mon Sep 17 00:00:00 2001 From: Bruno Nocera Zanette <brunonzanette@gmail.com> Date: Thu, 12 Sep 2013 15:05:50 -0300 Subject: [PATCH] Implement First comma's problema solution This commit implements the first solution to the comma's problem. The comma's problem consists whether the closing tag is with or without comma, depending if the current element is the last one or not. The solution is not a pretty one, but it works. Signed-off-by: Bruno Nocera Zanette <brunonzanette@gmail.com> --- lib/json/group_section.py | 279 +++++++++++++++++---------- lib/json/user_section.py | 286 +++++++++++++++++++--------- lib/json/write_support_functions.py | 51 ++--- 3 files changed, 409 insertions(+), 207 deletions(-) diff --git a/lib/json/group_section.py b/lib/json/group_section.py index 141d69c..6548430 100644 --- a/lib/json/group_section.py +++ b/lib/json/group_section.py @@ -36,15 +36,33 @@ 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)) - - wrt.write_open_tag(xml,2,"membros") - for (user_id, user_name, user_username) in group_members: + qty=str(group_members.rowcount) + wrt.write_tag(xml,2,"quantidadeMembros",qty,",") + + wrt.write_open_tag(xml,2,"membros","[") + + row=0 + for (user_id, user_name, user_username)\ + in group_members: + + wrt.write_open_tag(xml,3,"","{") + prefix='profile/' user_attr=wrt.uidstr(wrt.urlparticipa(prefix,user_username)) - wrt.write_tag(xml,4,"uid",user_attr) - wrt.write_tag(xml,3,"usuario",user_name) - wrt.write_close_tag(xml,2,"membros") + wrt.write_tag(xml,4,"uid",user_attr,",") + wrt.write_tag(xml,4,"usuario",user_name,"") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_members.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) + + wrt.write_close_tag(xml,2,"],") group_members.close() #--------------------------------------------------------------------# @@ -59,37 +77,46 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"arquivos") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"arquivos","[") + row=0 for (post_guid, post_title, post_desc, \ owner_id, owner_name, owner_username, time)\ in group_files: - wrt.write_open_tag(xml,3,"arquivo") + wrt.write_open_tag(xml,3,"","{") prefix='file/download/' file_link=wrt.urlparticipa(prefix,str(post_guid)) prefix='file/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name) - wrt.write_tag(xml,4,"titulo",post_title) - wrt.write_tag(xml,4,"data",wrt.datestr(time)) - wrt.write_tag(xml,4,"link",wrt.hrefstr(file_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + wrt.write_tag(xml,4,"titulo",post_title,",") + wrt.write_tag(xml,4,"data",wrt.datestr(time),",") + wrt.write_tag(xml,4,"link",wrt.hrefstr(file_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"arquivo") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_files.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"arquivos") + wrt.write_close_tag(xml,2,"],") group_files.close() #--------------------------------------------------------------------# @@ -104,33 +131,42 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"debates") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"debates","[") + row=0 for (post_guid, post_title, post_desc, \ owner_id, owner_name, owner_username, time)\ in group_forumtopics: - wrt.write_open_tag(xml,3,"debate") + wrt.write_open_tag(xml,3,"","{") prefix='discussion/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name) - wrt.write_tag(xml,4,"titulo",post_title) - wrt.write_tag(xml,4,"data",wrt.datestr(time)) - wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc)) + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + wrt.write_tag(xml,4,"titulo",post_title,",") + wrt.write_tag(xml,4,"data",wrt.datestr(time),",") + wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"debate") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_forumtopics.rowcount): + sep="}," + else: + sep="}" - wrt.write_close_tag(xml,2,"debates") + wrt.write_close_tag(xml,3,sep) + + wrt.write_close_tag(xml,2,"],") group_forumtopics.close() #--------------------------------------------------------------------# @@ -145,37 +181,46 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"favoritos") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"favoritos","[") + row=0 for (post_guid, post_title, post_desc, \ owner_id, owner_name, owner_username, time)\ in group_bookmarks: - wrt.write_open_tag(xml,3,"") + wrt.write_open_tag(xml,3,"","{") # 90 = select * from elgg_metastrings where string='address'; bookmark_link=wrt.post_content(db,post_guid,90) prefix='bookmarks/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name) - wrt.write_tag(xml,4,"titulo",post_title) - wrt.write_tag(xml,4,"data",wrt.datestr(time)) - wrt.write_tag(xml,4,"link",wrt.hrefstr(bookmark_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + wrt.write_tag(xml,4,"titulo",post_title,",") + wrt.write_tag(xml,4,"data",wrt.datestr(time),",") + wrt.write_tag(xml,4,"link",wrt.hrefstr(bookmark_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_bookmarks.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"favoritos") + wrt.write_close_tag(xml,2,"],") group_bookmarks.close() #--------------------------------------------------------------------# @@ -190,33 +235,42 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"paginas") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"paginas","[") + row=0 for (post_guid, post_title, post_desc, owner_id, owner_name, owner_username, time)\ in group_pages: - wrt.write_open_tag(xml,3,"") + wrt.write_open_tag(xml,3,"","{") prefix='pages/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name) - wrt.write_tag(xml,4,"titulo",post_title) - wrt.write_tag(xml,4,"data",wrt.datestr(time)) - wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc)) + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + wrt.write_tag(xml,4,"titulo",post_title,",") + wrt.write_tag(xml,4,"data",wrt.datestr(time),",") + wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"pagina") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_pages.rowcount): + sep="}," + else: + sep="}" - wrt.write_close_tag(xml,2,"paginas") + wrt.write_close_tag(xml,3,sep) + + wrt.write_close_tag(xml,2,"],") group_pages.close() #--------------------------------------------------------------------# @@ -231,9 +285,10 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"videos") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"videos","[") + row=0 for (post_guid, post_title, post_desc, \ owner_id, owner_name, owner_username, time)\ in group_videos: @@ -241,27 +296,35 @@ 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,"video") + wrt.write_open_tag(xml,3,"","{") prefix='videos/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name) - wrt.write_tag(xml,4,"titulo",post_title) - wrt.write_tag(xml,4,"data",wrt.datestr(time)) - wrt.write_tag(xml,4,"link",wrt.hrefstr(video_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + wrt.write_tag(xml,4,"titulo",post_title,",") + wrt.write_tag(xml,4,"data",wrt.datestr(time),",") + wrt.write_tag(xml,4,"link",wrt.hrefstr(video_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"video") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_videos.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"videos") + wrt.write_close_tag(xml,2,"],") group_videos.close() #--------------------------------------------------------------------# @@ -276,14 +339,15 @@ 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,"habilitado",wrt.permstr(perm)) - wrt.write_open_tag(xml,2,"eventos") + wrt.write_tag(xml,2,"habilitado",wrt.permstr(perm),",") + wrt.write_open_tag(xml,2,"eventos","[") + row=0 for (post_guid, post_title, post_desc, \ owner_id, owner_name, owner_username, time)\ in group_events: - wrt.write_open_tag(xml,3,"") + wrt.write_open_tag(xml,3,"","{") # 18 = select * from elgg_metastrings where string='venue'; venue=wrt.post_content(db, post_guid, 18) @@ -305,28 +369,36 @@ def write_groupevents_subsection (db, xml, group_guid): prefix='event_calendar/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_tag(xml,4,"pid",post_attr) + wrt.write_tag(xml,4,"pid",post_attr,",") prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,4,"uid",owner_attr) - wrt.write_tag(xml,4,"autor",owner_name,) - 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,"data_inicio",wrt.datestr(time_start)) - wrt.write_tag(xml,4,"data_fim",wrt.datestr(time_end)) - wrt.write_tag(xml,4,"taxa_participacao",fees) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) - - wrt.write_close_tag(xml,3,"evento") + wrt.write_tag(xml,4,"uid",owner_attr,",") + wrt.write_tag(xml,4,"autor",owner_name,",") + 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,"data_inicio",wrt.datestr(time_start),",") + wrt.write_tag(xml,4,"data_fim",wrt.datestr(time_end),",") + wrt.write_tag(xml,4,"taxa_participacao",fees,",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < group_events.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"eventos") + wrt.write_close_tag(xml,2,"]") group_events.close() #--------------------------------------------------------------------# @@ -336,35 +408,35 @@ 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\"?") - - wrt.write_open_tag(xml,0,"comunidades") + wrt.write_open_tag(xml,0,"","{") + wrt.write_open_tag(xml,0,"comunidades","[") groups_info = db.cursor() groups_info.execute(qry.qry_groups_info) + row=0 for (guid, title, desc, owner_id, owner_name, owner_username, time)\ in groups_info: - + # 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(xml,1,"","{") prefix='groups/profile/' group_attr=wrt.cidstr(wrt.urlparticipa(prefix,str(guid))) - wrt.write_tag(xml,4,"cid",group_attr) + wrt.write_tag(xml,4,"cid",group_attr,",") # Write all group's information prefix='profile/' owner_attr=wrt.uidstr(wrt.urlparticipa(prefix,owner_username)) - wrt.write_tag(xml,2,"uid",owner_attr) - wrt.write_tag(xml,2,"proprietario",owner_name) - wrt.write_tag(xml,2,"titulo",title) - wrt.write_tag(xml,2,"data",wrt.datestr(time)) - wrt.write_tag(xml,2,"descricao",wrt.cdata(desc)) - wrt.write_tag(xml,2,"breve_descricao",wrt.cdata(brief_desc)) + wrt.write_tag(xml,2,"uid",owner_attr,",") + wrt.write_tag(xml,2,"proprietario",owner_name,",") + wrt.write_tag(xml,2,"titulo",title,",") + wrt.write_tag(xml,2,"data",wrt.datestr(time),",") + wrt.write_tag(xml,2,"descricao",wrt.cdata(desc),",") + wrt.write_tag(xml,2,"breve_descricao",wrt.cdata(brief_desc),",") if wrt.groupaccess_permission(db, guid) == 'public': @@ -378,10 +450,19 @@ def write_groups_section(db, xml_file): write_grouppages_subsection(db, xml, guid) write_groupvideos_subsection(db, xml, guid) write_groupevents_subsection(db, xml, guid) - - wrt.write_close_tag(xml,1,"comunidade") - - wrt.write_close_tag(xml,0,"comunidades") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < groups_info.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,1,sep) + + wrt.write_close_tag(xml,0,"]") + wrt.write_close_tag(xml,0,"}") groups_info.close() diff --git a/lib/json/user_section.py b/lib/json/user_section.py index 73ec5a0..7e3ecda 100644 --- a/lib/json/user_section.py +++ b/lib/json/user_section.py @@ -36,13 +36,31 @@ def write_userfriends_subsection (db, xml, user_guid): friends_info = db.cursor() friends_info.execute(qry.qry_user_friends, (user_guid)) - wrt.write_open_tag(xml,2,"amigos") - for (friend_id, friend_name, friend_username) in friends_info: + wrt.write_open_tag(xml,2,"amigos","[") + + row=0 + for (friend_id, friend_name, friend_username)\ + in friends_info: + + wrt.write_open_tag(xml,3,"","{") + prefix='profile/' friend_attr=wrt.uidstr(wrt.urlparticipa(prefix,friend_username)) - wrt.write_tag(xml,3,"uid",friend_attr) - wrt.write_tag(xml,3,"usuario",friend_name) - wrt.write_close_tag(xml,2,"amigos") + wrt.write_tag(xml,4,"uid",friend_attr,",") + wrt.write_tag(xml,4,"usuario",friend_name,"") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < friends_info.rowcount): + sep="}," + else: + sep="}" + + wrt.write_tag(xml,4,str(row),str(friends_info.rowcount),"") + wrt.write_close_tag(xml,3,sep) + + wrt.write_close_tag(xml,2,"],") friends_info.close() #--------------------------------------------------------------------# @@ -52,13 +70,30 @@ def write_userowngroup_subsection (db, xml, user_guid): user_owngroups = db.cursor() user_owngroups.execute(qry.qry_user_owngroups, (user_guid, user_guid, )) - wrt.write_open_tag(xml,3,"dono") - for (group_id, group_title) in user_owngroups: + wrt.write_open_tag(xml,3,"dono","[") + + row=0 + for (group_id, group_title)\ + in user_owngroups: + + wrt.write_open_tag(xml,4,"","{") + prefix='groups/profile/' group_attr=wrt.cidstr(wrt.urlparticipa(prefix,str(group_id))) - wrt.write_tag(xml,3,"cid",group_attr) - wrt.write_tag(xml,4,"titulo",group_title) - wrt.write_close_tag(xml,3,"dono") + wrt.write_tag(xml,5,"cid",group_attr,",") + wrt.write_tag(xml,5,"titulo",group_title,"") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_owngroups.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,4,sep) + + wrt.write_close_tag(xml,3,"],") user_owngroups.close() #--------------------------------------------------------------------# @@ -68,23 +103,40 @@ def write_usermembergroup_subsection (db, xml, user_guid): user_membergroups = db.cursor() user_membergroups.execute(qry.qry_user_membergroups, (user_guid, )) - wrt.write_open_tag(xml,3,"membro") - for (group_id, group_title) in user_membergroups: + wrt.write_open_tag(xml,3,"membro","[") + + row=0 + for (group_id, group_title)\ + in user_membergroups: + + wrt.write_open_tag(xml,4,"","{") + prefix='groups/profile/' group_attr=wrt.cidstr(wrt.urlparticipa(prefix,str(group_id))) - wrt.write_tag(xml,3,"cid",group_attr) - wrt.write_tag(xml,4,"titulo",group_title) - wrt.write_close_tag(xml,3,"membro") + wrt.write_tag(xml,5,"cid",group_attr,",") + wrt.write_tag(xml,5,"titulo",group_title,",") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_membergroups.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,4,sep) + + wrt.write_close_tag(xml,3,"]") user_membergroups.close() #--------------------------------------------------------------------# #--------------------------------------------------------------------# def write_usergroups_subsection (db, xml, user_guid): - wrt.write_open_tag(xml,2,"comunidades") + 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,"comunidades") + wrt.write_close_tag(xml,2,"},") #--------------------------------------------------------------------# #--------------------------------------------------------------------# @@ -94,8 +146,9 @@ def write_userfiles_subsection (db, xml, user_guid): # 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(xml,2,"arquivos","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_files: @@ -105,19 +158,27 @@ def write_userfiles_subsection (db, xml, user_guid): prefix='file/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,3,"arquivo") + wrt.write_open_tag(xml,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",wrt.hrefstr(file_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + 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",wrt.hrefstr(file_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"arquivo") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_files.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"arquivos") + wrt.write_close_tag(xml,2,"],") user_files.close() #--------------------------------------------------------------------# @@ -129,8 +190,9 @@ def write_userblogs_subsection (db, xml, user_guid): # 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(xml,2,"blogs","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_blogs: @@ -141,19 +203,27 @@ def write_userblogs_subsection (db, xml, user_guid): prefix='blog/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,3,"blog") + wrt.write_open_tag(xml,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",wrt.cdata(post_excerpt)) - wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc)) + 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",wrt.cdata(post_excerpt),",") + wrt.write_tag(xml,4,"texto",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"blog") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_blogs.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"blogs") + wrt.write_close_tag(xml,2,"],") user_blogs.close() #--------------------------------------------------------------------# @@ -165,8 +235,9 @@ def write_userbookmarks_subsection (db, xml, user_guid): # 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(xml,2,"favoritos","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_bookmarks: @@ -175,19 +246,27 @@ def write_userbookmarks_subsection (db, xml, user_guid): prefix='bookmarks/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,3,"favorito") + wrt.write_open_tag(xml,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",wrt.hrefstr(bookmark_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + 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",wrt.hrefstr(bookmark_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"favorito") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_bookmarks.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"favoritos") + wrt.write_close_tag(xml,2,"],") user_bookmarks.close() #--------------------------------------------------------------------# @@ -199,25 +278,34 @@ def write_userpages_subsection (db, xml, user_guid): # 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(xml,2,"paginas","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_pages: prefix='pages/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,3,"pagina") + wrt.write_open_tag(xml,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",wrt.cdata(post_desc)) + 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",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"pagina") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_pages.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"paginas") + wrt.write_close_tag(xml,2,"],") user_pages.close() #--------------------------------------------------------------------# @@ -229,8 +317,9 @@ def write_uservideos_subsection (db, xml, user_guid): # 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(xml,2,"videos","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_videos: @@ -239,19 +328,27 @@ def write_uservideos_subsection (db, xml, user_guid): prefix='videos/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,3,"video") + wrt.write_open_tag(xml,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",wrt.hrefstr(video_link)) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + 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",wrt.hrefstr(video_link),",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"video") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_videos.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"videos") + wrt.write_close_tag(xml,2,"],") user_videos.close() #--------------------------------------------------------------------# @@ -264,8 +361,9 @@ def write_userevents_subsection (db, xml, user_guid): user_events.execute(qry.qry_user_posts, (user_guid, user_guid, 6,)) - wrt.write_open_tag(xml,2,"eventos") + wrt.write_open_tag(xml,2,"eventos","[") + row=0 for (post_guid, post_title, post_desc, time)\ in user_events: @@ -289,24 +387,32 @@ def write_userevents_subsection (db, xml, user_guid): prefix='event_calendar/view/' post_attr=wrt.pidstr(wrt.urlparticipa(prefix,str(post_guid))) - wrt.write_open_tag(xml,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,"data_inicio",wrt.datestr(time_start)) - wrt.write_tag(xml,4,"data_fim",wrt.datestr(time_end)) - wrt.write_tag(xml,4,"taxa_participacao",fees) - wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc)) + wrt.write_open_tag(xml,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,"data_inicio",wrt.datestr(time_start),",") + wrt.write_tag(xml,4,"data_fim",wrt.datestr(time_end),",") + wrt.write_tag(xml,4,"taxa_participacao",fees,",") + wrt.write_tag(xml,4,"descricao",wrt.cdata(post_desc),",") wrt.write_comments(db,xml,post_guid) - wrt.write_close_tag(xml,3,"") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < user_events.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,3,sep) - wrt.write_close_tag(xml,2,"eventos") + wrt.write_close_tag(xml,2,"]") user_events.close() #--------------------------------------------------------------------# @@ -316,22 +422,23 @@ 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\"?>") - - wrt.write_open_tag(xml,0,"usuarios") + wrt.write_open_tag(xml,0,"","{") + wrt.write_open_tag(xml,0,"usuarios","[") users_info = db.cursor() users_info.execute(qry.qry_users_info) - for (guid, name, username) in users_info: + row=0 + for (guid, name, username)\ + in users_info: prefix='profile/' user_attr=wrt.uidstr(wrt.urlparticipa(prefix,username)) - wrt.write_open_tag(xml,1,"") + wrt.write_open_tag(xml,1,"","{") # Write all user's information - wrt.write_tag(xml,2,"uid",user_attr) - wrt.write_tag(xml,2,"nome",name) + wrt.write_tag(xml,2,"uid",user_attr,",") + wrt.write_tag(xml,2,"nome",name,",") # Write a list of user friend's names write_userfriends_subsection(db, xml, guid) @@ -347,9 +454,18 @@ def write_users_section (db, xml_file): write_uservideos_subsection(db, xml, guid) write_userevents_subsection(db, xml, guid) - wrt.write_close_tag(xml,1,"usuario") + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < users_info.rowcount): + sep="}," + else: + sep="}" + + wrt.write_close_tag(xml,1,sep) - wrt.write_close_tag(xml,0,"usuarios") + wrt.write_close_tag(xml,0,"]") + wrt.write_close_tag(xml,0,"}") users_info.close() diff --git a/lib/json/write_support_functions.py b/lib/json/write_support_functions.py index b8d3b93..1168b57 100644 --- a/lib/json/write_support_functions.py +++ b/lib/json/write_support_functions.py @@ -160,51 +160,56 @@ def groupaccess_permission (db, group_guid): #--------------------------------------------------------------------# #--------------------------------------------------------------------# -def write_open_tag (xml, l, tag_name): +def write_open_tag (xml, l, tag_name, sep): if len(tag_name) > 0: - name="\""+tag_name+"\"" - xml.write(lvl(l)+name+":"+"["+"\n") + xml.write(lvl(l)+"\""+tag_name+"\""+":"+sep+"\n") else: - xml.write(lvl(l)+"{"+"\n") + xml.write(lvl(l)+sep+"\n") #--------------------------------------------------------------------# #--------------------------------------------------------------------# -def write_close_tag (xml, l, tag_name): - if len(tag_name) > 0: - name="\""+tag_name+"\"" - xml.write(lvl(l)+"]"+"\n") - else: - xml.write(lvl(l)+"}"+"\n") +def write_close_tag (xml, l, sep): + xml.write(lvl(l)+sep+"\n") #--------------------------------------------------------------------# #--------------------------------------------------------------------# -def write_tag (xml, l, tag_name, info_str): - level=lvl(l) +def write_tag (xml, l, tag_name, info_str, comma): name="\""+tag_name+"\"" info="\""+info_str+"\"" - xml.write(level+name+":"+info+",\n") + xml.write(lvl(l)+name+":"+info+comma+"\n") #--------------------------------------------------------------------# #--------------------------------------------------------------------# def write_comments (db, xml, post_guid): post_comments = db.cursor() post_comments.execute(qry.qry_post_comments, (post_guid,)) - - write_open_tag(xml,4,"comentarios") - for (user_id, user_name, user_username, string, time) in post_comments: + + row=0 + + write_open_tag(xml,4,"comentarios","[") + for (user_id, user_name, user_username, string, time)\ + in post_comments: - write_open_tag(xml,5,"") + write_open_tag(xml,5,"","{") prefix='profile/' user_attr=uidstr(urlparticipa(prefix,user_username)) - write_tag(xml,6,"uid",user_attr) - write_tag(xml,6,"usuario",user_name) - write_tag(xml,6,"data",datestr(time)) - write_tag(xml,6,"mensagem",cdata(string)) + write_tag(xml,6,"uid",user_attr,",") + write_tag(xml,6,"usuario",user_name,",") + write_tag(xml,6,"data",datestr(time),",") + write_tag(xml,6,"mensagem",cdata(string),"") + + # Increment the row number to be able to know wheter is the last + # row or not. + row=row+1 + if (row < post_comments.rowcount): + sep="}," + else: + sep="}" - write_close_tag(xml,5,"") + write_close_tag(xml,5,sep) - write_close_tag(xml,4,"comentarios") + write_close_tag(xml,4,"]") post_comments.close() #--------------------------------------------------------------------# -- GitLab