From 6789ecb43751e569d6aa00387d585b9efcb428c7 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 31 Oct 2007 05:47:34 -0700 Subject: [PATCH 01/45] Change queue to display names. --- fas/fas/static/css/style.css | 5 +++++ fas/fas/templates/master.html | 2 +- fas/fas/templates/user/view.html | 4 ++-- fas/fas/user.py | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/fas/fas/static/css/style.css b/fas/fas/static/css/style.css index 1cd33d7..ac3d60c 100644 --- a/fas/fas/static/css/style.css +++ b/fas/fas/static/css/style.css @@ -324,6 +324,11 @@ a background: url(/fas/static/images/queue.png) 0 50% no-repeat; } +#rolespanel .queue strong +{ + color: #222222; +} + #footer { font-size: 1.6ex; diff --git a/fas/fas/templates/master.html b/fas/fas/templates/master.html index 2df3e5d..8818072 100644 --- a/fas/fas/templates/master.html +++ b/fas/fas/templates/master.html @@ -4,7 +4,7 @@ xmlns:py="http://genshi.edgewall.org/" py:strip=""> - + diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 2924922..ecd00c8 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -56,10 +56,10 @@
-
Queue (last five):
+
Queue:
    -
  • ${user[0]} requests approval to join ${group}
  • +
  • ${user[0]} requests approval to join ${group}
  • + + + None + + ${builds.builds[build]['title']} diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 05ea5f6..6e8da35 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -13,18 +13,18 @@

    Account Details (edit)

    -
    Account Name
    ${user.cn} 
    -
    Real Name
    ${user.givenName} 
    -
    Email
    ${user.mail} 
    -
    Bugzilla Email
    ${user.fedoraPersonBugzillaMail} 
    -
    IRC Nick
    ${user.fedoraPersonIrcNick} 
    -
    PGP Key
    ${user.fedoraPersonKeyId} 
    -
    Telephone Number
    ${user.telephoneNumber} 
    -
    Postal Address
    ${user.postalAddress} 
    -
    Description
    ${user.description} 
    -
    Password
    Valid (change)
    -
    Account Status
    Approved, Active
    -
    CLA
    Done Not Done
    +
    Account Name:
    ${user.cn} 
    +
    Real Name:
    ${user.givenName} 
    +
    Email:
    ${user.mail} 
    +
    Bugzilla Email:
    ${user.fedoraPersonBugzillaMail} 
    +
    IRC Nick:
    ${user.fedoraPersonIrcNick} 
    +
    PGP Key:
    ${user.fedoraPersonKeyId} 
    +
    Telephone Number:
    ${user.telephoneNumber} 
    +
    Postal Address:
    ${user.postalAddress} 
    +
    Description:
    ${user.description} 
    +
    Password:
    Valid (change)
    +
    Account Status:
    Approved, Active
    +
    CLA:
    DoneNot Done (Sign it!)

    Your Roles

    @@ -33,14 +33,16 @@
  • ${groupdata[group].fedoraGroupDesc} (${group})
  • ${groupdata[group].fedoraGroupDesc} (${group})
+
  • -

    ${groupdata[group].fedoraGroupDesc}

    , ${groups[group].fedoraRoleType} +

    ${groupdata[group].fedoraGroupDesc}

    (${groups[group].fedoraRoleType})
    Status:
    From 63873e29038406a82e3120a11310ae28dc3f76d6 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Thu, 29 Nov 2007 17:11:10 -0700 Subject: [PATCH 08/45] Change the testing password to something longer. --- fas/fas/fasLDAP.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index a96bc89..12efaf1 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -42,7 +42,7 @@ class Server(object): # from the fedora-db-access file. server = server or 'localhost' who = who or 'cn=directory manager' - password = password or 'test' + password = password or 'fedoraproject' self.ldapConn = ldap.open(server) self.ldapConn.simple_bind_s(who, password) From dca1acaade6731f989cf869b6a4f0641eb12f805 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Thu, 29 Nov 2007 22:10:30 -0700 Subject: [PATCH 09/45] Add Toshio's fix to use fedora-db-access. --- fas/fas/fasLDAP.py | 66 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 8 deletions(-) diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index 12efaf1..49ec27f 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -31,26 +31,76 @@ from random import Random import sha from base64 import b64encode import sys - +import os + +dbName = 'fastest' class AuthError(Exception): pass +def retrieve_db_info(dbKey): + '''Retrieve information to connect to the db from the filesystem. + + Arguments: + :dbKey: The string identifying the database entry in the config file. + + Returns: A dictionary containing the values to use in connecting to the + database. + + Exceptions: + :IOError: Returned if the config file is not on the system. + :AuthError: Returned if there is no record found for dbKey in the + config file. + ''' + # Open a filehandle to the config file + if os.environ.has_key('HOME') and os.path.isfile( + os.path.join(os.environ.get('HOME'), '.fedora-db-access')): + fh = file(os.path.join( + os.environ.get('HOME'), '.fedora-db-access'), 'r') + elif os.path.isfile('/etc/sysconfig/fedora-db-access'): + fh = file('/etc/sysconfig/fedora-db-access', 'r') + else: + raise IOError, 'fedora-db-access file does not exist.' + + # Read the file until we get the information for the requested db + dbInfo = None + for line in fh.readlines(): + if not line: + break + line = line.strip() + if not line or line[0] == '#': + continue + pieces = line.split(None, 1) + if len(pieces) < 2: + continue + if pieces[0] == dbKey: + dbInfo = eval(pieces[1]) + break + + if fh: + fh.close() + if not dbInfo: + raise AuthError, 'Authentication source "%s" not configured' % (dbKey,) + return dbInfo + class Server(object): def __init__(self, server=None, who=None, password=None): - ### FIXME: Before deploy, get the default server, user, and password - # from the fedora-db-access file. - server = server or 'localhost' - who = who or 'cn=directory manager' - password = password or 'fedoraproject' + try: + dbInfo = retrieve_db_info(dbName) + except IOError: + raise AuthError, 'Authentication config file fedora-db-access is' \ + ' not available' + server = server or dbInfo['host'] or 'localhost' + who = 'cn=%s' % (who or dbInfo['user']) + # Some db connections have no password + password = password or dbInfo.get('password') self.ldapConn = ldap.open(server) self.ldapConn.simple_bind_s(who, password) def add(self, base, attributes): ''' Add a new group record to LDAP instance ''' - attributes=[ (k, v) for k,v in attributes.items() ] - self.ldapConn.add_s(base, attributes) + self.ldapConn.add_s(base, attributes.items()) def delete(self, base): ''' Delete target base ''' From 2d9888e3ac0c3b56457fe2ffb738a23c9499c59e Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Fri, 30 Nov 2007 08:47:34 -0700 Subject: [PATCH 10/45] Formatting changes, test TurboMail properly, fix PgToLDAP.py --- fas/dev.cfg | 3 +- fas/fas/templates/group/view.html | 5 +- fas/fas/templates/user/view.html | 6 +- fas/ldap/PgToLDAP.py | 188 +++++++++++++++--------------- 4 files changed, 102 insertions(+), 100 deletions(-) diff --git a/fas/dev.cfg b/fas/dev.cfg index cf029d2..ee5f177 100644 --- a/fas/dev.cfg +++ b/fas/dev.cfg @@ -7,8 +7,9 @@ #mail.server = 'bastion.fedora.phx.redhat.com' #base_url_filter.base_url = "http://192.168.2.101:8080" -mail.on = False +mail.on = True mail.server = 'bastion.fedora.phx.redhat.com' +mail.testmode = True mail.debug = False mail.encoding = 'utf-8' diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index 20f139a..3037263 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -65,8 +65,9 @@ - ${datetime.utcfromtimestamp(groups[user].fedoraRoleCreationDate).ctime()} - ${groups[user].fedoraRoleApprovalDate} + ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleCreationDate)).ctime()} + None + ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleApprovalDate)).ctime()} ${groups[user].fedoraRoleStatus} ${groups[user].fedoraRoleType} diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 6e8da35..1418aca 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -40,8 +40,8 @@
-->
    -
  • -
    +
    +
  • ${groupdata[group].fedoraGroupDesc}

    (${groups[group].fedoraRoleType})
    Status:
    @@ -71,8 +71,8 @@
