#Python Version 2.5
#
#
#we need the following modules

import urllib2,string,datetime
from BeautifulSoup import BeautifulSoup



def main():
    # parameter and constants
    team_url='https://launchpad.net/~ubuntu-co/+members'

    # open team's web page
    team_page=urllib2.urlopen(team_url)

    # Use BeautifulSoup to parse html
    soup0 = BeautifulSoup(team_page)
    
    #Find active members
    p=soup0.find("table",{ "id":"activemembers"})
    
    #Convert element to string and use BeautifulSoup again
    soup1 = BeautifulSoup(str(p))
    
    #Prepare output as a table
    members_table=['= Analisis del equipo Colombiano de Ubuntu =\n\n']
    today = datetime.date.today()
    members_table.append("Fecha '''"+str(today)+"'''\n\n")
    members_table.append('|| Nombre || Ubuntero? || Karma ||\n')
    
    #Find all the ocurrences of <a href=""> in the member's table
    member_data=soup1.findAll('a')
    
    count=0
    countSi=0
    countNo=0
    karmaCero=0
    totalKarma=0

    for i in member_data:
	
	# get member's url
	member_url='https://launchpad.net'+str(i.get('href'))
        # Open member's web page
	member_page=urllib2.urlopen(member_url)
	# Use BeautifulSoup to parse html
	soup2=BeautifulSoup(member_page)
        #Check to see if the opened page belongs to a group, if it's not the case, get relevant data
        q=soup2.find("a",{ "class":"menu-link-members"})
	if q == None:
	        # add member data to output table
        	members_table.append('|| [https://launchpad.net'+str(i.get('href'))+' '+i.renderContents()+'] || ')
	        #find the word "Ubuntero" and if it says "Yes" or no, add relevant data to output table
		u=soup2.find(text='Ubuntero:')
		if u <> None:
			v=u.findNext(text=True)
			if v.find("Yes") > 0:
	   			members_table.append('Si')
	   			countSi += 1
			else:	 
		   		members_table.append('No')
	   			countNo += 1
		else:	
			members_table.append('No')
   			countNo += 1
		# Find Member's karma, add it to output table
		karma=soup2.find("span",{ "id":"karma-total"}).contents[0]
		members_table.append(' || '+str(karma)+' ||\n')
		totalKarma+=int(karma)
		if karma == "0":
			karmaCero += 1
		count += 1
    # Add trailing info for table	
    #len(member_data) no lo utilice por si vienen anchor no validos
    firmaCodigoSi=str(float(countSi)/float(count))
    firmaCodigoNo=str(float(countNo)/float(count))
    karmaTCero=str(float(karmaCero)/float(count))
    karmaTNoCero=str(1-float(karmaCero)/float(count))

    members_table.append('Total Miembros: '+str(count)+'\n')
    members_table.append('== Firma del codigo de conducta ==\n')
    members_table.append('||Si||'+firmaCodigoSi+' %||\n')
    members_table.append('||No||'+firmaCodigoNo+' %||\n')
    members_table.append('== Karma ==\n')
    promedioKarma=str(float(totalKarma)/float(count))
    members_table.append("Karma promedio: '''"+promedioKarma+"'''\n")
    
    members_table.append('||Karma > 0||'+karmaTNoCero+' %||\n')
    members_table.append('||Karma = 0||'+karmaTCero+' %||\n')
    
    # Convert element to string
    doc= ''.join(members_table)
    # Use BeautifulSoup to parse html
    soup = BeautifulSoup(doc)
    # Print output table
    print soup.prettify()
      
#call main function
main() 