- + diff --git a/fas/ldap/PgToLDAP.py b/fas/ldap/PgToLDAP.py index f1e344b..e9c549e 100755 --- a/fas/ldap/PgToLDAP.py +++ b/fas/ldap/PgToLDAP.py @@ -119,18 +119,18 @@ def openLdifFile(filename): print "Opening output file %s" % filename try: #ldifWriter = ldif.LDIFWriter(ldap.initialize('ldap://localhost:1390'),filename) - fileHandel = open (filename,'w') + fileHandel = open (filename,'w') - # | __init__(self, output_file, base64_attrs=None, cols=76, line_sep='\n') - # | output_file - # | file object for output - # | base64_attrs - # | list of attribute types to be base64-encoded in any case - # | cols - # | Specifies how many columns a line may have before it's + # | __init__(self, output_file, base64_attrs=None, cols=76, line_sep='\n') + # | output_file + # | file object for output + # | base64_attrs + # | list of attribute types to be base64-encoded in any case + # | cols + # | Specifies how many columns a line may have before it's # | folded into many lines. - # | line_sep - # | String used as line separator + # | line_sep + # | String used as line separator @@ -215,7 +215,7 @@ def main(): userCursor = dbConn.cursor() userCursor.execute ("SELECT * FROM person") - #id, username, email 2, human_name 3, gpg_keyid 4, ssh_key 5, password 6, comments 7, postal_address 8, telephone 9, facsimile 10, affiliation 11, creation 12, approval_status 13, internal_comments 14, wiki_prefs 15, ircnick 16 + #id, username, email 2, human_name 3, gpg_keyid 4, ssh_key 5, password 6, comments 7, postal_address 8, telephone 9, facsimile 10, affiliation 11, creation 12, approval_status 13, internal_comments 14, wiki_prefs 15, ircnick 16 except: print "Error selecting users from db" raise @@ -233,50 +233,50 @@ def main(): if options.outType == "ldif": ldifWriter.unparse(dn, entry) else: - + print "Adding ldif info for " + user[3] + "." - #userLdif = [["objectClass",["fedoraPerson","organizationalUnit"]] , [ "displayName",[ user[1] ] ] ] - userLdif = [["objectClass",["fedoraPerson"]] , [ "displayName",[ user[1] ] ] ] - userLdif.append(["mail",[str(user[2])]]) - userLdif.append(["sn",[str(user[1])]]) - userLdif.append(["fedoraPersonBugzillaMail",[str(user[2])]]) - userLdif.append(["cn",[str(user[1])]]) - userLdif.append(["givenName",[str(user[3])]]) - userLdif.append(["fedoraPersonKeyId",[str(user[4])]]) - userLdif.append(["fedoraPersonCertSerial",['-1']]) - userLdif.append(["fedoraPersonSshKey",[str(user[5])]]) - userLdif.append(["userPassword",[encode_SSHA_password(str(user[6]))]]) - userLdif.append(["postalAddress",[str(user[8])]]) - userLdif.append(["telephoneNumber",[str(user[9])]]) - userLdif.append(["fax",[str(user[10]) or "None"]]) - userLdif.append(["o",[str(user[11]) or "None" ]]) # affiliation is set to the o -- another stretch ?? - userLdif.append(["fedoraPersonCreationDate",[str(timestamp)]]) - userLdif.append(["fedoraPersonApprovalStatus",[str(user[13])]]) - userLdif.append(["description",[str(user[14])]]) #this one may be a streach -- original field was internal comments - userLdif.append(["fedoraPersonIrcNick",[str(user[16])]]) - #userLdif.append(["ou",["Roles"]]) Adding an OU instead - - print userLdif - #for userKey in userLdif.keys(): - #print "Key Name -> " + userKey - #print ":::Key Value::: " - #print userLdif[userKey] - #ldifWriter.unparse("dc=fedoraproject,dc=org cn=" + user[3] , { userKey : [str(userLdif[userKey])] } ) + #userLdif = [["objectClass",["fedoraPerson","organizationalUnit"]] , [ "displayName",[ user[1] ] ] ] + userLdif = [["objectClass",["fedoraPerson"]] , [ "displayName",[ user[1] ] ] ] + userLdif.append(["mail",[str(user[2])]]) + userLdif.append(["sn",[str(user[1])]]) + userLdif.append(["fedoraPersonBugzillaMail",[str(user[2])]]) + userLdif.append(["cn",[str(user[1])]]) + userLdif.append(["givenName",[str(user[3])]]) + userLdif.append(["fedoraPersonKeyId",[str(user[4])]]) + userLdif.append(["fedoraPersonCertSerial",['-1']]) + userLdif.append(["fedoraPersonSshKey",[str(user[5])]]) + userLdif.append(["userPassword",[encode_SSHA_password(str(user[6]))]]) + userLdif.append(["postalAddress",[str(user[8])]]) + userLdif.append(["telephoneNumber",[str(user[9])]]) + userLdif.append(["fax",[str(user[10]) or "None"]]) + userLdif.append(["o",[str(user[11]) or "None" ]]) # affiliation is set to the o -- another stretch ?? + userLdif.append(["fedoraPersonCreationDate",[str(timestamp)]]) + userLdif.append(["fedoraPersonApprovalStatus",[str(user[13])]]) + userLdif.append(["description",[str(user[14])]]) #this one may be a streach -- original field was internal comments + userLdif.append(["fedoraPersonIrcNick",[str(user[16])]]) + #userLdif.append(["ou",["Roles"]]) Adding an OU instead + + print userLdif + #for userKey in userLdif.keys(): + #print "Key Name -> " + userKey + #print ":::Key Value::: " + #print userLdif[userKey] + #ldifWriter.unparse("dc=fedoraproject,dc=org cn=" + user[3] , { userKey : [str(userLdif[userKey])] } ) - #print userLdif.keys() - #print userLdif.values() - ldifWriter.unparse("cn=" + str(user[1]) +",ou=People,dc=fedoraproject,dc=org" , userLdif ) + #print userLdif.keys() + #print userLdif.values() + ldifWriter.unparse("cn=" + str(user[1]) +",ou=People,dc=fedoraproject,dc=org" , userLdif ) - roleOuLdif = [["objectClass",["organizationalUnit"]] , [ "ou",[ "Roles" ] ] ] - ldifWriter.unparse("ou=Roles,cn=" + str(user[1]) +",ou=People,dc=fedoraproject,dc=org" , roleOuLdif ) + roleOuLdif = [["objectClass",["organizationalUnit"]] , [ "ou",[ "Roles" ] ] ] + ldifWriter.unparse("ou=Roles,cn=" + str(user[1]) +",ou=People,dc=fedoraproject,dc=org" , roleOuLdif ) - #ldifWriter.unparse("dc=fedoraproject,dc=org, cn=" + user[3] , [ ['ano',['domini']],['uances',['od']] ]) + #ldifWriter.unparse("dc=fedoraproject,dc=org, cn=" + user[3] , [ ['ano',['domini']],['uances',['od']] ]) - #time.sleep (2) - - + #time.sleep (2) + + #ldapConn.add_s(dn, entry) userCursor.close() @@ -307,7 +307,7 @@ def main(): ldifWriter.unparse(dn, entry) else: #ldapConn.add_s(dn, entry) - + print "Adding group info for %s." % group[7] #id0, owner_id1, group_type2, needs_sponsor3, user_can_remove4, prerequisite_id5, joinmsg6, name7 @@ -316,43 +316,43 @@ def main(): owner = uidLookupCursor.fetchone() if str(group[5]) != "None" : uidLookupCursor.execute ("SELECT name FROM project_group where id =" + str(group[5]) ) - prereq = uidLookupCursor.fetchone() + prereq = uidLookupCursor.fetchone() print prereq - else: - prereq=["None"] - print owner + else: + prereq=["None"] + print owner #id0, name1, owner_id2, group_type3, needs_sponsor4, user_can_remove5, prerequisite_id6, joinmsg7 - userLdif = [["objectClass",["fedoraGroup"]] ] - userLdif.append(["cn",[str(group[7])]]) - userLdif.append(["fedoraGroupOwner",owner]) # need to get a cn for this not just the id - #userLdif.append(["groupOwner",[str(group[2])]]) # need to get a cn for this not just the id - userLdif.append(["fedoraGroupType",[str(group[3]) or "None" ]]) + userLdif = [["objectClass",["fedoraGroup"]] ] + userLdif.append(["cn",[str(group[7])]]) + userLdif.append(["fedoraGroupOwner",owner]) # need to get a cn for this not just the id + #userLdif.append(["groupOwner",[str(group[2])]]) # need to get a cn for this not just the id + userLdif.append(["fedoraGroupType",[str(group[3]) or "None" ]]) - #we're using the boolean type for these. This means they need to be converted to the TRUE and FALSE strings + #we're using the boolean type for these. This means they need to be converted to the TRUE and FALSE strings - if str(group[3]) == "0" : - group[3]="FALSE" - else: - group[3]="TRUE" + if str(group[3]) == "0" : + group[3]="FALSE" + else: + group[3]="TRUE" - if str(group[4]) == "0" : - group[4]="FALSE" - else: - group[4]="TRUE" + if str(group[4]) == "0" : + group[4]="FALSE" + else: + group[4]="TRUE" if group[5] == None: group[5] = "" - - userLdif.append(["fedoraGroupNeedsSponsor",[str(group[3])]]) #need to convert to bool - userLdif.append(["fedoraGroupUserCanRemove",[str(group[4])]]) #need to convert to bool - userLdif.append(["fedoraGroupDesc",[str('Please fill out a Group Description')]]) #need to convert to bool - #userLdif.append(["groupPrerequisite",[str(group[5])]]) - userLdif.append(["fedoraGroupRequires",[str(group[5])]]) # <- Hope this is added properly - Ricky - #userLdif.append(["groupPrerequisite",prereq]) not currently in the schema - userLdif.append(["fedoraGroupJoinMsg",[str(group[6]) or "None" ]]) - ldifWriter.unparse("cn=" + str(group[7]) +",ou=FedoraGroups,dc=fedoraproject,dc=org" , userLdif ) + + userLdif.append(["fedoraGroupNeedsSponsor",[str(group[3])]]) #need to convert to bool + userLdif.append(["fedoraGroupUserCanRemove",[str(group[4])]]) #need to convert to bool + userLdif.append(["fedoraGroupDesc",[str('Please fill out a Group Description')]]) #need to convert to bool + #userLdif.append(["groupPrerequisite",[str(group[5])]]) + userLdif.append(["fedoraGroupRequires",[str(group[5])]]) # <- Hope this is added properly - Ricky + #userLdif.append(["groupPrerequisite",prereq]) not currently in the schema + userLdif.append(["fedoraGroupJoinMsg",[str(group[6]) or "None" ]]) + ldifWriter.unparse("cn=" + str(group[7]) +",ou=FedoraGroups,dc=fedoraproject,dc=org" , userLdif ) groupCursor.close() @@ -364,7 +364,7 @@ def main(): print "Selecting all roles from Postgres Database" roleCursor = dbConn.cursor() roleCursor.execute ("SELECT * FROM role") - #person_id, project_group_id, role_type, role_domain, role_status, internal_comments, sponsor_id (Points to a person), creation (TIMESTAMP), approval (TIMESTAMP) + #person_id, project_group_id, role_type, role_domain, role_status, internal_comments, sponsor_id (Points to a person), creation (TIMESTAMP), approval (TIMESTAMP) except: print "Error selecting roles from db" raise @@ -392,7 +392,7 @@ def main(): #person_id0, group_project_id1, role_type2, role_domain3, role_status4, internal_comments5, sponsor_id6, creation7, approval8 - uidRoleCursor = dbConn.cursor() + uidRoleCursor = dbConn.cursor() uidRoleCursor.execute ("SELECT username FROM person where id =" + str(role[0]) ) username = uidRoleCursor.fetchone() uidRoleCursor.execute ("SELECT name FROM project_group where id =" + str(role[1]) ) @@ -400,31 +400,31 @@ def main(): if str(role[6]) != "None" : uidRoleCursor.execute ("SELECT username FROM person where id =" + str(role[6]) ) sponsor = uidRoleCursor.fetchone() - else: - sponsor = ["None"] + else: + sponsor = ["None"] print "Adding " + str(role[4]) + " role info for " + group[0] + " for user " + username[0] + "." #if str(group[6]) != "None" : # uidLookupCursor.execute ("SELECT name FROM project_group where id =" + str(group[6]) ) - # prereq = uidLookupCursor.fetchone() + # prereq = uidLookupCursor.fetchone() # print prereq - #else: - # prereq=["None"] - #print owner + #else: + # prereq=["None"] + #print owner #person_id0, group_project_id1, role_type2, role_domain3, role_status4, internal_comments5, sponsor_id6, creation7, approval8 - roleLdif = [["objectClass",["fedoraRole"]] ] - #roleLdif.append(["cn",[str(group[0]) + str(role[2])]]) #Fix me - roleLdif.append(["cn",[str(group[0])]]) #Fix me - roleLdif.append(["fedoraRoleType",[str(role[2])]]) - roleLdif.append(["fedoraRoleDomain",[str(role[3]) or "None" ]]) - roleLdif.append(["fedoraRoleStatus",[str(role[4])]]) - roleLdif.append(["fedoraRoleSponsor",sponsor]) - roleLdif.append(["fedoraRoleCreationDate",[str(timestamp1)]]) - roleLdif.append(["fedoraRoleApprovalDate",[str(timestamp2)]]) + roleLdif = [["objectClass",["fedoraRole"]] ] + #roleLdif.append(["cn",[str(group[0]) + str(role[2])]]) #Fix me + roleLdif.append(["cn",[str(group[0])]]) #Fix me + roleLdif.append(["fedoraRoleType",[str(role[2])]]) + roleLdif.append(["fedoraRoleDomain",[str(role[3]) or "None" ]]) + roleLdif.append(["fedoraRoleStatus",[str(role[4])]]) + roleLdif.append(["fedoraRoleSponsor",sponsor]) + roleLdif.append(["fedoraRoleCreationDate",[str(timestamp1)]]) + roleLdif.append(["fedoraRoleApprovalDate",[str(timestamp2)]]) - ldifWriter.unparse("cn=" + group[0] + ",ou=Roles,cn=" + username[0] + ",ou=People,dc=fedoraproject,dc=org" , roleLdif ) + ldifWriter.unparse("cn=" + group[0] + ",ou=Roles,cn=" + username[0] + ",ou=People,dc=fedoraproject,dc=org" , roleLdif ) roleCursor.close() From eedec5a5312c47605d955e35fdff8df38a946d22 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 5 Dec 2007 07:37:11 -0700 Subject: [PATCH 11/45] Fix fasLDAP to encode things properly, add fedoraGroupType to group actions, fix user.py bug. --- fas/fas/fasLDAP.py | 38 +++++++++++++++---------------- fas/fas/group.py | 5 ++-- fas/fas/templates/group/edit.html | 2 +- fas/fas/templates/group/new.html | 6 ++++- fas/fas/templates/group/view.html | 4 ++-- fas/fas/user.py | 14 +++--------- 6 files changed, 33 insertions(+), 36 deletions(-) diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index 49ec27f..8a16ad7 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -110,7 +110,7 @@ class Server(object): ''' Modify an attribute, requires write access ''' if new is None: return None - new = str(new) + new = unicode(new).encode('utf-8') if new == old: return None @@ -180,17 +180,17 @@ class Group(object): } @classmethod - def newGroup(self, cn, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupRequires, fedoraGroupJoinMsg): + def newGroup(self, cn, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupType, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupRequires, fedoraGroupJoinMsg): ''' Create a new group ''' - attributes = { 'cn' : cn, + attributes = { 'cn' : cn.encode('utf-8'), 'objectClass' : ('fedoraGroup'), - 'fedoraGroupDesc' : fedoraGroupDesc, - 'fedoraGroupOwner' : fedoraGroupOwner, - 'fedoraGroupType' : '1', - 'fedoraGroupNeedsSponsor' : fedoraGroupNeedsSponsor, - 'fedoraGroupUserCanRemove' : fedoraGroupUserCanRemove, - 'fedoraGroupRequires' : fedoraGroupRequires, - 'fedoraGroupJoinMsg' : fedoraGroupJoinMsg, + 'fedoraGroupDesc' : fedoraGroupDesc.encode('utf-8'), + 'fedoraGroupOwner' : fedoraGroupOwner.encode('utf-8'), + 'fedoraGroupType' : fedoraGroupType.encode('utf-8'), + 'fedoraGroupNeedsSponsor' : fedoraGroupNeedsSponsor.encode('utf-8'), + 'fedoraGroupUserCanRemove' : fedoraGroupUserCanRemove.encode('utf-8'), + 'fedoraGroupRequires' : fedoraGroupRequires.encode('utf-8'), + 'fedoraGroupJoinMsg' : fedoraGroupJoinMsg.encode('utf-8'), } self.__server.add('cn=%s,%s' % (cn, self.__base), attributes) @@ -379,23 +379,23 @@ class Person(object): def newPerson(self, cn, givenName, mail, telephoneNumber, postalAddress): ''' Create a new user ''' now = time.time() - attributes = { 'cn' : cn, + attributes = { 'cn' : cn.encode('utf-8'), 'objectClass' : ('fedoraPerson', 'inetOrgPerson', 'organizationalPerson', 'person', 'top'), - 'displayName' : cn, - 'sn' : cn, - 'cn' : cn, + 'displayName' : cn.encode('utf-8'), + 'sn' : cn.encode('utf-8'), + 'cn' : cn.encode('utf-8'), 'fedoraPersonSshKey' : '', 'facsimileTelephoneNumber' : '', 'fedoraPersonApprovalStatus' : 'approved', - 'givenName' : givenName, - 'mail' : mail, + 'givenName' : givenName.encode('utf-8'), + 'mail' : mail.encode('utf-8'), 'fedoraPersonKeyId' : '', 'fedoraPersonCertSerial' : -1, 'description' : '', 'fedoraPersonCreationDate' : str(now), - 'telephoneNumber' : telephoneNumber, - 'fedoraPersonBugzillaMail' : mail, - 'postalAddress' : postalAddress, + 'telephoneNumber' : telephoneNumber.encode('utf-8'), + 'fedoraPersonBugzillaMail' : mail.encode('utf-8'), + 'postalAddress' : postalAddress.encode('utf-8'), 'fedoraPersonIrcNick' : '', 'userPassword' : 'Disabled' } diff --git a/fas/fas/group.py b/fas/fas/group.py index 7bff7db..3b39090 100644 --- a/fas/fas/group.py +++ b/fas/fas/group.py @@ -138,7 +138,7 @@ class Group(controllers.Controller): @validate(validators=createGroup()) @error_handler(error) @expose(template="fas.templates.group.new") - def create(self, groupName, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupNeedsSponsor='FALSE', fedoraGroupUserCanRemove='FALSE', fedoraGroupRequires='', fedoraGroupJoinMsg=''): + def create(self, groupName, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupType, fedoraGroupNeedsSponsor='FALSE', fedoraGroupUserCanRemove='FALSE', fedoraGroupRequires='', fedoraGroupJoinMsg=''): '''Create a group''' userName = turbogears.identity.current.user_name if not canCreateGroup(userName): @@ -148,6 +148,7 @@ class Group(controllers.Controller): fas.fasLDAP.Group.newGroup(groupName, fedoraGroupDesc, fedoraGroupOwner, + fedoraGroupType, fedoraGroupNeedsSponsor, fedoraGroupUserCanRemove, fedoraGroupRequires, @@ -186,7 +187,7 @@ class Group(controllers.Controller): @validate(validators=editGroup()) @error_handler(error) @expose() - def save(self, groupName, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupType=1, fedoraGroupNeedsSponsor="FALSE", fedoraGroupUserCanRemove="FALSE", fedoraGroupRequires="", fedoraGroupJoinMsg=""): + def save(self, groupName, fedoraGroupDesc, fedoraGroupOwner, fedoraGroupType, fedoraGroupNeedsSponsor="FALSE", fedoraGroupUserCanRemove="FALSE", fedoraGroupRequires="", fedoraGroupJoinMsg=""): '''Edit a group''' userName = turbogears.identity.current.user_name if fedoraGroupRequires is None: diff --git a/fas/fas/templates/group/edit.html b/fas/fas/templates/group/edit.html index 72e3d99..c258afd 100644 --- a/fas/fas/templates/group/edit.html +++ b/fas/fas/templates/group/edit.html @@ -33,7 +33,7 @@
- +
diff --git a/fas/fas/templates/group/new.html b/fas/fas/templates/group/new.html index d0d8fe4..30453a7 100644 --- a/fas/fas/templates/group/new.html +++ b/fas/fas/templates/group/new.html @@ -21,6 +21,10 @@
+
+ + +
@@ -35,7 +39,7 @@
- +
diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index 3037263..3dea89b 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -66,8 +66,8 @@ from datetime import datetime ?> ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleCreationDate)).ctime()} - None - ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleApprovalDate)).ctime()} + N/A + ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleApprovalDate)).ctime()} ${groups[user].fedoraRoleStatus} ${groups[user].fedoraRoleType} diff --git a/fas/fas/user.py b/fas/fas/user.py index cf487ec..91370c6 100644 --- a/fas/fas/user.py +++ b/fas/fas/user.py @@ -176,8 +176,9 @@ class User(controllers.Controller): if not canEditUser(turbogears.identity.current.user_name, userName): turbogears.flash(_("You do not have permission to edit '%s'" % userName)) turbogears.redirect('/user/edit/%s', turbogears.identity.current.user_name) + return dict() + user = Person.byUserName(userName) try: - user = Person.byUserName(userName) user.givenName = givenName user.mail = mail user.fedoraPersonBugzillaMail = fedoraPersonBugzillaMail @@ -191,16 +192,7 @@ class User(controllers.Controller): else: turbogears.flash(_('Your account details have been saved.')) turbogears.redirect("/user/view/%s" % userName) - value = {'userName': userName, - 'givenName': givenName, - 'mail': mail, - 'fedoraPersonBugzillaMail': fedoraPersonBugzillaMail, - 'fedoraPersonIrcNick': fedoraPersonIrcNick, - 'fedoraPersonKeyId': fedoraPersonKeyId, - 'telephoneNumber': telephoneNumber, - 'postalAddress': postalAddress, - 'description': description, } - return dict(value=value) + return dict(userName=userName, user=user) @identity.require(turbogears.identity.in_group("accounts")) #TODO: Use auth.py @expose(template="fas.templates.user.list") From 27712f599b5af7192a03b7532d7c6869b65aa204 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 5 Dec 2007 08:55:43 -0700 Subject: [PATCH 12/45] Formatting fix, update date/time display on group page. --- fas/fas/templates/group/view.html | 6 +++--- fas/fas/templates/user/view.html | 18 +++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index 3dea89b..b3aab91 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -65,9 +65,9 @@ - ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleCreationDate)).ctime()} - N/A - ${datetime.utcfromtimestamp(float(groups[user].fedoraRoleApprovalDate)).ctime()} + ${datetime.fromtimestamp(float(groups[user].fedoraRoleCreationDate))} + ${groups[user].fedoraRoleApprovalDate} + ${datetime.fromtimestamp(float(groups[user].fedoraRoleApprovalDate))} ${groups[user].fedoraRoleStatus} ${groups[user].fedoraRoleType} diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 1418aca..48c2a0c 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -13,15 +13,15 @@

Account Details (edit)

-
Account Name:
${user.cn} 
-
Real Name:
${user.givenName} 
-
Email:
${user.mail} 
-
Bugzilla Email:
${user.fedoraPersonBugzillaMail} 
-
IRC Nick:
${user.fedoraPersonIrcNick} 
-
PGP Key:
${user.fedoraPersonKeyId} 
-
Telephone Number:
${user.telephoneNumber} 
-
Postal Address:
${user.postalAddress} 
-
Description:
${user.description} 
+
Account Name:
${user.cn}
+
Real Name:
${user.givenName}
+
Email:
${user.mail}
+
Bugzilla Email:
${user.fedoraPersonBugzillaMail}
+
IRC Nick:
${user.fedoraPersonIrcNick}
+
PGP Key:
${user.fedoraPersonKeyId}
+
Telephone Number:
${user.telephoneNumber}
+
Postal Address:
${user.postalAddress}
+
Description:
${user.description}
Password:
Valid (change)
Account Status:
Approved, Active
CLA:
DoneNot Done (Sign it!)
From f1af16fb8408d8702037cc40c099100205f1022d Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 5 Dec 2007 12:23:54 -0700 Subject: [PATCH 13/45] Add user time zone support. --- fas/fas/fasLDAP.py | 5 +++-- fas/fas/group.py | 3 ++- fas/fas/templates/group/view.html | 5 +++-- fas/fas/templates/user/edit.html | 9 +++++++++ fas/fas/user.py | 3 ++- fas/ldap/52fc-fedora-person.ldif | 3 ++- fas/ldap/PgToLDAP.py | 1 + 7 files changed, 22 insertions(+), 7 deletions(-) diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index 8a16ad7..a563af0 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -324,7 +324,7 @@ class Groups(object): now = time.time() attributes = { 'cn' : groupName, - 'fedoraRoleApprovaldate' : 'NotApproved', + 'fedoraRoleApprovaldate' : 'None', 'fedoraRoleCreationDate' : str(now), 'fedoraRoleDomain' : 'None', 'fedoraRoleSponsor' : 'None', @@ -397,7 +397,8 @@ class Person(object): 'fedoraPersonBugzillaMail' : mail.encode('utf-8'), 'postalAddress' : postalAddress.encode('utf-8'), 'fedoraPersonIrcNick' : '', - 'userPassword' : 'Disabled' + 'userPassword' : 'Disabled', + 'fedoraPersonTimeZone' : 'UTC', } self.__server.add('cn=%s,%s' % (cn, self.__base), attributes) attributes = { diff --git a/fas/fas/group.py b/fas/fas/group.py index 3b39090..1823f29 100644 --- a/fas/fas/group.py +++ b/fas/fas/group.py @@ -122,7 +122,8 @@ class Group(controllers.Controller): me = groups[userName] except: me = UserGroup() - return dict(userName=userName, groups=groups, group=group, me=me) + u = Person.byUserName(userName) + return dict(userName=userName, u=u, groups=groups, group=group, me=me) @identity.require(turbogears.identity.not_anonymous()) @expose(template="fas.templates.group.new") diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index b3aab91..36cc8f1 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -64,10 +64,11 @@ None - ${datetime.fromtimestamp(float(groups[user].fedoraRoleCreationDate))} + ${datetime.fromtimestamp(float(groups[user].fedoraRoleCreationDate), timezone(u.fedoraPersonTimeZone))} ${groups[user].fedoraRoleApprovalDate} - ${datetime.fromtimestamp(float(groups[user].fedoraRoleApprovalDate))} + ${datetime.fromtimestamp(float(groups[user].fedoraRoleApprovalDate), timezone(u.fedoraPersonTimeZone))} ${groups[user].fedoraRoleStatus} ${groups[user].fedoraRoleType} diff --git a/fas/fas/templates/user/edit.html b/fas/fas/templates/user/edit.html index 21ebd3e..cb63c65 100644 --- a/fas/fas/templates/user/edit.html +++ b/fas/fas/templates/user/edit.html @@ -37,6 +37,15 @@
+
+ + +
@@ -48,9 +48,7 @@
- +
From aee49279deca7a1bd511641450f6ed07f931eefd Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 19 Dec 2007 08:52:28 -0700 Subject: [PATCH 17/45] Fix cert serial error. --- fas/dev.cfg | 2 +- fas/fas/fasLDAP.py | 2 +- fas/ldap/52fc-fedora-person.ldif | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fas/dev.cfg b/fas/dev.cfg index ee5f177..a679173 100644 --- a/fas/dev.cfg +++ b/fas/dev.cfg @@ -54,7 +54,7 @@ tg.strict_parameters = True server.webpath='/fas' base_url_filter.on=True -base_url = "http://publictest1.fedoraproject.org" +base_url = "https://publictest1.fedoraproject.org" # Make the session cookie only return to the host over an SSL link # Disabled for testing. diff --git a/fas/fas/fasLDAP.py b/fas/fas/fasLDAP.py index c5dd9ce..1e29f36 100644 --- a/fas/fas/fasLDAP.py +++ b/fas/fas/fasLDAP.py @@ -390,7 +390,7 @@ class Person(object): 'givenName' : givenName.encode('utf-8'), 'mail' : mail.encode('utf-8'), 'fedoraPersonKeyId' : '', - 'fedoraPersonCertSerial' : -1, + 'fedoraPersonCertSerial' : '-1', 'description' : '', 'fedoraPersonCreationDate' : str(now), 'telephoneNumber' : telephoneNumber.encode('utf-8'), diff --git a/fas/ldap/52fc-fedora-person.ldif b/fas/ldap/52fc-fedora-person.ldif index 2852528..bc552a7 100644 --- a/fas/ldap/52fc-fedora-person.ldif +++ b/fas/ldap/52fc-fedora-person.ldif @@ -11,7 +11,10 @@ attributetypes: ( 2.5.444.17 NAME 'fedoraPersonCreationDate' DESC 'date entry wa attributeTypes: ( 2.5.444.18 NAME 'fedoraPersonApprovalStatus' DESC 'users approval status' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) attributeTypes: ( 2.5.444.19 NAME 'fedoraPersonKeyId' DESC 'users GPG key ID' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) attributeTypes: ( 2.5.444.22 NAME 'fedoraPersonCertSerial' DESC 'users SSL cert serial' EQUALITY IntegerMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE ) -attributeTypes: ( 2.5.444.23 NAME 'fedoraPersonTimeZone' DESC 'time zone of the user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{100} ) +attributeTypes: ( 2.5.444.23 NAME 'fedoraPersonTimeZone' DESC 'time zone of the user' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) +attributeTypes: ( 2.5.444.24 NAME 'fedoraPersonEmailConfirm' DESC 'user email confirmation' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) +attributeTypes: ( 2.5.444.25 NAME 'fedoraPersonEmailCode' DESC 'user email code' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{50} ) + # fedoraPerson # The fedoraPerson represents people who are a member of the fedora project # in some way. It is a structural class and inherits From 6c3071b439a6f279c320ff743752b9b2f2d8a93f Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 09:49:03 -0700 Subject: [PATCH 18/45] Since these fields are allowed to be false they need a small spacer in there otherwise the formatting gets broken. This might be able to be fixed in css but my css is horrible --- fas/fas/templates/user/view.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 48c2a0c..4b0fd9c 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -17,8 +17,8 @@
Real Name:
${user.givenName}
Email:
${user.mail}
Bugzilla Email:
${user.fedoraPersonBugzillaMail}
-
IRC Nick:
${user.fedoraPersonIrcNick}
-
PGP Key:
${user.fedoraPersonKeyId}
+
IRC Nick:
${user.fedoraPersonIrcNick} 
+
PGP Key:
${user.fedoraPersonKeyId} 
Telephone Number:
${user.telephoneNumber}
Postal Address:
${user.postalAddress}
Description:
${user.description}
From ac072093668b6b85d3a5db0255a59e8516532705 Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 09:50:10 -0700 Subject: [PATCH 19/45] description is also allowed to be blank --- fas/fas/templates/user/view.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 4b0fd9c..2e9a320 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -21,7 +21,7 @@
PGP Key:
${user.fedoraPersonKeyId} 
Telephone Number:
${user.telephoneNumber}
Postal Address:
${user.postalAddress}
-
Description:
${user.description}
+
Description:
${user.description}i 
Password:
Valid (change)
Account Status:
Approved, Active
CLA:
DoneNot Done (Sign it!)
From 0f4a8cdf0bc5cd5f5660b912d04a240312e6304b Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 09:58:17 -0700 Subject: [PATCH 20/45] Added a username to the top for more clarity as well as a cancel link - could use better formatting --- fas/fas/templates/user/edit.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fas/fas/templates/user/edit.html b/fas/fas/templates/user/edit.html index 21fcf6d..88923a2 100644 --- a/fas/fas/templates/user/edit.html +++ b/fas/fas/templates/user/edit.html @@ -7,7 +7,7 @@ Edit Account -

Edit Account

+

Edit Account (${userName})

@@ -52,6 +52,7 @@
+ Cancel
From 49290c296ad0bc6299c417f718de00ad20bf7927 Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 09:59:55 -0700 Subject: [PATCH 21/45] switched join to apply for more consistancy with the rest of the app --- fas/fas/templates/group/view.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index bda2c4d..c66f2d7 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -18,7 +18,7 @@
- +
Remove me From 1db629bf37109a2dfcabd23b6ceec3c0d35facf0 Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 10:51:08 -0700 Subject: [PATCH 22/45] Added initial reason for not being able to apply to a group because of a group req. I'm not sure how to get the name from ID, we'll fix that later --- fas/fas/auth.py | 2 +- fas/fas/group.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fas/fas/auth.py b/fas/fas/auth.py index b58a338..33ed4f1 100644 --- a/fas/fas/auth.py +++ b/fas/fas/auth.py @@ -124,7 +124,7 @@ def canApplyGroup(userName, groupName, applyUserName, g=None): try: g[req].cn except KeyError: - return False + return { 'status': False, 'requires': req } # A user can apply themselves, and FAS admins can apply other people. if (userName == applyUserName) or \ isAdmin(userName, g): diff --git a/fas/fas/group.py b/fas/fas/group.py index 1823f29..145ed1d 100644 --- a/fas/fas/group.py +++ b/fas/fas/group.py @@ -239,9 +239,9 @@ class Group(controllers.Controller): applicant = turbogears.identity.current.user_name if not userName: userName = applicant - if not canApplyGroup(applicant, groupName, userName): - turbogears.flash(_('%(user)s could not apply to %(group)s!') % \ - {'user': userName, 'group': groupName}) + if not canApplyGroup(applicant, groupName, userName)['status']: + turbogears.flash(_('%(user)s could not apply to %(group)s! This group requires membership in %(requires)s') % \ + {'user': userName, 'group': groupName, 'requires': canApplyGroup(applicant, groupName, userName)['requires']}) turbogears.redirect('/group/view/%s' % groupName) return dict() else: From 9d340b467cdfbef9f776e4e982523fbc9adbbc82 Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 10:58:01 -0700 Subject: [PATCH 23/45] Added some verbage spcifying a preference for a full signed CLA --- fas/fas/templates/cla/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fas/fas/templates/cla/index.html b/fas/fas/templates/cla/index.html index a256138..c3979f8 100644 --- a/fas/fas/templates/cla/index.html +++ b/fas/fas/templates/cla/index.html @@ -9,7 +9,7 @@

Fedora Contributor License Agreement

- There are two ways to sign the CLA... CLA Acceptance Hierarchies + There are two ways to sign the CLA. Most users will want to do a signed CLA as it will promote them to a full contributor in Fedora. The click-through CLA only grants partial access but may be preferred for those with special legal considerations. See: CLA Acceptance Hierarchies for more information.

  • Signed CLA
  • From e3ee49d9e273d3233581289e605d1a1d1db88002 Mon Sep 17 00:00:00 2001 From: Michael Patrick McGrath Date: Wed, 19 Dec 2007 13:41:12 -0700 Subject: [PATCH 24/45] Fixed description --- fas/fas/templates/user/view.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index 2e9a320..df8d389 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -21,7 +21,7 @@
    PGP Key:
    ${user.fedoraPersonKeyId} 
    Telephone Number:
    ${user.telephoneNumber}
    Postal Address:
    ${user.postalAddress}
    -
    Description:
    ${user.description}i 
    +
    Description:
    ${user.description} 
    Password:
    Valid (change)
    Account Status:
    Approved, Active
    CLA:
    DoneNot Done (Sign it!)
    From 1847311f026ec3898af1882ac0548da70c9da781 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Wed, 19 Dec 2007 14:06:00 -0700 Subject: [PATCH 25/45] Add toshio's fix for the incorrect http redirects. --- fas/dev.cfg | 2 +- fas/fas/controllers.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fas/dev.cfg b/fas/dev.cfg index a679173..3f500b7 100644 --- a/fas/dev.cfg +++ b/fas/dev.cfg @@ -54,7 +54,7 @@ tg.strict_parameters = True server.webpath='/fas' base_url_filter.on=True -base_url = "https://publictest1.fedoraproject.org" +base_url_filter.base_url = "https://publictest1.fedoraproject.org/fas" # Make the session cookie only return to the host over an SSL link # Disabled for testing. diff --git a/fas/fas/controllers.py b/fas/fas/controllers.py index 4dab435..3b6a1d1 100644 --- a/fas/fas/controllers.py +++ b/fas/fas/controllers.py @@ -60,6 +60,8 @@ class Root(controllers.RootController): and identity.was_login_attempted() \ and not identity.get_identity_errors(): turbogears.flash(_('Welcome, %s') % Person.byUserName(turbogears.identity.current.user_name).givenName) + if not forward_url: + forward_url = config.get('base_url_filter.base_url') + '/' raise redirect(forward_url) forward_url=None @@ -84,4 +86,4 @@ class Root(controllers.RootController): def logout(self): identity.current.logout() turbogears.flash(_('You have successfully logged out.')) - raise redirect("/") + raise redirect(request.headers.get("Referer", "/")) From c678f7870b7ebf7740bb6b2fb9c9397285049c0a Mon Sep 17 00:00:00 2001 From: Mike McGrath Date: Thu, 20 Dec 2007 13:50:39 -0600 Subject: [PATCH 26/45] Added updated network information --- architecture/GlobalNetwork.dia | Bin 1465 -> 1697 bytes architecture/infrastructure.png | Bin 98551 -> 98773 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/architecture/GlobalNetwork.dia b/architecture/GlobalNetwork.dia index 91071a2fd82790edee53c6cb43c096ee9c836d85..d11d52f35ee4ef95a5b3e2ceaf16a1f43b82ab5c 100644 GIT binary patch literal 1697 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 Tw72qt@oDcrKttO6gfsvE(`VPd diff --git a/architecture/infrastructure.png b/architecture/infrastructure.png index 63b10928f2ee44d50700f67f2da54a40c63f14df..9c2df4c3705ed4935532b5edd9abe4ce847d3e98 100644 GIT binary patch delta 66530 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

    Wz8GRtg3YB~qs{0t_q^EdAbA(} zwr}oa*)RmF3frjDyCr?Ru>{uLqaq_8MoJpStuUb;T2WD#Q=_4JeR&-yOaverd2S|9 z|4;;2X;L7ouhK{17a`X~z4i6QK(dW-kyi4`f7WCq*iSrJuNlfh?=mdb>e8i#UK8Xo z|C4A^;uMm8IEZ}iHCilFJrrJESlC;~-oD!_z-d2Gi=6nKjzLE&dH@Xfpy;~B$FTZG z>igt>U|(oUq1ULt>SR7j(W@urC6#uTmQW>EgR`1Ut`Tq!ugU%0f@fo6(|n;;uI{`) zft*9|PRN7kkdj(jQRKY~t6uyRo_wW`P+)5hYg7)v0NcWtt;-`4E6dVAx+jr(zS^9; z+-puX+`qVJ#O3BHDh5i*_xyW<&d509I;=71p4i|yHd$LpiYh{~&+V8_me)L>m;G-= z+@J4TT}`(stwG1e9`k?90l<#q{iSJd=HTxs~})*{fJ z>b!};krynZ#?w0d93Pp7vzk)^D2IH5>j&6_oVz9iz9H;(e-2Pl_wuLThs~r`+OHJL z;{+-}qvPYtRsO0zJM0-69W7i{O#}-A10zfzbo}!t1&DJ|iu9koQWz+n-#0%WPnTFy zclm5*tKXdbBTUEWhc$JVDOUivUQ@SL{irxNIT<5dn%2>8>K~U?NsL<_`_V8W?udwp zUtd=aJ^CL^`y)|>5@9GG?N7=nzy`wa>950y>a&xRos$#VV-mq5P-HA7KhRBL6QeLx z9OG~jC@RcMD}JCv2st3??azI_Qd|2_nd|cbe{?)O&$x&swMznb{XGj;DtYBgfF*a3 zXNrB02W1a8>-yoVSN{)pl2+axX5(O?T;9XWi#ubIJMS3GSfLVe)u?+mBUQJ1YCMSM ze0u-#;v&j3hg0P*6df665<$|yKM{$;Sq9i(Af^p@0pqm|D2MC~ZZ+qJZ<05#pV{}Jy=wgAoK(^McaaL}6Y)i|Z!giSN^jDIH$H&9|8z^#a`d_&B&>$%} zAf5GEeZ5(mpgkzhs~ZP@->DW|2|iRjN&@NpyC#bi7a#v_{+(q0NQXd-o>~@W-@|z4 z4*7t$Pmd5Hnqc=k+ zG&sK`oo*q5nySx?`--P=lad^SkUw3G#1xQ*f04ruDE){#r0u=1wRK^iAt3 z6IAW|CJBCiMY~~1UXibb=S0tV^xz`C2|7yTchu&$&m6rm-@+d9SAyGD!i->wB z6dRIoTB6mbno6=)79f=qKr)JQR;@#R#DHv3YPUY??^_F_wFwM3Jfk1KTXQ1US)30a zu-~38*J)WYy%F6N8WqpGNNVALEE}lprUtf3$4ZZe5MIYU*}?B2h=Hl_t2m8Tf2#2^ zx$Vd;v|~uY>OooY`2QZcxw(rr6*1RO$O;gR9m(IIuJkuoTOAC$bJs6cEEp4@eT-~@M5w53tc_kvI~EoxG2Hq9R0l(q1y2PljR1=mg$rS<8ULm z?z^##;6{rh?`7}PU1{mPk)ntvL31Vv@=`UD;v)h6eXVY<|2TN;<%o?9J%!8+ zjCG!tyH76I7#S%OuFL~`YP`MmrPO4@Y9HGpfARdjnSq#tse?7yOLkF~pQsLq4n14X zZb1N@$jC@OpboiTz|P6x*ez(Emp|eTkUGe6e>)s2nbZ-752V_ZMg@%s4rCS0CK#ay ziVDM4`QPyEcHJ)tU}0gg`n=qD@wEm9LOgwSrrNGtct02J7soK_)>r8f2P37Ej>XNF zkuVBx318f7iHV7U6S&(RjEeXTt&XRo*G3zuT#Mo2;i>BBO|9p4O|uC2kyQgT=DZAG zOMW#tDhKQ#0*9m0gdo&t)YzLjWEW*9<#`Y@NFNG^S%K?5JzrNg)G_H}RoacLtgLYk zpeTGYcJ_qN_a{WW{!h!W8+?Z(nLsvi=Y?PFFNj0Dlt^SkiTP`Bhqxb34rBWP*lp0G` zJabo9&Yqs0C~srJ@$m5%kGBm9Sg@HNGykktF)+~~6K#6Fi^^r|pj>B963(+3a@1-} zu3+8ZfqRdr2BkJDHCkF)WuF^OO-+urXCR;jP(?I#iuu8EHOTMtZ9K9?0nKd8<0G%Q zcsPkoEsfn=E@YOIlT)kS5_%sd)^y+k9?%q#r`6a-&PR)}MM}66vqE%5TRD~`AA;M8 zyO%Mn+SQqs$>VVM`Mf>JBPJC+CU&jb-M)Sev|n0kCq!>ZxP)UV;1Opp3M%s|5apb$ zl$TY(MhlTCo09NAQloS>q3_Nr1|pa1S{zlV_{V7?S6Uja;0|N(r9mLCeOD?xufL-k z6N?R8L3PYt%w!DPSnksDx1OGys3hsDzebPh4K-K>#-$cfG+ln8Ia8YUm7yGnhR7Iw5vfM{f)%_PNCUQm zcSV%}RM@bmtyrjOIBxy+c>-tUdajscmDVSE8(I}pnKCzW{?Lx>=akjbO(iS9Gy^Pb zY-4lt(Bv9y{MTf`z)$q0XmahyOqUiGDiR36+B!N+%uJx-7dZBfWh7-T3eeY!#Ofv3Dj<@_Cfmcu zLowaYz5$^8p+C1;6B_$>AAeb?s@Yr(%aq;n; zFZ$SeJTD10P}}~}cVb7FglOdz7Qx;rk%Gtjzy!+Z!9IZtPzKr2?;y74v`xw7=40sbB^4VV26CKoQJMjCnsw0cHF!|ppv zP{>B^fbTdv_eKkjv*6;q`lX0ACk2oa%rkNYALW~A+|Ma4D+4(dj?Qy;+nu`qMSG>; zUwAXs@tVcDMaXgx*#9#Z9c}1fwx1FGaQe5@fZ>sovLq@i&@I$0+Sy#3O9H-waPefO z*mN}J#o-2L$Q=ijd6tL~=t~1dh8LCerNo>~K`965HWNG%GjTTQCIX%>SO0f3B}FM^ zj!>LAB(JhEGBcAP+uP0jA#1*u6YF(65||ADUTmLTAR^RH=(k--REFs}jc)xbDq}Rxelo=Zt{=E+ST|!5hSk5QI1Y_a#055cDOU{xmP<8_P+s*=B*1_ ze4_OSDe%rGqOFvpx4Z0cOSArb53tnF^}W zIQ3SYE*v5`N|I^@w>3JCuV&0@s56M!?(Ywf4@e!Go|e?qOr=vRVRb!G$!O=HxHG4G zGk@D?cY*cx_Vy%8{m)KPW>!#CynTEeURl9OmXmaJWObPG4ubSX1+5)vB%N|AbCvo6 z-`|*$f2ykkOiaj^mzVu%>z{dTqJJla{c-tkyzFuhL~cOr8b>7{DfP1@>ODi)iG?3Y@g^Tv56y3rnH2MVZT{G|a5b zj9oSAa_R_-54=|z=Ec*@^tj3)!z+MvcWBwMHe~M+T#<){-@tGIoUrnCx@rB)!u3VfG3-ve; zyOK&!=ve~#m)Eb8las~u`k|pAR@(#Cj_2zc65t1TU*`QbB{%o49@SVjb$aYf9tRjw z5lTbcj7=&GqlmbDJt>ca!T_K=sHWqqj}K7r0RtG_2;*DFL`#knw087ohFg^o0XQFU zpL*C+OfdaQ|24*1tc2ec1sDb2RPwH=o63^f<$Hwi`tL`a2;YuBS3nb zPy=Z5L^#&OV!VN6xY%Ieose}64dVG_t4dcJ?Sl_|e{b@n&>{YC3(*<1` zXuID@4+5KOxPJZm75$`Fuvfs^We19BN6|*t=5*L1Bp@JAP*h~&;4poRt#oSogT;qH zb-b+xZ$l~!q%}Z$uvze8RmHc#=wIYo7+zd#5}Vn-MBOftto)HB=$Swy@F(wQ`G2u- zGBPqwcpLGE-w0x2Vq^cajFqtsa$ot+MGRwyQ6inUbk1FEbeb&lQ?_ZDnU5CB)uue% zQKkiWO0`GL6|}iSR5Dc%J`rDUGfD6SEE%&q-GC!?;bidj@J%=NV(+PpgV*am{O5rM}ec?4-48N#YMH?;=e2-U3Bu(2WHtn6IY zi^puc?eLTqRHm+*pcMn(>V*h3L!U3`l+_e1DJ=+TeOGM z<*=d2@U)W5goJTYCHkk2bEgC>&WFcsavQPv4JoN*WqW5)x$}A3?jdrv8P6grp=aC18%A ztcnU+OG^vZj~^JB7?b&hVUEo%zX#gjk#Jc>d-`M1%+1X?trnnYG-(DL!VoD|>tO_V z8Sw7LLC*P-AW$%TK}&}`)%r#LU4@Jj-1wB85mbS*rnY86D67ii+hQ9fdIH_T_3}s` zixj1DnEWxJ{9`4;63my0{X%8RI`CY6Gz|<1yq8jhAL+91^s+QOB4V%6L73v@59_Rl z$Y92$4V()S=5s-MQ}vI-f*-5ptI=zT25Pt`xHlIdi&Zxp&7}oi-!Zvq>&4^xgG?%{ zQ5;hn^T{Z@?|)ikc~E>jdhhp_ zz~2%@31F!3D)%ZHVt6%1I=46eI*)zrV~>db7v1sWY~o*PX%CP*8rTC&H>HsC7}=^& zyGg1lg-QpV)AdnIemWTtMiGhC%0zs5fzfB}oz-*%>Fe{^u;=xN0L)e3B*9x4C)Zwh z%EKLIv(r7*!JfijJfHMH3NF>bpk#808LJIP-LQonjLrU!+(;+$Kw^!!M|qffgCc(N z`4Lcp^37Vs(;?7=3p1D;u=y>!Ae>3+%-B_?-Lyw4o_iTxHqZowRHZ8s#=>of^PDHN z-sZLMawSTo!2hc~Fie0`Z*3Ja@Jr14T;1|NCN3Bm)!Q*k1l&Hm=RdVmtIh~K2o}|k z{AlRdMa1H}?GwvG9Ybm?=$CQznDT_f;<4lY6f$ifoqS1NwSGIda=AJN0cNB$0jh~# zcz$>TJl*F{6(CUpxm@RPrFN$IR0ezGtIg4h&6e)(y1F{i>lWh5FTLTodWkv*9sFu` zPR@gBp6vvjTNg}BH?L}3JVkWa`;gaD-21j1O+d{V`cnEz|8<@2jCH{ zX;jsh{Vb=YrS&l4C|tca$6Oa`=@Lr|xIyR)T4e)r%)IAXT=LkAyHuvZrI^HvJ4c$C zT$+YAfc8@QnaByrK{HY2lWR)Fw-UL&D-47@!q7$Lq(?bI!nmk&Y3>mkY{<9AhO95NOf(V5yeElo0+8P1oSo zcjI=mmTlXvW!tu~uxx#D-?VJImR-xXmzG`2cKxnB@Adu6siidOHM_;?%fPNg^T$ifdI|I{g?e`3t}++*hEfh8GK zc7UOLgPlv5UB0VaM7xk{eNzjt|8%~Gc*b5gM+A6z@fz1Wp?|UdG8{`7QC4QXD3z`@ zhP%bKe{^(vBAwT8y%t-TsjYM3*;2LD-$b`?aj)}DCOs=_Z+~ZSA1`TcdFiNfrn`S> z>0$GTWeR|=^)O1uO()$O>&@h{1A##CuBaBH<;XCIxV?#wX{@$qwAg@>A?Ov&b2PM= zTDFt#QWKeoPeM)2CVg>hE6*B6P<$ka$obL3`ohk&-MPrmJnL!DOEuy6gI;z7oJZtK z;!V=%@~AXJr4_^#h#C#b6NP%1tF%d~1Huc&!FTn~A>bt~~`$;Y1 z(+mXrgC(4D8yPv7H#s2YpsH(J-T_A!%zTiPaE}H*g_p=MiZK^@qJ$+(94iy$CP_(| z=GLq!+q0$`OQRQBKDkSUH}<{6^-cJMw=x7ZQe%DVYAV!Lv#$cHq1>0}6x~bq@!;F} z#mzo}QX%0K677%C2JJMq?-xLml;_#V52As!wXC=4 z=ePQ2lqGw^+uqBy)zx~p6E!~fzo98zDYP=A8%sj|FSBJcMfzp;_xC543nUz_9GRZ> zN>*0hMB5}iA3@P^Uq07vguTImc|z?Qs(7-!9Ti$kg-p)K?^!Ku-ZvHj#@GB+U}|K` zG-+siHkDWHU|;|#n5=}ThO~*PX`fwf*Km5hdHUmlfRd-c6xX{Qh7 z5*h_uTQ<2j6{zD4%zaTkI11QXMw$a->PpP9A)_a27WD!SvQ*sXT?l%m{`6p!UCl;4TKHq+)$tb~)ba`Am{U^&8p2JN3TwX_EaOvM2l_CR-qJf8Rpy-WK}S^!?X8 z)E1(H#)uH`{SPN%43bQ<;z95<^k(`ejHIL_$_BH5Kz3)90577^4IR36U$9aI z1Q6KR*!J)440OwCPEJl>+e_8@P4^D+9#Y(Yh?-?Pa>D<+NM8Rgl22pajT02Xwoo1o zUnU!+2SH9DJN?<_{8>$pjiNi*u$-E3lqRj>feMh+zT--JN*g_&VX==`Aq-puAWCU8 ze1+tUIICEF?3DdGoKw!<_S`mCB8_vg-cGT#A{AWK$#|oD5G`eJVmWFUWFb?-WG(|E zBjs$s<>~Mv{!s%)Fp?Bk^-sGdLBY8;4g%F)_xFslS=JN6X(5vi0SV+@D2av-8Ty$B z6g_7$jHbj z<_b@A+=&hIboDt(5n z9hmLd&JSm+5e{V)6=PSb1K#exE1`(s`qzQ=&N+?p`T6<&$^Mv4ao^kiQSJm8&tR{?_+|J2o&`+>Sq)B`OlvJvs8%gRs7 z!~G1eRUc92;zuQ#zaE(Q-voHk7DU+LPTN(am%iw(pZO(ms9HM_91s77RzDzE1K{e8 z&m~t{TX4L=hb<9}Q7z_>=f30hqRS*BPW|l-cQMqR5Y;D#qsr0$q5^m?xWdtCtd_+= z>?rmyzY7zo9vlfc>99{PQ`|5TKm2AFPqrpPc%wrr|0VZ>nUvC~v7(bbna?CNK2-tS z9__%6hpdo_%F>#uZ9CW_ky|_h8Spnd3KT0a+364Kr}lX5-Nt~DB}jK!%LF)To3C*oNBWp^sx>gwdQ{Ytgfcr%p}``1W8 zpEtHiU#quh1#TF(^UBLLF(@s??%j1 zjgdQNb@0g8k9lid8j+u$-yyFjb__mAjpd0hRHz4%oMhVo53+$|aiOjfH6=uVL=5!~ z^(&lSIggKKAg%15Qub&-<)v$}mn;&K7K}t<_ny;MtGlVu!d^O=r^XH%Bk~)e#Ct=@ zcufdH;g@^36Qg7KL8ajD`AqV{`Y#%oxVVBooI9=k&pn^7J-(Mn!~(cX=W2)em*_J; zjkUQl%`cW~NnRf=_9h;Cif<35O<<*!2yHk=%G4@onVD;rJSp}7if7l2y#1{)=?UfN z-6u27Oxt8Wl&HZ*`YFoT4H}P$=+=Knws`RT>T3U5l>TznqBgff^trO4>$z*w>#XQY zf5*{yGQ<Hg&guThKOql5{IF`TAV|5)hR*)s|VnPKJh)JDB-c?Vw(B9tOH&frC z%#l|3;$^YnZyvtnLX4!yg(JKm`Er1Rzuk1t1UXu#KY3jZI7c*;Vf2j|4Z@jL2E(Ub#e-eG-J(CE0p=245 zWqld}BPS&ng!pej7MG%$otq=u*MkH1g>Z7FtCiGgccEhb!;GkcT)sJZE8!J>PZgpF ztNL;QRAnMRWb3TsDccm2qo7|>vfHn)s;Q~%6TE=x{|;zULQ}E*ao}u0(4Sk&hZ;b0 zzr)h#ftaR~=n4GkguzQDi02X{Hp@IaEVx26WR0-1T3b^i3{Q4Fmtf=@q_460_7e^b z9xw8RO7Resoy$9Ty$o$w{Qk_4)!S>Rw z!TGBD-re2dZ#Xj>b*5Lj>RL!yH#|)1QP*ZFyl$S8WDt(9ti*kG-jE0Zm#%&zFG9&0 zO#c3Kd48|(?>=`$j*s1wIlO70E4cpqfv`BbLU_GMy(SOasoj(41IhnOzj8WE00FwY zyL(W2X}ixv(nj%B3j}otC*g8OyiKyrA|d@JbC-`5xuAlXP2>VhkhD-8DntsAoV>75 zTBbxzvywal@jhX?`n1($=L(w7_%g<*&H{=KRTavA8?3}qmITUfJSpat4ZJDkPx|Ng zAMy!bLPB5`%DhQjl#WEey=VoUfVXAU(X9t{Z)vMQOcR_!u>=}1ato&S9(HzDI5gez zTD8A&k@gW}#c1xL))KNSFK!UVsfW*XH_MghIW3*M_mT>Vig_>IbFGfXoImXHUBzH0 z1XKMU&pp3=;}lA=S}0ZY^6{Ck(&T7^xpugQ>VRFSk>)QfDk8YkL5M=Q0{q8ta-lcF z+tzuF{O*S$YJ@MlZj8KzYV{>9x(z_sMAgRGx8yZ1HKSe)q@HT2WJTa;1O)QQ^godq zA$Kel#l7^JDa8v*u?{s73zCDcK&idB$0)6st+QuUvU%73vszkeR3%^voC-QEZmSg4 zbMKse5$7*{J7afDwDwDx@$@JW1w7j6G4KCy@A!bPXo~vMF-v ze&BCuj+;slF$%>*5~O7fdI&0{)d#P7E@EI@9Li_LD+yn_XQAB)P=kw$%XxfRsX?Fm zSx1;s5!JUDa_v^rd9ptkiGjyui}{+nK|`(rL_T}8E*tv%I3DZkLD~JQ_c`qD?98^8 z7DGcP2>%lG=s>--zq=C+WrVOF(kf&!-zK{_ZujhazeOnQpY8qS$eH>Yv9ww-W5d5i zfHsen7HskP_Q+-n==XEsU2|6XA$*ds5>&BQ^@6ec4 zSQxBXL4LRQM?gf7nUyC!cfy~VGcfz<$Q=6nb?Bq~eHUQV4N7 zyoeH7Rm`%e;P)ap5`**&p=3W>{6`-VP*nr51q`%OK;@yuu^<&(Ir9zlgar<9a^B_! zWVD+KdkI$__pddz6gS9H+UwR?uHT-{ky*mnrtQ<1ee>szb*^AJWyl6?_a$+vDp1M=Ii&erECgLe%)n3SSB|U zY;5|c%I2S|JeS^x_D4hF^2a5YH>-f?@kR$vKtO=YKT1gWVDs9tL>Rg|xe>dMErNJx zu{a4@7_B_&v_K%C1%;3BinVJn1}+wU{ZqscA|S|-?0tJEcvC8*3|Xq2t2EL=be*#! zAFdALJheMG@Ij3WgEv3lP9=2icg$6V!(^bheS9oqVL>^O#&VRnNOgyNlAxX}9+66v z-s2|peXXT>?y^?D>j#=FMVp0Bb~#7tFdAa^!NSDCvcWC}xt$P+Ig$yIg>lZGS{%Nb=fy**QKy8SEz_V_ zxlCtp990QgS9dMHR2QB|?h>X3o)fiLBvyQazoS(mbLB{p6~cyc6{Z&C?OthHz!v6G zC*6cQRzwY)2hxTrNsSJMs~O$ploA?~0AtS>%8N8exLSh2~v}+7Z2f~r6-u$UXeh^_mfMHE=YHSnk#Td2`ow8KZu-0890+#H& zZT<-iaOkoe=!EE#?WRXRwG%2(gvl_qej+>;q27S3u(Dre4rp*xw^R-pV~gK910?sO zwRys>zOZ%#Qxt{dcZp_ix#!j{0YiI9#A!Soc(inMrl(8QjC#L7=F)M_TRj(hQ%74> zT+&@lP07K*5R6Prr|+Av$b{R*z~>_i`Lrb1Y=trnYuH(+y@F;bC5k-t47u{>uV78M z=G?#7tN~i~zYU$oKSir(SLl&_gbLxaXvFSEyTTvm$$x`t=sqvYV_=PKmBRQyI(=7K z!&2ccF%5yf`$)(-czANG+qK!ty5k2{9jdo-Qe;n;SJoq$L|)$BvPF)f0465p)rxr> zT6MIQ@~hy%Rs_H4hvBXFWyWKTBmeDC#vAryRykFr40fnQnA5k70;x}jWA1zcRasTc z6wFBS_j);}??o$)#JCx_s_1%RE-viM%*;2Xay7N2qhO-sHc~AP8{-=&n~DztjVW@|jevF9~i=6Eo z;zu`NMsiBHHWLukE&kmh(<0OuulJz;{6iZQ(TXloOp2L{j*1KzUDE$Z3DoJs&4DM12FDKBLKglBsaHVuJd>_L= z;{P;vubH=>YylAt8_&U1=Hg?(eTQ&4bd5AZaGy;KJUe&CzNM-?s?7})krXP~)SxTS zfb|S0GXQ2wz;E63^z=~zx(ZBE87zv(VmxOjr+mXSk60YSz}a45xy3(cIhYZ4m}W2) zJ-ZURTXlvoW?Tg^^>A33e=&_aQ7cg`_angyygb-s>t%1GTG6Vis#w|Ce_|2_9=m1b zan>&kiBt!BaHb;{=~)e(Be286>PWMf(!y1y}=`&iS?>mB*&-a?xZ&bBa88H`2uJSFV4hN^T=IdT=3ccieTd8iBIls zfdtK#Zj?hYt=xZPfb-PaK2bzbD^tvqcZ=>v0ueIrGO+!q&{NaNI9tsTSOnUmS2x;g?ej)=B+IIdg zbmb1bHT41Jd|m)6iO?q*h4hbPsozmg$5U~v!gfX{9lXnYX`|o?3VDJ#$H(6`{azG< zKjDYT6%#%h!jG@MxwyKXo&}~Qq@|7c$E}Zy@1_v8-GZr#7t+_F(?mb^bpmfxu_@s( z0eFZ6LNSSniBet2b8~ZqLVh~J5p05i6FPR3+wi2Hiz+(pM5a_j?-qkBo0=Yx#g= z|6rrBp;=Tmh9Mb(1xR4_Tmq6+BHu+hU)DlL-;Lp`#EWm+)S0&s3Q<=YCmX>R_Db7o zJi=OOKfPhS2vlolQHM#@Le%V>UWk6ekJ=Tbf(;AIWpC&7`Mp0ZD`fMk;;S+YtgNKB zVt0lONqt!vx!2%~%?ZB~I=Q>p$ci8i012nQ_vL6`3|@!E_l$Q@qydlEon?=&7M7Mf zyE|eY9^7DM%6ZglJXznOkAG?>#%U0lNDoTHCueEc@f>94em`BR7B8!`Um1`_K6-n; z<>_L!F&xFDh%Al_fo%0~NWZf$CY*7T;8WJUa7(y(5s|ofh(%yTOD@A*{OwyHe1%ik zt5$Nh06s@T7CMf!r~uF@zn3HM%j9KFzq4#8mr^H8GF#@jnZH_fE{4;%<=jD&|}ctGY;G1*BgQ&AR{6oQazLW zk@T9Rl__PiB?9A4A|d7iQ9)cmPP!T@WBx^DSR>{p+o^olB-e@SjNY@yg-0Lfd-d;6 zQUQVN#6wIA)sFxF zXH$!jH~pFXwee79pdCr2LPOwnw9)VOohQX8?gj+0{qtP&a57`yr)DMYR|`tlyqt;c zR+vV=XTW9C`zQxL?)^zR&b99eLI7&aF6o)!k>yPBJZyf6%rd3|&D~O$9L_}Hp1byk zT4T<6)2+=&d(u%|ON-Tq_3dht4@Rz`z?l5>fW-IUu2?})QBf#p=!D$d>7*F}*_m#^ z40cPo5^p^P?Ta&0( zwVvc;7%pNIqC`*wK3kElDtBwgjXEM@nTx2Sq*4^H?zb-EBZ3mfs4p=-=Of{>&M2t- z0yLrbZs8Ihhbr<@eND*Bqz_JaxNoDiRQrh)37vNC-$@6&?W5AQ$FMzh}UTCbohjqos(lHczCrr@bzwo zY@WY3`tm9MB`Z9I;7E|xXG)u4a|y^0m^H(rb9$tsXwlK^RtY3vKO*5+<+NM1X>aOpCzEuLkyZBbi zI?7>kAGBDEEK^NL38X{T25ClOL6XBBV-bQ);;}`j6-$&| zO@5iVT9wXQJWcQNxi6$`1Sy&GClDqmXlY@4dwZvx8I+fLATe;)Y4+!GE8VqB21 zvZ@Gu(ZgjgPLjdTNTN|r#LO$+LfoU32zZbP4VM3I>ne^K1+Zk=W>+)IkzRprZtHG1 zU<$}@u@@^FIg{14!LmP2Iiqn{s9h8&)1(Y`Z;mGhTcW9$*^xg@0Q+Y?SCPpNY7A+{i3x9fa7=P&w3biAID%5hyODp zTDxsz(B>4>2DI@iW%G(k*h5LZ$4U@M7^>2lYkVmsP}FVyh7}+bFmK{uu0fAw-2F-A zsN|iLzbBgVxuUevW1dZMG@ZA1lm}2VF;y>_zCKb4{d(fvtyASrJ)TS)KUkvXFF) zj26EQi$>do#d~%~#Uv0UjR$}B3P}*Vxns~-4h=`b(Tzr>Q&@?7M`J)*f`grs^2SBd zBFx`P1|Cnu&xa;n__WYOcyT-M%y+DV=yfD>qsep1pu1tko5^e*%T#|ig1k<>QhVyM z&k0&@KVC13)GDs7ult6FrSMf5My98KtT5CQdh#mOdpn==M+ z^f06mX0^%dvDYD~9s^1-!tTkL#2132qodn5z`=w;w_k>T#Dl7i8m%qe+21E(>RvQf z5ZCs(^wwbk9*V5F4aMEbM#Ps0W~Y*4gm$YGiXDX!g?az^uWtLO1s!7T*5iU)#1p@N zCr4t?G+2zG+jF&G!eA|(TX32*|3+A*)zR1yvQVM+XZ z0n?cQN-yeof`o~3@FJb}g}?Ob(e%5!yZw+T0=>(|0aH)cdkiHwiugQ{lR_C{QjoQFLup1`KAPSN)mrlQ_V(46Og6m2?{^sW_4O{$qU1ITziqh=l@58ZN;GAK z#Pr;fZ+u}TL|3}?9vDjgVix^Tp%d*V0P=4%`yw>D&{eUZK}KJ6ljSReWvqP&H0tS( z!G=)XJ=>KeSKJlNHO}ivL(~EbO>+Of?Ft~=N|3igeJC4uXiK?C2x%!YHM(9e!~No zJImeOUASXB5#P@TgEpsvadSKZf~2IRkj7ZooS6alRtEVVgYh8@oc7yken(`pSJ9_g zC#`IQzV;Z`eZ#2%ha@6~P2Ij1;NbLLDf0IE+H|f^5*IhwbDNQt*5oE;43UcqRG2#_NF4TNPMQRbgoGvbXJi5w9J(w8EZorZP(I|T z|B?mDc#RJiDM3LUd-(Xv?=CdHC26$A3brUntiW_rF3Cv`{`Ui4F$-8;}$EmIlQh+!jXxhl*)?CM}Exb>(QP6X*So1GaaNFPB_Zd zcF42*n9c)fvcgJW&i%rjCyH2)Bn&Vtehv1 zS5O#Sp25Lz#juC4*Xj28df9XPp_l~&3mZ+Q87E~imOJM6HZ`IE#_T{r1-yUukQ&3D3yD+w#970(*VDw7zh4t-q-wrxS>La=m_= zdq&Cidy`$?7`pM&(ZNL#{6v-ZB$2!Yh2yT_&WhQZ(c67=!RS{rEnH*{-<>Sfx3;E9 zEsd6gZA4X*dvU9s-W*ie zR4W9lx0mgo!+m{0^YdzQ^73=G&AfbkKH78!65CmeH{>)5$@$P-K)68GW}~7~qTV-?bi=vXTVeUIxSf|1CHHnZrJX<^#b0?KB7F4{(dK-;@R(O$m33kBk^j7*a8&M$X1 zA8)71yJou}ggA0`vc%BQ8*ACsNB^>q9MBmK-LNHA-iU~~NSd7?D>8>vTFGA6k+I3{ zU}SnmhOD_ASO_eN)#YZ_f0ghzNWa8vs1WO4rDuDLA^Su2OMsO(F24D+3gCTOjP1q{ z5x_mbEm$oOq&GxG4aosddI=1$j3-&oT?(qdZqv#C0M^N7eucy4oh-V#A~e@!rb+9zXh&+l!O z^Ueqe2(0xyXnmr@yk}0^JJQ5feRI&Pa4ofK)BMp}JF!4d!Sa!S?*pS@hsVJWSx=KA zQ|b8wN|$+;L$4@t?Su0K%u<2h6r+h5H3a(dnOvI~)bTVdRuXE0B+hE#?!R?fkJ z`Tg}#deLww1KD~oIxCby!O>RfY=O*e$CIJwl~%M5Rl;W&pp|%;J3x4iDgK*W)B|ow zwe|+?dgFh?Cd*y0Zvp?OKyR+?9JicN^SH{*1h$2{<=^MOZWe*H{Y_w;O=iZ1lM{~< z%_2(*`ghs$wX(oPaE6!1oCxVp-tnv(L z3@?P-lyWl!kfp2a5o@nJnO;uc-$BQcYN`0SaCC1f&Ss;>9PMRAF?Y2(yu ziacwDH(dlSLZNw^?~%Q|B3(bS^77(Rnz0pnCMYF5 z5j~iHbUweG8h`$hRr|fRm8IZLt&7ok>{U$B_3M5YnAsPmgJbSB?Sjne*-*IL?7HVm z%iyqfIa^_y%$`!wFK27zqM>3AOW$KV6aJM4-UVv_XuUk%(k!qf^}B~%Q5VwfkkP2U zs|{HMcUM6qzc@sg!9t)z(#FzL75lAyi~d`A=Rt)09x)?%-r4fY%n2N< z(#3${J|w~4?W<(9ui5~LQ~IgTRbYAw(A`3VR!B`oxRbuYnNyOT)Qx0NOG-)F(USiq zfS9k$joM9~wzRZ#9!#J1RN~UD#9%7aLUcardJyT6Pkue zQ`D_1(hl176VAtJb8tCW$s75$T$95IAq#jD<}X~ooYpq-yYRq5plDjWv>UI zV_;ysPqFYk`rs?$(I{n`+&#^;xjUH;+#q@R`f9g3Iy)-Z%0EP7rTAQ}e)`mw1zyw+;A; z>S7I-^|?8ja;t4ZXvSX6{2h%R3J&X<@ow-vm>&`n=4J<$Wa;bB<#u04XfFKF(nRXl zy~F<&;oot&kiIU%mxv|8X~DvU;`WGzxXV2?%4iY}cW4qvmYxTn>VekfhUVQ6Ruhx7 zF0^9&disD(u-Tx3t-OAHY+&y(AfjZ?AJpF7&e@MGXJtj*CmzzyeisGj6OFbp^hk~n zR>lx?GsI$z0tw%jfj-ADNhtoL|KyVq(cF#c14MKg5^N3+j z!26wxy?m5huL`F*gX{hm3$wG%fHSSl!cK3rHcCc#=#fVOW*2u zxMr(SRp5)$tPDlT@1bzTEQ!wfc0m=mQFi+1ZB0PQj;EJw02PhQCfc~I0yi&$1x z*2~w|_2FsNN*INLg5saJ`_<0C+=&~Za6tB@cEC&&6~ib&8V%;aU(pJ2IvgIO{j0Ho z&^tKr?LW~xtX9aFfd-+&qk)1_~*`- zA`gABRLSO7+(c+H%QhupZN<4fT0AU@E#Pc+!iOu{HxUUq6*iqBjqc7?lZ1h%q>GJ? zg$jL|UGm+!i*HlM8AW)rc3}S)GU{bYUS5C~=Sk?uI?Z9j=UG7Kuo z`DT}Il41N*cr3vvz}b_V0K5NV+VTn`#72Alhwh%$^=J=qfqI0J!28OAjz<&a;}3&$ zq%?UJjFqpb-?LNGK3?ai6b~!{NfTuL_Fn}JoZQIc6f#RBtkBg5a1_FWGNENdWB_OR zomxfU`b>RhJbEs;&3u&TpDuIZ^H%)$kC%HAq$~a@EmUJM__2}10^dEt+9GY~9}Yrt zs;a8d&P|j|Sq>Y&oVRLAccK~Nsry^rzwB)IDwxX$@`(xymk;Msfw#|$mR%~AYLz%%@ z&@X8Cu-;lwu;LeQCISgIL{aIO2n)@h#L|=n07I+g{ zp;3N)?%G$An^^dViwDYk*`FQxB3P5`nPH0ANYOYfsWuMiU9;af{obBOCIM$5qduc_ zHy*N1L$7uY1BmcbMEEbN|(+2`K?VLC20$brqG~ zy-)9KlAcer!!6d2N(MDxTC8exixo=PMwi@%{I@Mv zobUs0oRU|v2bz04&u?&mjB~}(Y1S!*jEX_hC;~gYz5eUx^CPhB#YFHz@jKRGpG5-g z6UL%18D|`k0{l<<9(xJUegsbXr212)PY@uJ6Ow z&ZI83$$5?>7L+z1Jf0(k6M?T;$tVT zqxL3g6OIN8E^IigEu$mS$_8ohBnqP*t={EcM9mrz5%KE&-tsl|T;T5wt#}*~m6JRv zxIX07#%}bxhc99w(jfhxSoZuMs8)F4(kLju;x48^ClnwcI@<2)Yf5UWnvRZ_d~I|^ z1)cEc8;7#+J7>@y#E>;hwbh=*=z5lH-%p4YXvrQdQ)1HqLnitewm2d*ey{BU*wN9^ zcqtl4sK{dPo_)aRhC@jDUW2_J>P2-^Qg@z})5L-NmAq*bHcoGfV5T!@ClWu{8cS^R zk;H_n4tWKTE?R^)D8rp=f2PF5!*+g~b!L3f<@CZL;}XRB1aA;AQUk=q#JtX%msi@o zX>d@CD9=oA6Qs#ykrl1p7fv(MxzT!h-mf-JqetLT7^n3`Fj2u|&69XH_Bdg0Q0nYH zYqEZH0iOXzz^l6kJ=W*r*{Actc*yI3MPwo@02%Vi( zdAL}g@Flz4@$6L=FxPadc%)iNuQAa zt5ii5AAV)|HapQ&WC`q{HrYlhu~fWlAt5zY%HE#Q+1c43s&jC4!a6c0lCqUG?J4?N zA&)DEr03=OMJSK)CDbwC1;$+6ocW@|3wXb`Hug)sO!JEyHV`kcEP%_F7pX*>c2!V7 zJYQ>tC1s$AK8aK8>6Y_gI>E1Ct3br%46M#-H8Y)a^KPiGulMrtDb%X;_T5?Y>$R##;1FSv$ z%sVS)OyI;oLqm(n<;g7PFS=VJ!&*UD_Z&EF52RD`RX|bLQ^=^wnEackJrO-8cCuc{ zfiq%M)vnTB0U7#Tjx=CT0?<7fXO@stR~}!$L%h3R?{#b>*^%x)m`Yt|zqz@QQBo=u zk3e2Fj*gBtA5AA~^KNHr`c(Pl4*Zp>HR>82oiUky-{9(W+X6rytBK*iE zbUtBS74UIto$Iv&@8WwDOi)MQ$LObXzexWAbN~He=4olovHonvQioSJJ~ve<(H(vB z>!$suKYu^~k0%`y9Ua;6G-sSM@RC@||RzPe%A z8Zb1HhE{>8CsD+OLyGEHHFP^|eZ5&ENp-^FkFnmT7Fkuyen z%P%GD`pcMO-quwJlen8{O=VZDs2e>`t*L^c7;SWWFui_QO%}4$spnJvhUl4b2Z_GE zzV`qXQ|jHF+pov7>6A7GRsf1`-+jB+7}m+zx!q2U!|0R8!^7h{pGf?_^B~97_(JWr^Qw4HEM#B=+6htzs?U`v0MecO8yuow64&6* zS6J6rjAZnUsO{X@d@)gzo%h?0!0kSVS2$N9rn&L9gy6%iC(0H02$=Nb zz$BSs&w##X%V7wLP<~UB#-@{O^iW@4P}=MQpLTigZ+Tw4=*lYt?G- zw0^`G9|keO4K7|8z~Nxy1V&C(Zns?X?;q2`VzA@WyLEUQtaofIvRQt4w`YUol4BD$ zmy7ZbAHF*Y7Y>W@{@#r6;o}xiR$N>>^(PDwl`_%FWPdbag?de^woL_V6Qnzb*UK9^ zu8M`s<_!83cF}7wq|0ubRkU`KOcgidm3^_%Azx&-!^;Qov9o%SrkupJ2GrE!2AvCgpd!YO~GnZ2!+5D*zsTPzPS~JAsml0xf z%gOaou3ovgJ(?(!PS*T*BabfL$JeiNKlKV1Q~{&1csPSVB4~cN2IRu>a+ysh*$Gbs zBqZIZmwwxjmw^ssp7B@4=kM_9;mUnueHE%Rz*TzRpu{k$I~{`S?H|oE0|NsmXXgUr zo`6YHWH6HV7qp~TCF)uJI>ohM1JQVy%t%-gFVvCfANR`d-h{Xy8Sgd-UNSA*Qf)NC z6+p!mBV#Sr%t`oo`j_#N?8dVeHg6dwj~E9(5xLhQ1FaONsy<3~McsFp0~<-2 zAQQnKj%9>v7}H^S13Gq$e{r)Px3T}NX4lN+PzFoO z^R@`gzq~QCu^Gd;3=r)wKmY3qhB0(~38FRNF7|;=M>P>vS>dj!o+2hl^=pHop`o$) zRt=hhNN-1m=;)b;e_ z{QLw=;Z2j1ldlF?gq@zQOnrWwL^{$K{{u6urg9_=3<%Xr75hd2W`0g}F8RL;k}D6jC*m&4-ZX%aoCqQ`G&Ce5 z$z%Qo7VC#RG6n{Dn1MvCFs;g=@jp@h!D3bK)z0oNL;Xt-Te{r_ZXIw#b#HGjW{l=K z3(iQH5OX}VlZ-L4j|yg&hh1F4$a3;0?$RtZFow`vlECoJ+AkFx^a*92Ew^a(PV z3AH!@v5&fr8evE>VQhf-{?}zUIORdavJ@wWl{lG*Hbu39ck_2scsGT=qn>#H4N@gm z!Q8ht^L3&@HxOEd3(^5SdF(Nw6LwqgRE3`{l?=CfaOeq$d1?c#@ng{v^Ehy-7t#d( zTa;3nc#3vweO7L|l8cK=h_IEZ4OyzPF1z_5;{5!4F`29$QUOp3GQW)3>Rh9nZXErcrrTZduwZD=jTlKXqzy!!$3EC(C1g)-dw= z*T<@1zkKyOaERodaV;G;2-s z5_T4&8{)i2fRj==3Kt9x>bvl7x!JRP-j8PJRZG!+AqiDyO#|>wFny34s5n0#%)S1X zQqV*5n_XyV=)VnzkL9Y-zE$->-XNh;V&# zYYD%B+zPO>rSrq9oq_puN~YkM?&p~1wdHw76=7^f9T5iyhmxMSERG*r(E&$I6E-mzadu7)+ZcD>pV?ml zuprIs_ZO4!(XMXTwl8Gxs|a+HOoRW>V?dq3e6B&#;@P4(8-rc6cyA-!EEzTw;s~|! zi@s#M$;v`}f1wyc3#P_KRxyH{puFz=<4>O)BRM$)-Q|W+yaWm@$e_?fDDp(|Vm4Wa zuPDNgtTVz70_xI=2Nt`s$k@ad<4trHmXU1Tezz{ugV|(T!aWW-(}OVJ}8 z3L9$BcVXCn>j-c!9LA(FLu)UoI+s=K0?@@GS!t^qR-5L@C z`?p&|TTd@4I{M3SQH*0Is*GwG5FZ~;iX`VU;dS}?sPoIA;^}~nHq&TO>Rt-@nTWhx z8Wlz8mUP5}#N1+AhVY|e0FnWRu~zqHwkhInv&8jix_Ee#bqxy)&(jK(jXPL3Zp!R( zv+JgG>>u~}c^&wCk2&Fn*~=Mr|ALNyHB!R1|G`!LsxR^&@XfHev@{Vg$TsK_xU9C~ z5=%LDFu^C+9Fus~H{KTN#knE8l{rZz4-U`%gJOqmJ{;PI@z;&s#>NI0AEBVHzqfxp zGi1nVXcvLtbCot$&PCqq;{3?#d~TT(!Ak``Kc(Bk`_P+Gg62wnT-on=F3tYKm*d26 z{$AKi2p0#>^NmnR#*%G%a$9ZV!dqJAajTE|2NHARq9V4Ie0(o9W_$kG!W8>qyYb@Q+ zy>-zAGINzOUSaiIFkbL;9n!|xWacg~>LfYie-|t7{~RoD1yp}^pTmtxK!UOS7wF{O zz@D#J+#vh96>m5L;*JYbP%utBiUiL*Pap>Q@(TpHOnaz`Y@!T)29dPKv9^E#3Bup@ zEf|S{Ztz0Da}>>lMXXE4cc2A-5WxssjE^@-@AhZxBYxx6dsupUx<-ehtt~x8Xsl9lc{JAxbZ75;wgM2F3!$MFWZF^#d1?+1sCMxvEy^Sa{r-!pf7}I>w@$~gi<^v!lZ3ng>gd*i?$q0I#k2Pd=@1^N;Np%L7S3GSVtB|%`hinD`GA7tJIDqpR#!Yh)8S1?Fd*K+SgC}qQ(a|V2B)6Wc^K% zTmvnfb2e*5%_;5|B=I4QxF^F*untpCw~l^bAWDB=4v2ZPXNIRzT?3RE)H9=$!hop- zgGKSTlinmytC#>`0%jO;g#L9M84rq*?!uR1Y^!cLNVGnL=k|?^i)B^s=IhLnR*$tH zpt)A7_8x++zWBvFm|9BQ+Pa*RR;IDe?MNj~UvPM)st`;IPZtyb!{VZ^T`ALZ9@~_C zCoq1LQ2Ipn04q67JjpHW=lXV$=l2Bf{O;ULOyl51sMP&jWXE1cmX1GXI zg(ua&tTSk>91gel7n36l!o!P;nzgnV`1ny7X&D=H?*2E=*S~dZjcjchkY#5X0l&^i zQ|8zX%2{Qlz$>F&-5a~_q7|m}1*QekuzUzHHU->gq0(Phr0*sR9lpN&{Lp_Z z4r*d2JR=HgG}MUL3QaFwjDP}uR#_%e?F+&&CW{PUvAtaUNPn9`J%;-K#RM$s5bOG~ z-}PJQQ)3SyO*A7gm1=gHh4hrbk@zqrfW`ODr;#i#FR#BxnQiUuk=UYw^kc)Zx-xSvyR?{?L$5r5+HKRb_ga=0fpL_?Eg=tRS1c%;+(etL+N{^00V>?IOCI# zOilI(I~w@~?Ed$I7*Vi)Y)-gf zzVBXa3V5)D%L^2I?G%80A>zmuy&LtMVS+8~BAo!c~*GfD&G$?tfc<5x?I z;(*iyS_wgyb=rc2f<%SnK>L=s0OBk}#3p?CMm0y(ZFStYI#l)!`6S>q;C zq@;?&u`tqPb>_tzqcAw^q7b;RsmQ&=r08s>KHv${>k!VfyfgeiTRA}*zjr)wcJa<> zXO}Xg00N@tfL`aJ^OLAADVhQ{g4*}4hP$1a%v0JJG z=bz5REJtpF(ZbRF{R}A+GByQFQ40%`OFpJM#kmRg zJFK6tzKFGnTtAwnS}+w)*9i>{4odHSrn6lLjG*q02?3OZQhj@@;P1gQcE))R^p7cz zSEFw~MtuQ-I*T#<3D2xWN9?L@JaVkKXNc!#A>Y7q?10v=$I)RqIbi9RI|D!S=~m!f z5Ps`P?rILasku)=5%^V;;z)&h<)L5|cb_NBT#YV&?(-F$3-uldn@h98e#(|wSF!U|RNQ&^%XqR>SsHfmds|0-Nl-Wf%1-Te6S z%;CQGw}h#s7DWjl4Ot1nWD)}}H!&_DlK3atU~&=#lP76oL$B0x#W@o4WARtDbvhk~ z#YB8KMLDjqv2jceYwF@+_td^~T4W~Lx1BwSrjRD}2OMkDBEHh=gMY#^M{d_9|24n) zCtJ~vl0Cb+Cb*D0MIJ}9?V^=SG(RnUQDZvus+10P5Cndq9}>~VZgK5&KyPk4O^I^y z**d(UPSRf5$uNd=@9#FvqgO!LgouYCg6&nqbk)f$8(*ipVgU{lT@Ge zSZ;Tv$;im)ykD`M@bw_hUl)%=io&XdqBoW z`l$4P4v$zum)|+Q;=MSuC-?yNQjitY9c~?=vR$Y0(}#N0z;5A47B=_??F%6+*UY8g z)pH`Wq*UzTYp(vZ(ak6p>#g9*|Q;Dps>U zRi&q77HkE|S;{l+UpcKA6Zz0nFu%poN95G-XSFVrrWCl(HaHydaYEzcFlq(%^Z;4s zyyTxbl9W1^by?1C?n7l?auv!2THwP_`9nYKJAFlZ_cm0_x3adsIFxFG(8|53VOq^r zc2T{yX}H6DrfNg5x+*lRV$FRNO(?&M(}23J085F!)RYv}Io?2sdWE8ynkh8F?Z6!ICY)PTzG3CeTCamWc#Xipz0~t9r1mF5)0Yd(76Uq6rf0c=%?l8l&qC-u5 zQ1EAg46%fyhknGzZhVNn@?{9QWOhdiBA{&=ngE^f6rqoEGB+J zt>{QFDSd^`?q2BD%GBmM1k@~)vL;Izgs8~co;eE*mb=n9ofA1RWOA08Y%#-X*m=rc z?4Y;c!?3Pr9!S_+Zl(F2JZzHE#1=lo4*pFR;0KlPFluT!{aeB5)%rimuRS0I5i#UddhmoJxrlzLa@Y@!6?q#RaSly4+tSJ-u>H}VU$fU{2Npj== zFa*_LcCg<(W!PV1jABDY7B&AAn`lepeJ$=qCxuB@`!RDGEL}S)NlQ{Kx@YoGMUCeS zmMc=k$W$1>p-R;Ypd218B@uOa7+G4)1q8?^B{gq##9w zcCP%iKV^|~gth|CqR9e-g!gA_TF86PY$tJ7+WnU{bnoI{Tmn;q)3dYU1nJ|!p&Q(9 zOqoURUV;A{kb9~>VucuoV*K!Z`UbpXo1L&yj<4RL^zy zG)^>`oTDvZ34Bhjp-;4s73W{i*Stn$%hkUlsh=yf{ZjQWyq}GpL83)uPmU|KA|Ag! z7!B%F94mIJX6Nw;G#}zekNZt?#QVFWM&acA_4~oa&FkFscotoGXi5rpiH_>^*rFpW z=8(`N+R%+Tp*Sb%DM%WZ08R>DWw)U<*}YiJ&dBrvY$#LF;&#ej#3+t)J{o)s4fSXJroYn6beh!ZXTeF;0h8lbC>e! zEf*v8%hX)x!eF=QUe!5KUq>c^d#@lZt(x%l8Ax&t4z^MkbLKi+@ z$}wF->E%paQ7(&Z)H5hR%S(I<0(&d}T!eNyI};LZv>)%q7#~jP2r`SIAP$03;LNK< z1I;P2N54t%srZ^BQTCU8DcnO&Y{K_>IG-${OJc2K57g$Ilu#iUlsouVtJw8l8Hf%_ zR;yhNqiH6>YZ(t)?4*o@C$J0za)729s6b880upKaP7?2}xmd7RH&;JM#tG=kQ}aDh zifeTZ>&1#u-$5lnBU&?icdQ$^V37Ql5*3_tuy5%mgJXP=`qf#1`u5_fNS_ZvAC%e?K8HiyVPNbnnAanXph);WGSz;uj+vvr*4}3!g!%QSsZlH(v@>lqq?{R?zAT6= z4+Fyxmz=v)v<$G?4{~~QP<`Fm+Z)_P6^Nr(qf(0ssIU;%=g5v>GJ@8iuar#SNRiIW zO3U?!Ph(9B|Jt0aCuLe`44ek^Qw)510MZVE!f*GO_`g*DJgG% z1Da9t_?7i)5o zL?w*f|7yM>r0SfW$-tvk%cBhLbDpHT{h`_`Jek+nF=b+EO5s=};TVpLCkgU|qa=%B zlmhnz_k`R)7I@tJ-Lsp#^%K*?oVi0F@N)G47~xg|1`1GdWvmTkDkY0m*sS*`$?V9i zdFokBPm%sRsk%R^ioa5t$s7-5 zIxZM_k2W0N=7qC@<^P2ioAspF3a0gfnPARfGyQ{9qLjnz7`)f=({M4M&30`+%nE># zXP0lgiR1s@J~F|>!&fbLhZo{V4IyrWsFf8Ih)rbpB%BLO{?xMmC5SSO-uB1CV~;28 zA@#TYbf4p9ZnF>;d-lQ)>GSm%*<+GVUdi(z>5PLls}1`0esIrv5z^7W+h0d?ZVG5 zQbT8gI!C1BCQAd|pidZbk>C>GdP7nnixsO}-DnD%UMgW0mGdfh<7+}x^r%hzvc>W5 zcu2uDa9NEl3?pG4y#Hx`)6B1zbCR|2Cvpxz%d9 zeatDB%7%bUA#244t)IO={4^@;4YgMYC+oV!?_h46%iGh^edx5c)Z4=uNF@R#_F9Xm z%q(iBpJPys@*LTS*=*yS19iPh*%2@SXElCE-WTT;kkM1SwmIRaI4GqvQrzHbgkd&r0cJRJ%_r zv$oh^h9MF_?{IV5m#q=-r&!WfRYE=Vz?4vuS;K{yvBDBn6}gd!V3Y>k zPViqq-`18%1F@y0MaNdRTF1Ueqq@w!RYQ+H>Tv+t3{yfQg^E#zl$KQ$MU+5pX5)ECjhMz zXFDdC_~Z1a^}BT8drSjTVnGsKI(Ix9%@1RsHxL{Nk2Ub`-@lOe5UF{2(@oZMR`&Mh zeZkP3&nuN`Uo~bDH~YhjkT+jD)P`n=AP?m*gq8M=BWi{6g;-?KB!1P^rjRlUBQWTD z$4i9^C15gYi2F$j=yE&Gqa;x{OaTX%%QSg?-cnBa;B}pj+g0F}S3N&IB9^Q2#CYF< zuNs{FTNHJq+*+EtWA|npCp3+1|E_K8R#E+L`wtJTn13CTe|{RZ29q%))1W4A{y&TL z@LDcN7@@31wF;KMmsLk61nPZ)RS2LGm?s=sF)z;*(Byr4>faR&j&x9JMhd_Zm^Ig( zu9R37rVcu9{N8k?SuBlRVL2dmHkRmOym;5DWgJ zSX8v5%e-{E{5PT;SAO5|;Z=cOmTw+=uGVO`nt%*e4^uy(9_cI7`jG)q*hBOeQb zsy4KV8V3y9bvWJDzLzLvZCGF2y^`cki+}ild^`n%Cc$U3X0_Y>s4R26sqYl-ULNWe zGyJyfT&^#)Kh8Z~I%;a-l!V`sMMGc`Qav7-W>ZK(ZputdOpMx%q0b!06dVw}^hUA= zHQX0#0yY|pXaQ6)+#GG?$|FXBH7jxRw-J32c&zNgD;z7Jh1%Ckqz?Ryv{iaD~b zt{jV-Zi3*JV2*{jr9)#>xO)9fH>Kz#B()-ugd(!C2y@dJaofm{*u2=u56qjM_qY%* z`25Sr%K|UAjWI+*_vu~JPCOIQEZw7to@u=u@q%1giThN3_rQ^5)6 zYo;QJjQ8rO{Vma-w850fiOvA(`Fxv=mrKEGpMT0cRq^j{&vT8IN+u>IO-XxYPJB5$ zIf^PODqfE7zCe{$eefq@@$o;mKz^_xeZ8m4jqO*%1W(g)AKO7R#J#w2YPYC9!4vOK zb~Qcs&ye>#ZcUp9=4txFVYmjPfDE!dV+&m%fZ&)v1MwP4m#y0oo= zZL6R`K--=;HIAa$TKg{Tp?2@v!=_T6kUxq&0JaUdpDehaf}!)?2ltVhDiRH>a4ekj z<8^~)_bH#iuIM@b%U*F!f0z|GLqkXBJ@zS)E0aTz@9Z zv0DZxGqn0(pz`>6eb^O2D30R3?|!=0uF5YVArbdW$p87fmX@@h9wF-H3v2#&P=Wck zbVIg**D3AN165QdfqRM8i|tdAhqsVaO&zN;o2^+nmg2Uy^l71&)1QX5P@+YMK6~|2 zk5waS-J_L}NCpcJhg}gngC;^mZ*;f@-uWH?2m~Tjb#`{fLxRaxq;c%J!l?r9lnM|8 zHw23qm^s@uZ`Sd?o7V)_YPP{%ZFM||PzB1MM2q+l!o&pb`c+TsPsxndS64%Sj0T!n z-mL5YB{FtMA}|~+C88iF*OwF(1^1V{i`3&ua&+s1#&uI;$`tTsry8OC*Bacn(i*Oi&@BVDtnGPgnNB|K>FfhxT30 z9{BD|C}+cv1guHl_X8e}ug1C`NIih2I9+2_X7208=m5z+R(B&(a&rBMJ|m+Ug6KA{ z;UOr3U^}_>;rrfuNTJ21)zIy)kU=Mq35X6QT^~yjorLZDPitcnZB{Ve-rjo$2PB&H z>>2U`k6R&Yty@A1dJW;zt^SG|W8OT8gm&xQDO+`jH%rbS#_T_1d7F`yEdDVh1=ymSSS^TYkI z!Tfs_x1{y{I)S71|BMV7Jhf!0qT*=U5;M3{hG$mw|ZCEv{F8mf&N~kjgH1zTEJArs&lQq3WXKzN zIA+7Qqs`TWhHR97ev{Y>z1+e?Wp^4BA@)C3&dkbs;E(LSsDEjD3tIh=WnW!ZX7m`k z&65Kt2KSL(U0rc+NvtfY$*QmJ3Q2?rL<;)Dcc@xx8e?!=v2Z=?k1%j!h{0`8~v{O{($ZcjE*$G_m19Gi@; zBn?dmyf$9wrG9QhL4JOah9<)rK{?Ex^?fgAufNxLqoj8GaYbd@aYZGT-siNjBpkUD zzU*`vdSbq!{AceT6>sxI>fX8wO=xgXtXUlobXT3;H%ks{aV+bw)^)BoifvFp!-ARf z2~+F!1216te0lV`-7HM_x1}N~K^m9M^dFK<85y7_lxu;iELiX}{mqw{2TCDUfl>cg za>sdlG(&(#7z86ZIZgKIsU7pnwz(5`LPZPCee(@uCVkdYow0c9#_+;|hC|PRM+@p2 zzg9Ll9^7v1Zu|N5N!!0n+ebg(?m*yaDap*zlH@P@r(i%=pI2waHc>SJzdXGXL1evV z#aVzs=KQXuHLCw(b12vw5iVi?p#cQSb_#G>KqdEFIL}(FY{3mB<>k)E;rH}7IqTS+ z;xGH6(RdMT0w-BT(05xu*S;IakFr#lgaMV{(0lPPckU3u#riUFO9ZUrI#AByY&+r8 z@sm2qf(7y@5nfCI4|OPLxVOiPy4k2k(0I|tb?3`TmA!b$2a9>s1yG>Z>COK zR_`|#-^WiF3`3r@L|AELD($^dEASiuSrDNc~rH;XY;e8gnC@m{%Vn3r( zP*Ct|ovT`>C#n)~{z{dK(OKAa$+ZP;A!4h*z+o}*7{De@K^N^t$DmR5^Rh`SSQw?> zWGh%)Xz>0d(6z50OiKe^W|DCj7)Vw(HIZT9GO&iJ+(c{8HCp^q56dywUOB6vdVZ3Tz55!=i_%MFE-~;A-N}scuNsF!Iz%5cK5av$0>f zxjFWl$QT{In%RI5}$iSFT5)YSZ& z>e(1G{qTx8J+)(JCwB+!Ovjd5OJibzhlyM`YD**DzP8cWrdE^D(aDHnqoeaG?jcPY zOKlRN@$_o@;++zl$>VWsgK7L>%t6Q~KkhmyV7O*eHI=H(djQJLS8VVIe2XcAHBkt`)9XUoS_8Uq{sE z9T(jW%lcU$5a@K;p;c8|V_EUaYpz5=;IS6=$!lh0qSJ#~Q{M;MqoYf8q1r+5TO3*I z>f|K%=0u(GfY(8er&hfy^kf>RRCh*7FS*fkU-9)W!LVviK5@u+FD9yRej1rEI3~co z;kDbH@d0fCHXc|`=*GKwJ-F|LpS|wI6&o9iQ1dCdaNJ$#U1DO1_)~+?4e9$BAT+=O zNT1PguwdpSG0iJ~Cha!i3{eeikz zWNd6q+31^u#9m$5Cux1wH7hwx>jm$IB-5l0==L5udW#;)!4E2q()~7`$%;OltNam6 z_kVxxP_NXeuXMvrhWH|ZPYvkS7Uw}27$IqK>3DrqKO7|$?ukf9NOTLUvtjTK<1pz+ zC@Z6Pz1$Ax+DEiqNTYx$LTrGahX(IKJn!GCl75qrkbn;!1+GXrIFhD?USf7~hMLlv zO{-YN;Ojyhi76)$y-jZ(&m4jA>yK7FQ7m+HbSgOVk?8lg7uRv7RyTn-ndqP&f!+xc zTeg{GS9cP*FE6g2X?-n59B5?;35jG<5TVlS+#DSX%LuV$sktwr-9fK^s-l+6LJctdjx9b;lgfJ|D&jBt6 zln6o6i`yU6e*EjVK>en+Nd%tmYN`QXxdalk~9yq>OJ&Axi)Xe5ss4bG@p2m8N) zU_Jhwn)&be&?}_qJ)E3a z+1RLTN&FAkt5Jtm*AM-NoAZwis#;HjJvn?^N>3|h;MbFqfYUtWCEpntcfNVAlDnvB6kCbKFKZAj}2O_ZPmb1dPlENNS zHjo5-zV`r4A6MZ+=&k)ML{#=2jfjA0MAwHhD|e(Xj4vbI@jg9}NVDWW{$! z{a^cu0yttHtHZ-Q*n+IV`~ZMkN;k0aQ@*kAkqs4Mf!H;_D}e0p7B69-S__;z&)>~fH$87oNDva`1;pf z!w;kP<0rM)s^C6D9~C@|O@+NHVd0uR5s5ugY;5eAg@xgGGI7=n`H0(Pe*}@E96QGpq3Q z7O-G%Fw)RGuJ!Vylc}41&gG2X<#XR}#7fw@N(=`@D^MHnN}V$>kvB!j%zVyo zIJdMUEh7WZ%gakiLql?3-?Diaa4O&l9Bkx(4GT(Ut1C{-TM$yimM@pvtv6vS38U_T zxf@k*CmhNS=9-q;Nq-Tn62$w<3AbrMGP7+p#dpH^8F%sUxEJk;_%@Dv^^o?is9=s< zi3y zv2k!3+>TT}*)i)gsDxPa3v7fE_8Z%`$Cz%%02g$5o4i5TT7M_KJP{C~BbVdGg#E+D z@GtulCvUwb7~QLpXEJzcfOz!2+JI3VCPf_`F*6p@-G5(vl z41w!+3W>YOf{}aTY_?}4hvz4SP%*No=x91Ry8NP|P@*AzD;xU)!9Q^`#*}35 zCD~uYmV2^e2ey|S+mVrxlT%Yo>a{?zu|r30J8pbzcu0(TZSfzz!0E>lQCC(0_&3-9 zQ_-I|(%>i!_sUglsYyCY{dMz!&6B^6k`yghnymNs_x+jrymyXh(r@y3lcmyjPj*9i zdfPqqn^~RaM5YKms0SiYOKa-m6gs%K`-gJ4*Tw=jAiHn6_F^Xs1v;{05|MI!4(SvH zpVSNj-pn0(UOX6Q0G!~UtqpkyI~;RiX?Uh1i~rS>YV`gBcV{Y)-IyVs7@FU9vtw*ul=C zYswDCXLnu&0!B|hdK2F)Ot^;sIDQvi!C$>>@d0-lXD0PNFv?JTTbz882(iVMmU3MXt2MBHp@zK;*D6D;R+5GXlLw^EaoW+|1L zC_(cJ@L%e_{y|8s#_{3xao)w|X7||B`XuMd%EFqOxa(t=sPSmJT6)W~sOCq@mp;f; zRK~%MUF$KMKK_N5JD%s>?qx*_ZE9SFZcxVJ^q?KUrK+wzbh_NQoZFMr(9|G~7)Y`N z*#vR!pEPefWbCn3#{+7RNJvhW(2&FtZ1hRY%Th9MAU--eDk?3-Bq90HXGBVf(pYE) zTg&2~!}Luz-Sr?lgdSWu_$QQT(dtT_F=Ut}R$_9Jgt|Gly=HUJ+m?Z?-|FaYtKd|# zYOOjz`t4Ud?m_oxrJTWj10u7j^a7e9{~71~>2gS)HEA{`^#ZZn_zKSBmw1nOM0fH2 zVJH|~Sko(QX$4vH$II;)JhtHEWUNyUey%L!j`a;TZN^jwZUWkw{D4}_nbfUa! zhI(f|4u1Z~lX{RvyR|)$QW3|Nh5TJ`AJ3t^fG^Yy>O8ErDqnTgass-P1z? zgH|qvwc%^xo4y`flreiazY$%wLhDzZrfUaI4R8PfC8~)r({jR=?@>>k9jE%K-95=$ zZKSsg2QuBccsKBMl-G5h0gmBF_+lOwT-MgsMI|Nd0k2*#D1>ENbf3$8^b;z{77hzT z#KCwgw9>iJLA3|hC9C9&7Nvlh5pEIoeEY}j-a#`9-@na@jg4Jp(33e-iQ8x~fPW9D zo%ij#ZpV4-DqV}yCmdC3+6?$A4R_e3Hgapj`B z!A@>ibZR&jb^Fl&i3q7VUgW@{}?wnOr zFhXFE`OYz+++FEsk^lbvTW38-ttbfG{jI%g)>lyx%gT>US7vMDSc~YseE&|YuXve6 zYW+5sObGJ(rml{C(e*&=*!6&eoDXARz@1bcri%J}$M1Qzx09zgk-H-3bxN#vRWmAM z4;T%KG8a`YUbCI&bn7q`qv7jUv&-VUu>$-JSxDi~%7}B$FdnoF=UJteG(hFVq78t&&OTN;wfu`srVA zC$^-7pV1>DBS*|ZpE4BMyUSq1=Y;7qxy63NA#;`@>*B&5`7ZJKLV_I^!T$dK>#=8# ziS`xyJ<=xR<}TiRVFN6Xv_gHg#xY&aU5GjQ`gFs4(Rnkn7sEj6lm5fnG_FL!?Fj z5oX(&WhzjhCKDq~Y5m|E=)$4=<7{!scY9QnExMnQwQ{XL!4 zm_C}me9a(oad!yF+ABVb;Q~b%GuKBm8!q2 z4m+MagqmAfk^KOFW6QIprXmYVs7Vlb{!=Jr|28=}+4;1P)p`3Yr#7!Sv#>H8tcin$ z5N2g#bDUmKP%t_Es}hun~H;XUR?d3SH)&v{)`3Z+l#cE?2AxXOpO@ z8BePT7FikQy!P|f1Mcn^4O-HNY;jbH_2ar0;%2Ohc$ehMq-fa#L{Qbjq<^)5{XtOP zpv4f69E1jT>U_^0fBTyaS+bpkYiE0`SnGF3YkcaI?>vP6o(}R3elyfkGBcrE(6XF4 zpS?s)B1=?|68>DTE1!_qNtA#SagvA+Cqs_-kjykXtjPCk+Zr(S+1KDRq{S+zuTNN6 z(P?qqoI+&j>J8T?pp|1OWU7tre--l(YEL4D7X+jgWvS_eB9jNPW)o*e<$qIBv4yp@ z@tByJ@|PSQTIn(4PIo>cO?O{0zW*dCJOcZ6Yq++_FKh>=`l|~oZ8NO2G{VS$b=FoE z`gVCEBDo05ZiefW&4Z8)MIIdU?Cz}TZxh;ecwIW+H-nG&F=|&tkGVW#6{C{unI8sEF7?%(XyWJ7oSYJI$KkwK;S_uXY2b zo^Vm+pOn+qz+>~)96E*IUz^y48Pq;MQCDJY=k72>bRyK$7VU=1EKMg%W}$>MHk^D{DV-1U*n@o3?)J;gZ}ITWTOJs7 zjTYKk*32z#DoA#v$sI2Ei5SsUs+j+E3d9bHvAL8y)}e;Z5-KR6vu`cg;-DR zfz15Ujk(jmCYFlD66yBk@a@^`O4lira4E#23Y>vD557=Xg{GCfGPuRSKB00C$nR2p z`%=5X0om`Pfe&@jrT zqNDS>@Q2Xvw}(ws5qT4&u{;`8prt5gYs;ueGp@|h>k6Ik>T=I(sm?eABh=wi+xrP% zxjBB-EO*hIN#BsRbzry+tnO%KZ!n>x&VtWdj~Lm>r>YJcj*-L3%D2QBma zhXEIch)ntvv=(qQ;m$O_oOjQ4_!(vLw9$FNDB@vj1aO)4UYOINdd%s8ki}ZB94G)H zY!|V8|5%sD{4d>0^ZHSYjU2rw8gDp0KE9W4-)iUeIfGx*J;ky9T|7z*l}lK2W332` z(av!sqd}V%e<9-YVd0Oq`?N(B$I8+gDWdI-?F-NOH(jiMI1Oft7|{9>MGOew`$o$S zWbITLY&5akiLT7X3rvlGR+r6JL7!V5_8w?@(fFFGqN-3_oX+0FA8CI!78F_0C=XH3 zJCM(PU!kLC`VAdF7!Gp19a@)$udiK*Gj8C3w;RLy;w8A^F!ExUa)}yx!q|Z6$?qqX z#rgT$ZD$qL{AIPZmJjFak8c5fLL@?YKcb=#-XAYXmYttb>gXf^a&j6@ig?I(Lg5s( zYsqy2MjtzL$-;!HDn^ZJouPC#)408(AnC>LYHEY~i~3VjB{`hhndDuXW?(bEJ$NOM z@`lM3?SaTn8`=kK9{pMyAHW4BHgmD?IuduEw^O>s?oTzD!Bz8*4X zN2aw4x3Z@0$UZKhH)VdH=V68!T;Y=Ibq6oB{zNAZgS-oGCX9qkV-5$@M zfS3*8gWbM#`92I|ac<}B(3tUt`pl92#F$XG$X-^Y*H1wbvS$r40s}^s0>Q{sL4kCE zn|mXcm*||Z6p+v9k!u0oKEzW3NAeqfHws8F;!=V=EStnu8$s`jm6|N)0gny_84n26 z_0^$1;Xp6EW9K^zkak&sORi?AX-M@HrZTSr3E|WDMo_TbI;W)U zc;BZsLQ$3W6n`eQwxamd9F747uRjt)C@2Y0I2?xr&a+%eD!Ho31(*owGBD850bVSo z_)ejW{QLaZ)66_{l!#@G_E;EC$b&o};DDMcDqwMbV?)v1{piTLBY_X zSadD4q1DB8>?uL#Fe(eP7dk%Bi^Y|YoGY=>DpACUE^q zF=5C@V)$o~&Bm#hz-abRX3h0PkZ8JDi!p{+Fw^k$9#=r^8Ewz==EAcM8pf^9@lfMX zcQ&oqk%fwaLfo+JBEPdBTgo6HlzYQFWOlu{X{1%$&%mrMJC^wB{#EZK%Qmuk*kysvlC8i9s=dAa@8Y6o_M@h{`dNpe z{-gG$|JsPSRND_&&L*8%*__u6v?; z(Ziw%UJ7f}zH6FkvkrEW_?}0H_raT|*YjPe_Q$f%aqQir>)Rhh&{^(k5xpci`G_4d1cHV!iPIj3VDrQQ?Q~PkPCmk&`=@RYS+!$h175_v>$Hjr5mcy;(zf znib60uL}q>Xi+HJu8)^mf^7wQZP$9COxx$Jec@d+-|9s+x|gfFHCh(zVzc87`h%3N zNuV!y4J?EOvOF~T?Q6I?9UP_f-xsQ@zeC+F9vp+{z<2Q}`p`vd-pA%+NH}tXgCW9E zh*oB9l1`^D9&W|}n!L-E*F~*1H?rn#onw__xI2VCROQc9MMMtaQeM65aaif~A48I7 zodcSY>%WRraGRufNGf`I^7{Hj)z#IU+}v|(Yx1h9n3I!}oLpa3R1L-T#fgaXU=4dC zxDSWs&kH&&dHX~~b9nr+G(bAIVV1#C^*lKDsjq`vgNeXwVsQDeL^4@a_AMcGOm6Sx z_5d9%Eh!n_Z;%)8g%im{I$Bs|lhBjKLTAhdt+*tKvmOMA zxlIXe7i-P+2l((pWufD+kiq7^eiOA-V;I8noOu5GKqp6^8eh)@IWmAE?|>;YBNM}n zH#xdZK}SpbQz=hq{TB^o>*{0_HiMUYU!~vURfL*vrE_t+5xFdigv1``cjG}qLh?)k zp$Jf{iYX&2P5zZE<#y05aVN=%FK2LYaLbL4|6D0g zD9517=W2GGg%@2h*7I2oZYcI0!>C@o%)|{F z9zOEm@-7~i5niEWjLGBWHWD5ySak8p?GCMq+6kk?GTToEo#6u|Y?VEAE z7GE=Ek8X>oR=WdLm?rj)@G7c7??|^UiPkGlLF6#HixJ`qE9^x2n*|aXbFNZ)C@rxIIPM%|a!}mZDgh__KUp#;*spxw9#`LpTKjr6SK0%Le-I=sht3;Q zef^q}%PTl`k}|T@9r9(?5$@>dC|w@5hT!8H0Td*fL6^_hLdjUZfAuzwj-@RvshOGh z6_u6c<>mQR4Kez@9`&UzsP3`uUT+2!_?2aXl`X3tG_)=SL{QG6nGCT-|0sc&uabm3 zqYC3^()e~<1iCGD#^b3>r%UxAB`wr`FeD1q3V1Ove)d8II|Zzd$XW^-r_}shjmVWV zQ5?g|Gv6Hi`~=|P;dyctaaar{eigVsK0hrbH$=t@7WwBxiAofmyh)xzyy)=1H9RN8 zCk9UM4xC)=+&t3OGXB2+p#fh0r+G&6p?@zoNaVtKE6}oUGP;b|+wItlHtZ%lG0`z( zWM+_)lSAL!zPvo=Wwv~_1q1PfEtwYVCOdYsooGiiiHV6=E!N0nwqmo|uv)CxEH-Qw z8+NN5yVZ`(V#8r|V7Jd4y>;(7uZ>7!fX+Pk_3xiRunedJ z1NnrR@s%gG?agRHd#5koKhWbZ%}%ozELgE(HCnM6tXQyMFRxYM#`4G(_tqfk-t`26=V?+5fPDYM$L3Zm*8Xp z7z~swm?Z!J0I5ktK~$GcfB|}!PJjUqFi7|2cDoe>5fK5v0E96q5F#QXA|fZWVC3fi Y1J+~2Du!v4J^%m!07*qoM6N<$f(~f?_W%F@ delta 66302 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

    Ee((DU_6%ml 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 N002ovPDHLkV1g|;X@39! From ea8f1f6dd47815f161328abedde3f5b93c575353 Mon Sep 17 00:00:00 2001 From: Ricky Zhou Date: Fri, 21 Dec 2007 20:19:39 -0700 Subject: [PATCH 27/45] *phew* make everything call gettext. --- fas/fas/controllers.py | 5 ++ fas/fas/templates/cla/click.html | 14 +++--- fas/fas/templates/cla/index.html | 12 ++--- fas/fas/templates/cla/sign.html | 12 ++--- fas/fas/templates/cla/view.html | 26 +++++----- fas/fas/templates/error.html | 6 +-- fas/fas/templates/group/edit.html | 18 +++---- fas/fas/templates/group/invite.html | 15 +++--- fas/fas/templates/group/list.html | 22 ++++---- fas/fas/templates/group/new.html | 22 ++++---- fas/fas/templates/group/view.html | 70 +++++++++++++------------- fas/fas/templates/home.html | 10 ++-- fas/fas/templates/login.html | 14 +++--- fas/fas/templates/master.html | 52 ++++++++++--------- fas/fas/templates/openid/about.html | 6 +-- fas/fas/templates/openid/id.html | 10 ++-- fas/fas/templates/openid/trusted.html | 9 ++-- fas/fas/templates/user/changepass.html | 12 ++--- fas/fas/templates/user/edit.html | 26 +++++----- fas/fas/templates/user/list.html | 18 +++---- fas/fas/templates/user/new.html | 18 +++---- fas/fas/templates/user/resetpass.html | 12 ++--- fas/fas/templates/user/view.html | 65 ++++++++++++------------ fas/fas/templates/welcome.html | 10 ++-- 24 files changed, 245 insertions(+), 239 deletions(-) diff --git a/fas/fas/controllers.py b/fas/fas/controllers.py index 3b6a1d1..cc0acc4 100644 --- a/fas/fas/controllers.py +++ b/fas/fas/controllers.py @@ -24,6 +24,11 @@ import sys reload(sys) sys.setdefaultencoding('utf-8') +def add_custom_stdvars(vars): + return vars.update({"gettext": _}) + +turbogears.view.variable_providers.append(add_custom_stdvars) + # from fas import json # import logging # log = logging.getLogger("fas.controllers") diff --git a/fas/fas/templates/cla/click.html b/fas/fas/templates/cla/click.html index 09c09d4..648434e 100644 --- a/fas/fas/templates/cla/click.html +++ b/fas/fas/templates/cla/click.html @@ -4,19 +4,19 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Contributor License Agreement

    +

    ${_('Contributor License Agreement')}

    - If you agree to these terms and conditions, type "I agree" here:
    - Full Name: ${user.givenName}
    - E-mail: ${user.mail}
    - Date: ${date}
    - + ${_('If you agree to these terms and conditions, type "I agree" here:')}
    + ${_('Full Name:')} ${user.givenName}
    + ${_('E-mail:')} ${user.mail}
    + ${_('Date:')} ${date}
    +
    diff --git a/fas/fas/templates/cla/index.html b/fas/fas/templates/cla/index.html index c3979f8..b63e85e 100644 --- a/fas/fas/templates/cla/index.html +++ b/fas/fas/templates/cla/index.html @@ -4,19 +4,19 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Fedora Contributor License Agreement

    +

    ${_('Fedora Contributor License Agreement')}

    - There are two ways to sign the CLA. Most users will want to do a signed CLA as it will promote them to a full contributor in Fedora. The click-through CLA only grants partial access but may be preferred for those with special legal considerations. See: CLA Acceptance Hierarchies for more information. + ${Markup(_('There are two ways to sign the CLA. Most users will want to do a signed CLA as it will promote them to a full contributor in Fedora. The click-through CLA only grants partial access but may be preferred for those with special legal considerations. See: <a href="http://fedoraproject.org/wiki/Legal/CLAAcceptanceHierarchies">CLA Acceptance Hierarchies</a> for more information.'))}

    - Congratulations, you have already sucessfully signed the CLA. + ${Markup(_('You have already sucessfully signed the <a href="%s">CLA</a>.') % tg.url('/cla/view'))}

    diff --git a/fas/fas/templates/cla/sign.html b/fas/fas/templates/cla/sign.html index e78bb6c..833da2a 100644 --- a/fas/fas/templates/cla/sign.html +++ b/fas/fas/templates/cla/sign.html @@ -4,20 +4,20 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Contributor License Agreement

    +

    ${_('Contributor License Agreement')}

    - Use the below link to download/save the CLA as fedora-icla-${tg.identity.user.user_name}.txt, run gpg -as fedora-icla-${tg.identity.user.user_name}.txt, and upload fedora-icla-${tg.identity.user.user_name}.txt.asc in the form below. + ${_('Use the below link to download/save the CLA as fedora-icla-%(user)s.txt, run gpg -as fedora-icla-${tg.identity.user.user_name}.txt, and upload fedora-icla-%(user)s.txt.asc in the form below.') % {'user': tg.identity.user.user_name}}

    - Download the CLA text file here! + ${_('Download the CLA text file here!')}
    -
    - +
    +
    diff --git a/fas/fas/templates/cla/view.html b/fas/fas/templates/cla/view.html index d53e41b..2445016 100644 --- a/fas/fas/templates/cla/view.html +++ b/fas/fas/templates/cla/view.html @@ -4,11 +4,11 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Contributor License Agreement

    +

    ${_('Contributor License Agreement')}

    @@ -17,28 +17,28 @@
    - If you agree to these terms and conditions, type "I agree" here:
    - Full Name: ${user.givenName}
    - E-mail: ${user.mail}
    - Date: ${date}
    - + ${_('If you agree to these terms and conditions, type "I agree" here:')}
    + ${_('Full Name:')} ${user.givenName}
    + ${_('E-mail:')} ${user.mail}
    + ${_('Date:')} ${date}
    +

- Use the below link to download/save the CLA as fedora-icla-${user.cn}.txt, and run: -

gpg -as fedora-icla-${user.cn}.txt
- After, upload fedora-icla-${user.cn}.txt.asc in the form below. + ${_('Use the below link to download/save the CLA as fedora-icla-${user.cn}.txt, and run: + <pre>gpg -as fedora-icla-${user.cn}.txt</pre> + After, upload fedora-icla-${user.cn}.txt.asc in the form below.')}

- Download the CLA text file here! + ${_('Download the CLA text file here!')}

-
- +
+
diff --git a/fas/fas/templates/error.html b/fas/fas/templates/error.html index bc11f12..c72b965 100644 --- a/fas/fas/templates/error.html +++ b/fas/fas/templates/error.html @@ -4,7 +4,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

Error!

-

The following error(s) have occured with your request:

+

${_('Error!')}

+

${_('The following error(s) have occured with your request:')}

  • ${field}: ${str(error)} diff --git a/fas/fas/templates/group/edit.html b/fas/fas/templates/group/edit.html index c258afd..9d79ace 100644 --- a/fas/fas/templates/group/edit.html +++ b/fas/fas/templates/group/edit.html @@ -4,39 +4,39 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Edit Group + ${_('Edit Group')} -

    Edit Group: ${group.cn}

    +

    ${_('Edit Group: %s') % group.cn}

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    diff --git a/fas/fas/templates/group/invite.html b/fas/fas/templates/group/invite.html index 0b9e25a..40d67c9 100644 --- a/fas/fas/templates/group/invite.html +++ b/fas/fas/templates/group/invite.html @@ -4,16 +4,17 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Invite a new community member! + ${_('Invite a new community member!')} -

    Invite a new community member!

    +

    ${_('Invite a new community member!')}

    - To email:
    - From: ${user.mail}
    - Subject: Invitation to join the Fedora Team!
    - Message: + + ${_('To email:')}
    + ${_('From:)} ${user.mail}
    + ${_('Subject:')} Invitation to join the Fedora Team!
    + ${_('Message:')}

    ${user.givenName} <${user.mail}> has invited you to join the Fedora @@ -35,7 +36,7 @@ Fedora and FOSS are changing the world -- come be a part of it!

    - +
    diff --git a/fas/fas/templates/group/list.html b/fas/fas/templates/group/list.html index 5203fcc..89bcb00 100644 --- a/fas/fas/templates/group/list.html +++ b/fas/fas/templates/group/list.html @@ -4,28 +4,28 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Groups List + ${_('Groups List')} -

    List (${search})

    -

    Search Groups

    +

    ${_('List (%s)') % search}

    +

    ${_('Search Groups')}

    -

    "*" is a wildcard (Ex: "cvs*")

    +

    ${_('"*" is a wildcard (Ex: "cvs*")')}

    - +
    -

    Results

    +

    ${_('Results')}

    - + @@ -34,10 +34,10 @@ diff --git a/fas/fas/templates/group/new.html b/fas/fas/templates/group/new.html index 30453a7..913f000 100644 --- a/fas/fas/templates/group/new.html +++ b/fas/fas/templates/group/new.html @@ -4,45 +4,45 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Create a new FAS Group + ${_('Create a new FAS Group')} -

    Create a new FAS Group

    +

    ${_('Create a new FAS Group')}

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    diff --git a/fas/fas/templates/group/view.html b/fas/fas/templates/group/view.html index c66f2d7..a308cd5 100644 --- a/fas/fas/templates/group/view.html +++ b/fas/fas/templates/group/view.html @@ -4,64 +4,64 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Edit Group + ${_('Edit Group')}

    ${group.fedoraGroupDesc} (${group.cn})

    - My Status: - Approved - Unapproved - Not a Member + ${_('My Status:')} + ${_('Approved')} + ${_('Unapprove')}d + ${_('Not a Member')}

    - - + +
    - Remove me -

    Group Details (edit)

    + ${_('Remove me')} +

    Group Details ${_('(edit)')}

    -
    Name:
    ${group.cn}
    -
    Description:
    ${group.fedoraGroupDesc}
    -
    Owner:
    ${group.fedoraGroupOwner}
    -
    Type:
    ${group.fedoraGroupType}
    -
    Needs Sponsor:
    - Yes - No +
    ${_('Name:')}
    ${group.cn}
    +
    ${_('Description:')}
    ${group.fedoraGroupDesc}
    +
    ${_('Owner:')}
    ${group.fedoraGroupOwner}
    +
    ${_('Type:')}
    ${group.fedoraGroupType}
    +
    ${_('Needs Sponsor:')}
    + ${_('Yes')} + ${_('No')}
    -
    Self Removal
    - Yes - No +
    ${_('Self Removal:')}
    + ${_('Yes')} + ${_('No')}
    -
    Join Message:
    ${group.fedoraGroupJoinMsg}
    +
    ${_('Join Message:')}
    ${group.fedoraGroupJoinMsg}
    -

    Members

    +

    ${_('Members')}

    GroupDescriptionStatus
    ${_('Group')}${_('Description')}${_('Status')}
    ${groups[group].fedoraGroupDesc} - Approved - Unapproved + ${_('Approved')} + ${_('Unapproved')} - Apply + ${_('Apply')}
    - - - - - - - + + + + + + + - +
  • Sponsor + href="${tg.url('/group/sponsor/%s/%s' % (groups[user].cn, user))}">${_('Sponsor')} Approve + href="${tg.url('/group/sponsor/%s/%s' % (groups[user].cn, user))}">${_('Approve')}
  • - Remove + ${_('Remove')}
  • - Upgrade + ${_('Upgrade')}
  • - Downgrade + ${_('Downgrade')}
  • diff --git a/fas/fas/templates/home.html b/fas/fas/templates/home.html index 9515dba..fd94c16 100644 --- a/fas/fas/templates/home.html +++ b/fas/fas/templates/home.html @@ -4,18 +4,18 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Recent Builds (Koji)

    +

    ${_('Recent Builds')} ${_('(Koji)')}

    UsernameSponsorDate AddedDate ApprovedApprovalRole TypeAction${_('Username')}${_('Sponsor')}${_('Date Added')}${_('Date Approved')}${_('Approval')}${_('Role Type')}${_('Action')}
    ${user} ${groups[user].fedoraRoleSponsor}None${_('None')}
    - + - + diff --git a/fas/fas/templates/login.html b/fas/fas/templates/login.html index 2165cd4..24bf545 100644 --- a/fas/fas/templates/login.html +++ b/fas/fas/templates/login.html @@ -4,7 +4,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Login to the Fedora Accounts System + ${_('Login to the Fedora Accounts System')} -

    Login

    +

    ${_('Login')}

    ${message}

    -
    -
    +
    +
    - +
    diff --git a/fas/fas/templates/master.html b/fas/fas/templates/master.html index 8818072..294c1bd 100644 --- a/fas/fas/templates/master.html +++ b/fas/fas/templates/master.html @@ -3,6 +3,9 @@ xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:py="http://genshi.edgewall.org/" py:strip=""> + @@ -10,50 +13,50 @@
    - Logged in: ${tg.identity.user.user_name} + ${_('Logged in:')} ${tg.identity.user.user_name}
    @@ -64,18 +67,17 @@
    diff --git a/fas/fas/templates/openid/about.html b/fas/fas/templates/openid/about.html index 1be3680..4ac41f7 100644 --- a/fas/fas/templates/openid/about.html +++ b/fas/fas/templates/openid/about.html @@ -4,12 +4,12 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Fedora Project OpenID Provider

    +

    ${_{'Fedora Project OpenID Provider')}

    - Description goes here, username.fedorapeople.org + ${Markup_('Description goes here, <a href="http://username.fedorapeople.org/">username.fedorapeople.org</a>'))}

    diff --git a/fas/fas/templates/openid/id.html b/fas/fas/templates/openid/id.html index 845d16c..6f585fc 100644 --- a/fas/fas/templates/openid/id.html +++ b/fas/fas/templates/openid/id.html @@ -4,16 +4,16 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    User ${user.cn}

    +

    ${_('User %s') % user.cn}

    -
    Username:
    -
    ${user.cn}
    -
    Name:
    +
    ${_('Username:')}
    +
    ${user.cn}
    +
    ${_('Name:')}
    ${user.givenName}
    diff --git a/fas/fas/templates/openid/trusted.html b/fas/fas/templates/openid/trusted.html index 52edeb5..36d65cf 100644 --- a/fas/fas/templates/openid/trusted.html +++ b/fas/fas/templates/openid/trusted.html @@ -4,15 +4,16 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Fedora Accounts System + ${_('Fedora Accounts System')} -

    Fedora Project OpenID Provider

    +

    ${_('Fedora Project OpenID Provider')}

    -
    - + +
    +
    diff --git a/fas/fas/templates/user/changepass.html b/fas/fas/templates/user/changepass.html index 850d084..06bb4fa 100644 --- a/fas/fas/templates/user/changepass.html +++ b/fas/fas/templates/user/changepass.html @@ -4,16 +4,16 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Change Password + ${_('Change Password')} -

    Change Password

    +

    ${_('Change Password')}

      -
      -
      -
      -
      +
      +
      +
      +
    diff --git a/fas/fas/templates/user/edit.html b/fas/fas/templates/user/edit.html index 88923a2..967c7d6 100644 --- a/fas/fas/templates/user/edit.html +++ b/fas/fas/templates/user/edit.html @@ -4,41 +4,41 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Edit Account + ${_('Edit Account')} -

    Edit Account (${userName})

    +

    ${_('Edit Account (%s)') % userName}

    - +
    - +
    - +
    - +
    - +
    - +
    - +
    - +
    diff --git a/fas/fas/templates/user/list.html b/fas/fas/templates/user/list.html index a3cfd1c..c21f7ff 100644 --- a/fas/fas/templates/user/list.html +++ b/fas/fas/templates/user/list.html @@ -4,35 +4,35 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Users List + ${_('Users List')} -

    List (${search})

    +

    ${_('List (%s)') % search}

    -

    "*" is a wildcard (Ex: "cvs*")

    +

    ${_('"*" is a wildcard (Ex: "ric*")')}

    -

    Results

    +

    ${_('Results')}

    BuildBuild Date
    ${_('Build')}${_('Build Date')}
    - None + ${_('None')}
    - - + + diff --git a/fas/fas/templates/user/new.html b/fas/fas/templates/user/new.html index 08c1557..2b4c350 100644 --- a/fas/fas/templates/user/new.html +++ b/fas/fas/templates/user/new.html @@ -4,37 +4,37 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Sign up for a Fedora account + ${_('Sign up for a Fedora account')} -

    Sign up for a Fedora account

    +

    ${_('Sign up for a Fedora account')}

    - +
    - +
    - +
    - +
    - +
    - +
    diff --git a/fas/fas/templates/user/resetpass.html b/fas/fas/templates/user/resetpass.html index 523c92a..cc89c44 100644 --- a/fas/fas/templates/user/resetpass.html +++ b/fas/fas/templates/user/resetpass.html @@ -4,16 +4,16 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Reset Password + ${_('Reset Password')} -

    Reset Password

    +

    ${_('Reset Password')}

      -
      -
      -
      -
      +
      +
      +
      +
    diff --git a/fas/fas/templates/user/view.html b/fas/fas/templates/user/view.html index df8d389..c03399e 100644 --- a/fas/fas/templates/user/view.html +++ b/fas/fas/templates/user/view.html @@ -4,39 +4,39 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - View Account + ${_('View Account')} - - -

    Account Details (edit)

    + + +

    ${_('Account Details')} ${_('(edit)')}

    -
    Account Name:
    ${user.cn}
    -
    Real Name:
    ${user.givenName}
    -
    Email:
    ${user.mail}
    -
    Bugzilla Email:
    ${user.fedoraPersonBugzillaMail}
    -
    IRC Nick:
    ${user.fedoraPersonIrcNick} 
    -
    PGP Key:
    ${user.fedoraPersonKeyId} 
    -
    Telephone Number:
    ${user.telephoneNumber}
    -
    Postal Address:
    ${user.postalAddress}
    -
    Description:
    ${user.description} 
    -
    Password:
    Valid (change)
    -
    Account Status:
    Approved, Active
    -
    CLA:
    DoneNot Done (Sign it!)
    +
    ${_('Account Name:')}
    ${user.cn}
    +
    ${_('Real Name:')}
    ${user.givenName}
    +
    ${_('Email:')}
    ${user.mail}
    +
    ${_('Bugzilla Email:')}
    ${user.fedoraPersonBugzillaMail}
    +
    ${_('IRC Nick:')}
    ${user.fedoraPersonIrcNick} 
    +
    ${_('PGP Key:')}
    ${user.fedoraPersonKeyId} 
    +
    ${_('Telephone Number:')}
    ${user.telephoneNumber}
    +
    ${_('Postal Address:')}
    ${user.postalAddress}
    +
    ${_('Description:')}
    ${user.description} 
    +
    ${_('Password:')}
    ${_('Valid')} (change)
    +
    ${_('Account Status:')}
    ${_('Approved')}
    +
    ${_('CLA:')}
    ${_('Done')}${_('Not Done (<a href="%s">Sign it</a>!)') % tg.url('/cla')}
    -

    Your Roles

    -

    ${user.givenName}'s Roles

    +

    ${_('Your Roles')}

    +

    ${_('%s\'s Roles') % user.givenName}

    • ${groupdata[group].fedoraGroupDesc} (${group})
    • ${groupdata[group].fedoraGroupDesc} (${group})
      @@ -44,29 +44,26 @@
    • ${groupdata[group].fedoraGroupDesc}

      (${groups[group].fedoraRoleType})
      -
      Status:
      +
      ${_('Status:')}
      - Approved, Active + ${_('Approved')}
      -
      Tools:
      +
      ${_('Tools:')}
      -
      Queue:
      +
      ${_('Queue:')}
        -
      • ${user[0]} requests approval to join ${group}
      • - +
      • + ${Markup(_('<strong>%(user)s</strong> requests approval to join <strong>%(group)s</strong>.') % {'user': user[0], 'group': group})} +
      diff --git a/fas/fas/templates/welcome.html b/fas/fas/templates/welcome.html index 9793e68..d077489 100644 --- a/fas/fas/templates/welcome.html +++ b/fas/fas/templates/welcome.html @@ -4,7 +4,7 @@ xmlns:xi="http://www.w3.org/2001/XInclude"> - Welcome to FAS2 + ${_('Welcome to FAS2')}
    UsernameAccount Status${_('Username')}${_('Account Status')}
    ${user} - CLA Done - CLA Not Done + ${_('CLA Done')} + ${_('CLA Not Done')}