* Add i18n support

* Clean up templates
 * Make admingroup config entry
This commit is contained in:
Ricky Zhou (周家杰) 2007-08-10 12:22:07 -04:00
parent 680a42e57e
commit 60e9d50f38
17 changed files with 1037 additions and 271 deletions

View file

@ -6,6 +6,8 @@
# The commented out values below are the defaults
admingroup = 'accounts'
# VIEW
# which view (template engine) to use if one is not specified in the
@ -33,6 +35,10 @@
# Set to True if the scheduler should be started
# tg.scheduler = False
# i18n
session_filter.on = True
i18n.run_template_filter = True
# VISIT TRACKING
# Each visit to your application will be assigned a unique visit ID tracked via
# a cookie sent to the visitor's browser.

View file

@ -1,4 +1,4 @@
from turbogears import controllers, expose
from turbogears import controllers, expose, config
# from model import *
from turbogears import identity, redirect, widgets, validate, validators, error_handler
from cherrypy import request, response
@ -14,6 +14,7 @@ import time
# import logging
# log = logging.getLogger("fas.controllers")
ADMINGROUP = config.get('admingroup')
class knownUser(validators.FancyValidator):
def _to_python(self, value, state):
@ -21,7 +22,7 @@ class knownUser(validators.FancyValidator):
def validate_python(self, value, state):
p = Person.byUserName(value)
if p.cn:
raise validators.Invalid("'%s' already exists" % value, value, state)
raise validators.Invalid(_("'%s' already exists") % value, value, state)
class unknownUser(validators.FancyValidator):
def _to_python(self, value, state):
@ -29,7 +30,7 @@ class unknownUser(validators.FancyValidator):
def validate_python(self, value, state):
p = Person.byUserName(value)
if not p.cn:
raise validators.Invalid("'%s' does not exist" % value, value, state)
raise validators.Invalid(_("'%s' does not exist") % value, value, state)
class unknownGroup(validators.FancyValidator):
def _to_python(self, value, state):
@ -37,49 +38,49 @@ class unknownGroup(validators.FancyValidator):
def validate_python(self, value, state):
g = Groups.groups(groupName)
if not g:
raise validators.Invalid("'%s' does not exist" % value, value, state)
raise validators.Invalid(_("'%s' does not exist") % value, value, state)
class newPerson(widgets.WidgetsList):
# cn = widgets.TextField(label='Username', validator=validators.PlainText(not_empty=True, max=10))
cn = widgets.TextField(label='Username', validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
givenName = widgets.TextField(label='Full Name', validator=validators.String(not_empty=True, max=42))
mail = widgets.TextField(label='email', validator=validators.Email(not_empty=True, strip=True))
telephoneNumber = widgets.TextField(label='Telephone Number', validator=validators.PhoneNumber(not_empty=True))
postalAddress = widgets.TextArea(label='Postal Address', validator=validators.NotEmpty)
cn = widgets.TextField(label=_('Username'), validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
givenName = widgets.TextField(label=_('Full Name'), validator=validators.String(not_empty=True, max=42))
mail = widgets.TextField(label=_('email'), validator=validators.Email(not_empty=True, strip=True))
telephoneNumber = widgets.TextField(label=_('Telephone Number'), validator=validators.PhoneNumber(not_empty=True))
postalAddress = widgets.TextArea(label=_('Postal Address'), validator=validators.NotEmpty)
newPersonForm = widgets.ListForm(fields=newPerson(), submit_text='Sign Up')
newPersonForm = widgets.ListForm(fields=newPerson(), submit_text=_('Sign Up'))
class editPerson(widgets.WidgetsList):
# cn = widgets.TextField(label='Username', validator=validators.PlainText(not_empty=True, max=10))
userName = widgets.HiddenField(validator=validators.All(unknownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
givenName = widgets.TextField(label='Full Name', validator=validators.String(not_empty=True, max=42))
mail = widgets.TextField(label='Email', validator=validators.Email(not_empty=True, strip=True))
fedoraPersonBugzillaMail = widgets.TextField(label='Bugzilla Email', validator=validators.Email(not_empty=True, strip=True))
fedoraPersonIrcNick = widgets.TextField(label='IRC Nick')
fedoraPersonKeyId = widgets.TextField(label='PGP Key')
telephoneNumber = widgets.TextField(label='Telephone Number', validator=validators.PhoneNumber(not_empty=True))
postalAddress = widgets.TextArea(label='Postal Address', validator=validators.NotEmpty)
description = widgets.TextArea(label='Description')
givenName = widgets.TextField(label=_('Full Name'), validator=validators.String(not_empty=True, max=42))
mail = widgets.TextField(label=_('Email'), validator=validators.Email(not_empty=True, strip=True))
fedoraPersonBugzillaMail = widgets.TextField(label=_('Bugzilla Email'), validator=validators.Email(not_empty=True, strip=True))
fedoraPersonIrcNick = widgets.TextField(label=_('IRC Nick'))
fedoraPersonKeyId = widgets.TextField(label=_('PGP Key'))
telephoneNumber = widgets.TextField(label=_('Telephone Number'), validator=validators.PhoneNumber(not_empty=True))
postalAddress = widgets.TextArea(label=_('Postal Address'), validator=validators.NotEmpty)
description = widgets.TextArea(label=_('Description'))
editPersonForm = widgets.ListForm(fields=editPerson(), submit_text='Update')
editPersonForm = widgets.ListForm(fields=editPerson(), submit_text=_('Update'))
class editGroup(widgets.WidgetsList):
groupName = widgets.HiddenField(validator=validators.All(unknownGroup(not_empty=True, max=10), validators.String(max=32, min=3)))
fedoraGroupDesc = widgets.TextField(label='Description', validator=validators.NotEmpty)
fedoraGroupOwner = widgets.TextField(label='Group Owner', validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
fedoraGroupNeedsSponsor = widgets.CheckBox(label='Needs Sponsor')
fedoraGroupUserCanRemove = widgets.CheckBox(label='Self Removal')
fedoraGroupJoinMsg = widgets.TextField(label='Group Join Message')
fedoraGroupDesc = widgets.TextField(label=_('Description'), validator=validators.NotEmpty)
fedoraGroupOwner = widgets.TextField(label=_('Group Owner'), validator=validators.All(knownUser(not_empty=True, max=10), validators.String(max=32, min=3)))
fedoraGroupNeedsSponsor = widgets.CheckBox(label=_('Needs Sponsor'))
fedoraGroupUserCanRemove = widgets.CheckBox(label=_('Self Removal'))
fedoraGroupJoinMsg = widgets.TextField(label=_('Group Join Message'))
editGroupForm = widgets.ListForm(fields=editGroup(), submit_text='Update')
editGroupForm = widgets.ListForm(fields=editGroup(), submit_text=_('Update'))
class findUser(widgets.WidgetsList):
userName = widgets.AutoCompleteField(label='Username', search_controller='search', search_param='userName', result_name='people')
action = widgets.HiddenField(label='action', default='apply', validator=validators.String(not_empty=True))
groupName = widgets.HiddenField(label='groupName', validator=validators.String(not_empty=True))
userName = widgets.AutoCompleteField(label=_('Username'), search_controller='search', search_param='userName', result_name='people')
action = widgets.HiddenField(default='apply', validator=validators.String(not_empty=True))
groupName = widgets.HiddenField(validator=validators.String(not_empty=True))
searchUserForm = widgets.ListForm(fields=findUser(), submit_text='Invite')
searchUserForm = widgets.ListForm(fields=findUser(), submit_text=_('Invite'))
class Root(controllers.RootController):
@ -115,7 +116,7 @@ class Root(controllers.RootController):
if not identity.current.anonymous \
and identity.was_login_attempted() \
and not identity.get_identity_errors():
turbogears.flash('Welcome, %s' % Person.byUserName(turbogears.identity.current.user_name).givenName)
turbogears.flash(_('Welcome, %s') % Person.byUserName(turbogears.identity.current.user_name).givenName)
raise redirect(forward_url)
forward_url=None
@ -139,7 +140,7 @@ class Root(controllers.RootController):
@expose()
def logout(self):
identity.current.logout()
turbogears.flash('You have successfully logged out.')
turbogears.flash(_('You have successfully logged out.'))
raise redirect("/")
@expose(template="fas.templates.viewAccount")
@ -152,7 +153,7 @@ class Root(controllers.RootController):
else:
personal = False
try:
Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn
Groups.byUserName(turbogears.identity.current.user_name)[ADMINGROUP].cn
admin = True
except KeyError:
admin = False
@ -176,11 +177,11 @@ class Root(controllers.RootController):
def editAccount(self, userName=None, action=None):
if userName:
try:
Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn
Groups.byUserName(turbogears.identity.current.user_name)[ADMINGROUP].cn
if not userName:
userName = turbogears.identity.current.user_name
except KeyError:
turbogears.flash('You cannot edit %s' % userName )
turbogears.flash(_('You cannot edit %s') % userName )
userName = turbogears.identity.current.user_name
else:
userName = turbogears.identity.current.user_name
@ -202,18 +203,18 @@ class Root(controllers.RootController):
def viewGroup(self, groupName):
try:
groups = Groups.byGroupName(groupName, includeUnapproved=True)
except KeyError, e:
raise ValueError, 'Group: %s - Does not exist!' % e
except KeyError:
raise ValueError, _('Group: %s - Does not exist!') % groupName
try:
group = Groups.groups(groupName)[groupName]
except TypeError:
raise ValueError, 'Group: %s - does not exist' % groupName
raise ValueError, _('Group: %s - Does not exist!') % groupName
userName = turbogears.identity.current.user_name
try:
myStatus = groups[userName].fedoraRoleStatus
except KeyError:
# Not in group
myStatus = 'Not a Member'
myStatus = 'Not a Member' # This has say 'Not a Member'
except TypeError:
groups = {}
try:
@ -230,14 +231,14 @@ class Root(controllers.RootController):
def editGroup(self, groupName, action=None):
userName = turbogears.identity.current.user_name
try:
Groups.byUserName(userName)['accounts'].cn
Groups.byUserName(userName)[ADMINGROUP].cn
except KeyError:
try:
Groups.byUserName(userName)[groupName]
if Groups.byUserName(userName)[groupName].fedoraRoleType.lower() != 'administrator':
raise KeyError
except KeyError:
turbogears.flash('You cannot edit %s' % groupName)
turbogears.flash(_('You cannot edit %s') % groupName)
turbogears.redirect('viewGroup?groupName=%s' % groupName)
group = Groups.groups(groupName)[groupName]
value = {'groupName' : groupName,
@ -260,7 +261,7 @@ class Root(controllers.RootController):
try:
groups.keys()
except:
turbogears.flash("No Groups found matching '%s'" % search)
turbogears.flash(_("No Groups found matching '%s'") % search)
groups = {}
return dict(groups=groups, search=search, myGroups=myGroups)
@ -284,20 +285,20 @@ class Root(controllers.RootController):
if password and passwordCheck:
if not password == passwordCheck:
turbogears.flash('Passwords do not match!')
turbogears.flash(_('Passwords do not match!'))
return dict()
if len(password) < 8:
turbogears.flash('Password is too short. Must be at least 8 characters long')
turbogears.flash(_('Password is too short. Must be at least 8 characters long'))
return dict()
newpass = p.generatePassword(password)
if userName and mail and not turbogears.identity.current.user_name:
if not mail == p.mail:
turbogears.flash("username + email combo unknown.")
turbogears.flash(_("username + email combo unknown."))
return dict()
newpass = p.generatePassword()
message = turbomail.Message('accounts@fedoraproject.org', p.mail, 'Fedora Project Password Reset')
message.plain = "You have requested a password reset! Your new password is - %s \nPlease go to https://admin.fedoraproject.org/fas/ to change it" % newpass['pass']
message = turbomail.Message('accounts@fedoraproject.org', p.mail, _('Fedora Project Password Reset'))
message.plain = _("You have requested a password reset! Your new password is - %s \nPlease go to https://admin.fedoraproject.org/fas/ to change it") % newpass['pass']
turbomail.enqueue(message)
p.__setattr__('userPassword', newpass['hash'])
@ -305,10 +306,10 @@ class Root(controllers.RootController):
print "PASS: %s" % newpass['pass']
if turbogears.identity.current.user_name:
turbogears.flash("Password Changed")
turbogears.flash(_("Password Changed"))
turbogears.redirect("viewAccount")
else:
turbogears.flash('Your password has been emailed to you')
turbogears.flash(_('Your password has been emailed to you'))
return dict()
@expose(template="fas.templates.userList")
@ -319,7 +320,7 @@ class Root(controllers.RootController):
try:
users[0]
except:
turbogears.flash("No users found matching '%s'" % search)
turbogears.flash(_("No users found matching '%s'") % search)
users = []
cla_done = Groups.byGroupName('cla_done')
claDone = {}
@ -357,14 +358,14 @@ class Root(controllers.RootController):
try:
group = Groups.groups(groupName)[groupName]
except KeyError:
turbogears.flash('Group Error: %s does not exist.' % groupName)
turbogears.flash(_('Group Error: %s does not exist.') % groupName)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
try:
p = Person.byUserName(userName)
if not p.cn:
raise KeyError, userName
except KeyError:
turbogears.flash('User Error: User %s does not exist.' % userName)
turbogears.flash(_('User Error: User %s does not exist.') % userName)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
g = Groups.byGroupName(groupName, includeUnapproved=True)
@ -374,15 +375,15 @@ class Root(controllers.RootController):
try:
Groups.apply(groupName, userName)
except ldap.ALREADY_EXISTS:
turbogears.flash('%s Already in group!' % p.cn)
turbogears.flash(_('%s Already in group!') % p.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
else:
turbogears.flash('%s Applied!' % p.cn)
turbogears.flash(_('%s Applied!') % p.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
# Some error checking for the sponsors
if g[userName].fedoraRoleType.lower() == 'administrator' and g[sponsor].fedoraRoleType.lower() == 'sponsor':
raise ValueError, 'Sponsors cannot alter administrators. End of story.'
raise ValueError, _('Sponsors cannot alter administrators. End of story.')
try:
userGroup = Groups.byGroupName(groupName)[userName]
@ -396,45 +397,45 @@ class Root(controllers.RootController):
try:
Groups.remove(group.cn, p.cn)
except TypeError:
turbogears.flash('%s could not be removed from %s!' % (p.cn, group.cn))
turbogears.flash(_('%(name)s could not be removed from %(group)s!') % {'name' : p.cn, 'group' : group.cn})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
else:
turbogears.flash('%s removed from %s!' % (p.cn, group.cn))
turbogears.flash(_('%(name)s removed from %(group)s!') % {'name' : p.cn, 'group' : group.cn})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
return dict()
# Upgrade user in a group
elif action == 'upgrade':
if g[userName].fedoraRoleType.lower() == 'sponsor' and g[sponsor].fedoraRoleType.lower() == 'sponsor':
raise ValueError, 'Sponsors cannot admin other sponsors'
raise ValueError, _('Sponsors cannot admin other sponsors')
try:
p.upgrade(groupName)
except TypeError, e:
turbogears.flash('Cannot upgrade %s - %s!' % (p.cn, e))
turbogears.flash(_('Cannot upgrade %(name)s - %(error)s!') % {'name' : p.cn, 'error' : e})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
turbogears.flash('%s Upgraded!' % p.cn)
turbogears.flash(_('%s Upgraded!') % p.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
# Downgrade user in a group
elif action == 'downgrade':
if g[userName].fedoraRoleType.lower() == 'administrator' and g[sponsor].fedoraRoleType.lower() == 'sponsor':
raise ValueError, 'Sponsors cannot downgrade admins'
raise ValueError, _('Sponsors cannot downgrade admins')
try:
p.downgrade(groupName)
except TypeError, e:
turbogears.flash('Cannot downgrade %s - %s!' % (p.cn, e))
turbogears.flash(_('Cannot downgrade %(name)s - %(error)s!') % {'name' : p.cn, 'error' : e})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
turbogears.flash('%s Downgraded!' % p.cn)
turbogears.flash(_('%s Downgraded!') % p.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
# Sponsor / Approve User
elif action == 'sponsor' or action == 'apply':
p.sponsor(groupName, sponsor)
turbogears.flash('%s has been sponsored!' % p.cn)
turbogears.flash(_('%s has been sponsored!') % p.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
turbogears.flash('Invalid action: %s' % action)
turbogears.flash(_('Invalid action: %s') % action)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
return dict()
@ -443,9 +444,9 @@ class Root(controllers.RootController):
@identity.require(identity.not_anonymous())
def inviteMember(self, name=None, email=None, skills=None):
if name and email:
turbogears.flash('Invitation Sent to: "%s" <%s>' % (name, email))
if name or email:
turbogears.flash('Please provide both an email address and the persons name.')
turbogears.flash(_('Invitation Sent to: "%(name)s" <%(email)s>') % {'name' : name, 'email' : email})
if name or email:#FIXME
turbogears.flash(_('Please provide both an email address and the persons name.'))
return dict()
@expose(template='fas.templates.apply')
@ -459,29 +460,29 @@ class Root(controllers.RootController):
if action != 'Remove':
try:
Groups.apply(groupName, userName)
turbogears.flash('Application sent for %s' % user.cn)
turbogears.flash(_('Application sent for %s') % user.cn)
except ldap.ALREADY_EXISTS, e:
turbogears.flash('Application Denied: %s' % e[0]['desc'])
turbogears.flash(_('Application Denied: %s') % e[0]['desc'])
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
if action == 'Remove' and group.fedoraGroupUserCanRemove == 'TRUE':
try:
Groups.remove(group.cn, user.cn)
except TypeError:
turbogears.flash('%s could not be removed from %s!' % (user.cn, group.cn))
turbogears.flash(_('%(user)s could not be removed from %(group)s!') % {'user' : user.cn, 'group' : group.cn})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
else:
turbogears.flash('%s removed from %s!' % (user.cn, group.cn))
turbogears.flash(_('%(user)s removed from %(group)s!') % {'user' : user.cn, 'group' : group.cn})
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
else:
turbogears.flash('%s does not allow self removal' % group.cn)
turbogears.flash(_('%s does not allow self removal') % group.cn)
turbogears.redirect('viewGroup?groupName=%s' % group.cn)
return dict()
@expose(template='fas.templates.signUp')
def signUp(self):
if turbogears.identity.not_anonymous():
turbogears.flash('No need to sign up, You have an account!')
turbogears.flash(_('No need to sign up, You have an account!'))
turbogears.redirect('viewAccount')
return dict(form=newPersonForm)
@ -494,15 +495,15 @@ class Root(controllers.RootController):
Person.newPerson(cn.encode('utf8'), givenName.encode('utf8'), mail.encode('utf8'), telephoneNumber.encode('utf8'), postalAddress.encode('utf8'))
p = Person.byUserName(cn.encode('utf8'))
newpass = p.generatePassword()
message = turbomail.Message('accounts@fedoraproject.org', p.mail, 'Fedora Project Password Reset')
message.plain = "You have requested a password reset! Your new password is - %s \nPlease go to https://admin.fedoraproject.org/fas/ to change it" % newpass['pass']
message = turbomail.Message('accounts@fedoraproject.org', p.mail, _('Fedora Project Password Reset'))
message.plain = _("You have requested a password reset! Your new password is - %s \nPlease go to https://admin.fedoraproject.org/fas/ to change it") % newpass['pass']
turbomail.enqueue(message)
p.__setattr__('userPassword', newpass['hash'])
turbogears.flash('Your password has been emailed to you. Please log in with it and change your password')
turbogears.flash(_('Your password has been emailed to you. Please log in with it and change your password'))
turbogears.redirect('/')
except ldap.ALREADY_EXISTS:
turbogears.flash('%s Already Exists, Please pick a different name' % cn)
turbogears.flash(_('%s Already Exists, Please pick a different name') % cn)
turbogears.redirect('signUp')
return dict()
@ -512,11 +513,11 @@ class Root(controllers.RootController):
def editAccountSubmit(self, givenName, mail, fedoraPersonBugzillaMail, telephoneNumber, postalAddress, userName=None, fedoraPersonIrcNick='', fedoraPersonKeyId='', description=''):
if userName:
try:
Groups.byUserName(turbogears.identity.current.user_name)['accounts'].cn
Groups.byUserName(turbogears.identity.current.user_name)[ADMINGROUP].cn
if not userName:
userName = turbogears.identity.current.user_name
except KeyError:
turbogears.flash('You cannot view %s' % userName)
turbogears.flash(_('You cannot view %s') % userName)
userName = turbogears.identity.current.user_name
turbogears.redirect("editAccount")
return dict()
@ -531,7 +532,7 @@ class Root(controllers.RootController):
user.__setattr__('telephoneNumber', telephoneNumber.encode('utf8'))
user.__setattr__('postalAddress', postalAddress.encode('utf8'))
user.__setattr__('description', description.encode('utf8'))
turbogears.flash('Your account has been updated.')
turbogears.flash(_('Your account has been updated.'))
turbogears.redirect("viewAccount?userName=%s" % userName)
return dict()
@ -549,12 +550,12 @@ class Root(controllers.RootController):
import turbomail
user = Person.byUserName(turbogears.identity.current.user_name)
if target:
message = turbomail.Message(user.mail, target, 'Come join The Fedora Project!')
message = turbomail.Message(user.mail, target, _('Come join The Fedora Project!'))
# message.plain = "Please come join the fedora project! Someone thinks your skills and abilities may be able to help our project. If your interested please go to http://fedoraproject.org/wiki/HelpWanted"
message.plain = "%s <%s> has invited you to join the Fedora \
message.plain = _("%(name)s <%(email)s> has invited you to join the Fedora \
Project! We are a community of users and developers who produce a \
complete operating system from entirely free and open source software \
(FOSS). %s thinks that you have knowledge and skills \
(FOSS). %(name)s thinks that you have knowledge and skills \
that make you a great fit for the Fedora community, and that you might \
be interested in contributing. \n\
\n\
@ -565,13 +566,12 @@ place for you whether you're an artist, a web site builder, a writer, or \
a people person. You'll grow and learn as you work on a team with other \
very smart and talented people. \n\
\n\
Fedora and FOSS are changing the world -- come be a part of it!" % (user.givenName, user.mail, user.givenName)
Fedora and FOSS are changing the world -- come be a part of it!") % {'name' : user.givenName, 'email' : user.mail}
turbomail.enqueue(message)
turbogears.flash('Message sent to: %s' % target)
turbogears.flash(_('Message sent to: %s') % target)
return dict(target=target, user=user)
def relativeUser(realUser, sudoUser):
''' Takes user and sees if they are allow to sudo for remote group'''
p = Person.byUserName('realUser')

View file

@ -200,6 +200,13 @@ a
/* header icon */
}
#content h3
{
font-size: 2.2ex;
border-bottom: 1px solid #C0C0C0;
margin-bottom: 0.25ex;
}
#content a
{
color: #0C6ED0;
@ -211,14 +218,15 @@ a
.userbox dt
{
width: 23ex;
width: 20ex;
float: left;
text-align: right;
font-weight: bold;
}
.userbox dd
{
margin-left: 25ex;
margin-left: 22ex;
}
.account
@ -248,6 +256,7 @@ a
.roleslist
{
list-style: none;
margin: 0 2ex;
}
.roleslist li
@ -426,3 +435,9 @@ form li input, form li textarea
margin: 0;
}
.message p
{
margin: 1ex 0;
font-size: 3ex;
font-family: monospace;
}

View file

@ -1,14 +1,3 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<style type="text/css">
@import "/static/css/fas.css";
</style>
</head>
<body>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#">
<body>
<div py:for="user in groups">${user},${Person.byUserName(user).mail},${Person.byUserName(user).givenName},${groups[user].fedoraRoleType},0
</div>
</body>
<body>
<div py:for="user in groups">${user},${Person.byUserName(user).mail},${Person.byUserName(user).givenName},${groups[user].fedoraRoleType},0
</div>
</body>
</html>

View file

@ -1,10 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Edit Account</title>
</head>
<body>
<h2>Edit Account</h2>
${form(action='editAccountSubmit', method='post', value=value)}
</body>
<head>
<title>Edit Account</title>
</head>
<body>
<h2>Edit Account</h2>
${form(action='editAccountSubmit', method='post', value=value)}
</body>
</html>

View file

@ -1,10 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Edit Group</title>
</head>
<body>
<h2>Edit Group</h2>
${form(action='editGroupSubmit', method='post', value=value)}
</body>
<head>
<title>Edit Group</title>
</head>
<body>
<h2>Edit Group</h2>
${form(action='editGroupSubmit', method='post', value=value)}
</body>
</html>

View file

@ -1,10 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<meta content="text/plain; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>Crap!</title>
</head>
<body>
${exception}
</body>
<head>
<title>Crap!</title>
</head>
<body>
${exception}
</body>
</html>

View file

@ -4,19 +4,16 @@
<head>
<title>Groups List</title>
</head>
<body>
<h2>List (${search})</h2>
<h3>Search Groups</h3>
<form method="GET">
<p>"*" is a wildcard (Ex: "cvs*")</p>
<div>
<input type="text" value="${search}" name="search" size="15 "/>
<input type="submit" value="Search" />
</div>
<input type="text" value="${search}" name="search" size="15 "/>
<input type="submit" value="Search" />
</div>
</form>
<h3>Results</h3>
<ul class="letters">
<li py:for="letter in 'abcdefghijklmnopqrstuvwxyz'.upper()"><a href="?search=${letter}*">${letter}</a></li>
@ -28,10 +25,10 @@
<tr><th>Group</th><th>Description</th><th>Status</th></tr>
</thead>
<tbody>
<?python
keys = groups.keys()
keys.sort()
?>
<?python
keys = groups.keys()
keys.sort()
?>
<tr py:for="group in map(groups.get, keys)">
<td><a href="${tg.url('viewGroup', groupName=group.cn)}">${group.cn}</a></td>
<td>${group.fedoraGroupDesc}</td>

View file

@ -1,24 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Fedora Accounts System</title>
</head>
<body>
<h2 py:if="'userID' in builds.userLink" class="accounts">Recent Builds <a href='${builds.userLink}'>(Koji)</a></h2>
<table py:if="'userID' in builds.userLink">
<thead>
<head>
<title>Fedora Accounts System</title>
</head>
<body>
<h2 py:if="'userID' in builds.userLink" class="accounts">Recent Builds <a href="${builds.userLink}">(Koji)</a></h2>
<table py:if="'userID' in builds.userLink">
<thead>
<tr><th>Build</th><th>Build Date</th></tr>
</thead>
<!--<tr><td>Koji</td><td><a href='${builds.userLink}'>Build Info</a></td></tr>-->
<tr py:for="build in builds.builds">
</thead>
<!--<tr><td>Koji</td><td><a href="${builds.userLink}">Build Info</a></td></tr>-->
<tr py:for="build in builds.builds">
<td>
<span py:if="'complete' in builds.builds[build]['title']" class="approved"><a href="${build}">${builds.builds[build]['title']}</a></span>
<span py:if="'failed' in builds.builds[build]['title']" class="unapproved"><a href="${build}">${builds.builds[build]['title']}</a></span>
</td>
<td>${builds.builds[build]['pubDate']}</td>
</tr>
</table>
</tr>
</table>
</body>
</body>
</html>

View file

@ -1,41 +1,39 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<style type="text/css">
@import "/static/css/fas.css";
</style>
</head>
<body>
<h2>Invite a new community member!</h2>
<form method="POST">
<div>
To email: <input type='text' value='' name='target'/><br/>
From: ${user.mail}<br/>
Subject: Invitation to join the Fedora Team!<br/>
Message:
<pre>
${user.givenName} &lt;<a href='mailto: ${user.mail}'>${user.mail}</a>&gt; has invited you to join the Fedora
Project! We are a community of users and developers who produce a
complete operating system from entirely free and open source software
(FOSS). ${user.givenName} thinks that you have knowledge and skills
that make you a great fit for the Fedora community, and that you might
be interested in contributing.
How could you team up with the Fedora community to use and develop your
skills? Check out http://fedoraproject.org/wiki/Join for some ideas.
Our community is more than just software developers -- we also have a
place for you whether you're an artist, a web site builder, a writer, or
a people person. You'll grow and learn as you work on a team with other
very smart and talented people.
Fedora and FOSS are changing the world -- come be a part of it!
</pre>
<input type="submit" value="Send" />
</div>
</form>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Invite a new community member!</title>
</head>
<body>
<h2>Invite a new community member!</h2>
<form method="POST">
<div>
To email: <input type="text" value="" name="target" /><br />
From: ${user.mail}<br />
Subject: Invitation to join the Fedora Team!<br />
Message:
<div class="message">
<p>
${user.givenName} &lt;<a href='mailto: ${user.mail}'>${user.mail}</a>&gt; has invited you to join the Fedora
Project! We are a community of users and developers who produce a
complete operating system from entirely free and open source software
(FOSS). ${user.givenName} thinks that you have knowledge and skills
that make you a great fit for the Fedora community, and that you might
be interested in contributing.
</p>
<p>
How could you team up with the Fedora community to use and develop your
skills? Check out http://fedoraproject.org/wiki/Join for some ideas.
Our community is more than just software developers -- we also have a
place for you whether you're an artist, a web site builder, a writer, or
a people person. You'll grow and learn as you work on a team with other
very smart and talented people.
</p>
<p>
Fedora and FOSS are changing the world -- come be a part of it!
</p>
</div>
<input type="submit" value="Send" />
</div>
</form>
</body>
</html>

View file

@ -1,11 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Login to the Fedora Accounts System</title>
</head>
<style type="text/css">
#content ul
{
@ -13,7 +11,6 @@
margin: 1ex 3ex;
}
</style>
<body>
<h2>Login</h2>
<p>${message}</p>

View file

@ -1,13 +1,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?python import sitetemplate ?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="sitetemplate">
<head py:match="item.tag=='{http://www.w3.org/1999/xhtml}head'" py:attrs="item.items()">
<title py:replace="''">Title</title>
<link href="${tg.url('/static/css/style.css')}" rel="stylesheet" type="text/css" />
<meta py:replace="item[:]"/>
</head>
<body py:match="item.tag=='{http://www.w3.org/1999/xhtml}body'" py:attrs="item.items()">
<div id="wrapper">
<div id="head">
@ -62,14 +60,13 @@
<div id="footer">
<ul id="footlinks">
<li class="first"><a href="/">About</a></li>
<li><a href="/">Contact Us</a></li>
<li><a href="/">Legal &amp; Privacy</a></li>
<li><a href="/">Site Map</a></li>
<li><a href="/">Log Out</a></li>
<li><a href="http://fedoraproject.org/wiki/Communicate">Contact Us</a></li>
<li><a href="http://fedoraproject.org/wiki/Legal">Legal &amp; Privacy</a></li>
<!--<li><a href="/">Site Map</a></li>-->
<li><a href="${tg.url('logout')}">Log Out</a></li>
</ul>
<p class="copy">
Copyright &copy; 2007 Red Hat, Inc. and others. All Rights Reserved.
Copyright © 2007 Red Hat, Inc. and others. All Rights Reserved.
Please send any comments or corrections to the <a href="mailto:webmaster@fedoraproject.org">websites team</a>.
</p>
<p class="disclaimer">

View file

@ -1,10 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Sign up for a Fedora account</title>
</head>
<body>
<h2>Sign up for a Fedora account</h2>
${form(action='newAccountSubmit', method='post')}
</body>
<head>
<title>Sign up for a Fedora account</title>
</head>
<body>
<h2>Sign up for a Fedora account</h2>
${form(action='newAccountSubmit', method='post')}
</body>
</html>

View file

@ -1,48 +1,41 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'"
xmlns:mochi="MyUniqueMochiUri">
<head>
<title>Users List</title>
</head>
<body>
<h2>List (${search})</h2>
<form method="GET">
<p>"*" is a wildcard (Ex: "cvs*")</p>
<div>
<input type="text" value="${search}" name="search" size="15 "/>
<input type="submit" value="Search" />
</div>
</form>
<h3>Results</h3>
<ul class="letters">
<li py:for="letter in 'abcdefghijklmnopqrstuvwxyz'.upper()"><a href="?search=${letter}*">${letter}</a></li>
<li><a href="?search=*">All</a></li>
</ul>
<table>
<thead>
<tr>
<th>Username</th>
<th>Account Status</th>
</tr>
</thead>
<tbody>
<?python
users.sort()
?>
<tr py:for="user in users">
<td><a href="editAccount?userName=${user}">${user}</a></td>
<td>
<span py:if='claDone[user]' class="approved"> Done</span>
<span py:if='not claDone[user]' class="unapproved"> Done</span>
</td>
</tr>
</tbody>
</table>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Users List</title>
</head>
<body>
<h2>List (${search})</h2>
<form method="GET">
<p>"*" is a wildcard (Ex: "cvs*")</p>
<div>
<input type="text" value="${search}" name="search" size="15 "/>
<input type="submit" value="Search" />
</div>
</form>
<h3>Results</h3>
<ul class="letters">
<li py:for="letter in 'abcdefghijklmnopqrstuvwxyz'.upper()"><a href="?search=${letter}*">${letter}</a></li>
<li><a href="?search=*">All</a></li>
</ul>
<table>
<thead>
<tr>
<th>Username</th>
<th>Account Status</th>
</tr>
</thead>
<tbody>
<?python
users.sort()
?>
<tr py:for="user in users">
<td><a href="editAccount?userName=${user}">${user}</a></td>
<td>
<span py:if="claDone[user]" class="approved"> Done</span>
<span py:if="not claDone[user]" class="unapproved"> Done</span>
</td>
</tr>
</tbody>
</table>
</body>
</html>

View file

@ -1,21 +1,23 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
py:extends="'master.kid'">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
<title>Welcome to FAS2</title>
</head>
<body>
Welcome to the Fedora Account System 2. This system is not yet live so feel free to play around. Just don't expect it to work. <br/>
<br/><br/>
<a href='login'>Log In</a><br/>
<!--<a href='#'>New Account</a><br/>-->
<a href='http://fedoraproject.org/wiki/Join'>Why Join?</a>
</body>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#" py:extends="'master.kid'">
<head>
<title>Welcome to FAS2</title>
<style type="text/css">
#content ul
{
list-style: square;
margin: 1ex 3ex;
}
</style>
</head>
<body>
<p>
Welcome to the Fedora Accounts System 2. This system is not yet live so feel free to play around. Just don't expect it to work.
</p>
<ul>
<li><a href="${tg.url('login')}">Log In</a></li>
<li><a href="${tg.url('signUp')}">New Account</a></li>
<li><a href="http://fedoraproject.org/wiki/Join">Why Join?</a></li>
</ul>
</body>
</html>

774
fas/locales/messages.pot Normal file
View file

@ -0,0 +1,774 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR ORGANIZATION
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2007-08-10 09:40\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: utf-8\n"
"Generated-By: pygettext.py 1.5\n"
#: fas/controllers.py:24
msgid "'%s' already exists"
msgstr ""
#: fas/controllers.py:32 fas/controllers.py:40
msgid "'%s' does not exist"
msgstr ""
#: fas/controllers.py:45 fas/controllers.py:78 fas/templates/userList.kid:th
#: fas/templates/viewGroup.kid:th
msgid "Username"
msgstr ""
#: fas/controllers.py:46 fas/controllers.py:56
msgid "Full Name"
msgstr ""
#: fas/controllers.py:47
msgid "email"
msgstr ""
#: fas/controllers.py:48 fas/controllers.py:61
#: fas/templates/viewAccount.kid:dt
msgid "Telephone Number"
msgstr ""
#: fas/controllers.py:49 fas/controllers.py:62
#: fas/templates/viewAccount.kid:dt
msgid "Postal Address"
msgstr ""
#: fas/controllers.py:51 fas/templates/login.kid:a
msgid "Sign Up"
msgstr ""
#: fas/controllers.py:57 fas/templates/viewAccount.kid:dt
msgid "Email"
msgstr ""
#: fas/controllers.py:58 fas/templates/viewAccount.kid:dt
msgid "Bugzilla Email"
msgstr ""
#: fas/controllers.py:59 fas/templates/viewAccount.kid:dt
msgid "IRC Nick"
msgstr ""
#: fas/controllers.py:60 fas/templates/viewAccount.kid:dt
msgid "PGP Key"
msgstr ""
#: fas/controllers.py:63 fas/controllers.py:69 fas/templates/groupList.kid:th
#: fas/templates/viewAccount.kid:dt
msgid "Description"
msgstr ""
#: fas/controllers.py:65 fas/controllers.py:75
msgid "Update"
msgstr ""
#: fas/controllers.py:70
msgid "Group Owner"
msgstr ""
#: fas/controllers.py:71
msgid "Needs Sponsor"
msgstr ""
#: fas/controllers.py:72 fas/templates/viewGroup.kid:dt
msgid "Self Removal"
msgstr ""
#: fas/controllers.py:73
msgid "Group Join Message"
msgstr ""
#: fas/controllers.py:82 fas/templates/viewGroup.kid:h3
msgid "Invite"
msgstr ""
#: fas/controllers.py:118
msgid "Welcome, %s"
msgstr ""
#: fas/controllers.py:125
msgid "The credentials you supplied were not correct or did not grant access to this resource."
msgstr ""
#: fas/controllers.py:128
msgid "You must provide your credentials before accessing this resource."
msgstr ""
#: fas/controllers.py:131
msgid "Please log in."
msgstr ""
#: fas/controllers.py:142
msgid "You have successfully logged out."
msgstr ""
#: fas/controllers.py:183 fas/controllers.py:240
msgid "You cannot edit %s"
msgstr ""
#: fas/controllers.py:206 fas/controllers.py:210
msgid "Group: %s - Does not exist!"
msgstr ""
#: fas/controllers.py:263
msgid "No Groups found matching '%s'"
msgstr ""
#: fas/controllers.py:287
msgid "Passwords do not match!"
msgstr ""
#: fas/controllers.py:290
msgid "Password is too short. Must be at least 8 characters long"
msgstr ""
#: fas/controllers.py:296
msgid "username + email combo unknown."
msgstr ""
#: fas/controllers.py:299 fas/controllers.py:497
msgid "Fedora Project Password Reset"
msgstr ""
#: fas/controllers.py:300 fas/controllers.py:498
msgid ""
"You have requested a password reset! Your new password is - %s \n"
"Please go to https://admin.fedoraproject.org/fas/ to change it"
msgstr ""
#: fas/controllers.py:308
msgid "Password Changed"
msgstr ""
#: fas/controllers.py:311
msgid "Your password has been emailed to you"
msgstr ""
#: fas/controllers.py:322
msgid "No users found matching '%s'"
msgstr ""
#: fas/controllers.py:360
msgid "Group Error: %s does not exist."
msgstr ""
#: fas/controllers.py:367
msgid "User Error: User %s does not exist."
msgstr ""
#: fas/controllers.py:377
msgid "%s Already in group!"
msgstr ""
#: fas/controllers.py:380
msgid "%s Applied!"
msgstr ""
#: fas/controllers.py:385
msgid "Sponsors cannot alter administrators. End of story."
msgstr ""
#: fas/controllers.py:399
msgid "%(name)s could not be removed from %(group)s!"
msgstr ""
#: fas/controllers.py:402
msgid "%(name)s removed from %(group)s!"
msgstr ""
#: fas/controllers.py:409
msgid "Sponsors cannot admin other sponsors"
msgstr ""
#: fas/controllers.py:413
msgid "Cannot upgrade %(name)s - %(error)s!"
msgstr ""
#: fas/controllers.py:415
msgid "%s Upgraded!"
msgstr ""
#: fas/controllers.py:422
msgid "Sponsors cannot downgrade admins"
msgstr ""
#: fas/controllers.py:426
msgid "Cannot downgrade %(name)s - %(error)s!"
msgstr ""
#: fas/controllers.py:428
msgid "%s Downgraded!"
msgstr ""
#: fas/controllers.py:434
msgid "%s has been sponsored!"
msgstr ""
#: fas/controllers.py:437
msgid "Invalid action: %s"
msgstr ""
#: fas/controllers.py:446
msgid "Invitation Sent to: \"%(name)s\" <%(email)s>"
msgstr ""
#: fas/controllers.py:448
msgid "Please provide both an email address and the persons name."
msgstr ""
#: fas/controllers.py:462
msgid "Application sent for %s"
msgstr ""
#: fas/controllers.py:464
msgid "Application Denied: %s"
msgstr ""
#: fas/controllers.py:471
msgid "%(user)s could not be removed from %(group)s!"
msgstr ""
#: fas/controllers.py:474
msgid "%(user)s removed from %(group)s!"
msgstr ""
#: fas/controllers.py:477
msgid "%s does not allow self removal"
msgstr ""
#: fas/controllers.py:484
msgid "No need to sign up, You have an account!"
msgstr ""
#: fas/controllers.py:501
msgid "Your password has been emailed to you. Please log in with it and change your password"
msgstr ""
#: fas/controllers.py:505
msgid "%s Already Exists, Please pick a different name"
msgstr ""
#: fas/controllers.py:519
msgid "You cannot view %s"
msgstr ""
#: fas/controllers.py:534
msgid "Your account has been updated."
msgstr ""
#: fas/controllers.py:552
msgid "Come join The Fedora Project!"
msgstr ""
#: fas/controllers.py:554
msgid ""
"%(name)s <%(email)s> has invited you to join the Fedora Project! We are a community of users and developers who produce a complete operating system from entirely free and open source software (FOSS). %(name)s thinks that you have knowledge and skills that make you a great fit for the Fedora community, and that you might be interested in contributing. \n"
"\n"
"How could you team up with the Fedora community to use and develop your skills? Check out http://fedoraproject.org/wiki/Join for some ideas. Our community is more than just software developers -- we also have a place for you whether you're an artist, a web site builder, a writer, or a people person. You'll grow and learn as you work on a team with other very smart and talented people. \n"
"\n"
"Fedora and FOSS are changing the world -- come be a part of it!"
msgstr ""
#: fas/controllers.py:570
msgid "Message sent to: %s"
msgstr ""
#: fas/templates/editAccount.kid:h2 fas/templates/editAccount.kid:title
msgid "Edit Account"
msgstr ""
#: fas/templates/editGroup.kid:h2 fas/templates/editGroup.kid:title
#: fas/templates/viewGroup.kid:title
msgid "Edit Group"
msgstr ""
#: fas/templates/error.kid:title
msgid "Crap!"
msgstr ""
#: fas/templates/groupList.kid:a fas/templates/userList.kid:a
msgid "All"
msgstr ""
#: fas/templates/groupList.kid:h3
msgid "Search Groups"
msgstr ""
#: fas/templates/groupList.kid:h3 fas/templates/userList.kid:h3
msgid "Results"
msgstr ""
#: fas/templates/groupList.kid:p fas/templates/userList.kid:p
msgid "\"*\" is a wildcard (Ex: \"cvs*\")"
msgstr ""
#: fas/templates/groupList.kid:span fas/templates/viewAccount.kid:span
#: fas/templates/viewGroup.kid:span
msgid "Approved"
msgstr ""
#: fas/templates/groupList.kid:span fas/templates/viewGroup.kid:span
msgid "Not a Member"
msgstr ""
#: fas/templates/groupList.kid:span fas/templates/viewGroup.kid:span
msgid "Unapproved"
msgstr ""
#: fas/templates/groupList.kid:th
msgid "Group"
msgstr ""
#: fas/templates/groupList.kid:th
msgid "Status"
msgstr ""
#: fas/templates/groupList.kid:title
msgid "Groups List"
msgstr ""
#: fas/templates/home.kid:a
msgid "(Koji)"
msgstr ""
#: fas/templates/home.kid:h2
msgid "Recent Builds"
msgstr ""
#: fas/templates/home.kid:th
msgid "Build"
msgstr ""
#: fas/templates/home.kid:th
msgid "Build Date"
msgstr ""
#: fas/templates/home.kid:title
msgid "Fedora Accounts System"
msgstr ""
#: fas/templates/invite.kid:br
msgid "Message:"
msgstr ""
#: fas/templates/invite.kid:br
msgid "Subject: Invitation to join the Fedora Team!"
msgstr ""
#: fas/templates/invite.kid:div
msgid "To email:"
msgstr ""
#: fas/templates/invite.kid:h2 fas/templates/invite.kid:title
msgid "Invite a new community member!"
msgstr ""
#: fas/templates/invite.kid:p
msgid "Fedora and FOSS are changing the world -- come be a part of it!"
msgstr ""
#: fas/templates/invite.kid:p
msgid ""
"How could you team up with the Fedora community to use and develop your\n"
" skills? Check out http://fedoraproject.org/wiki/Join for some ideas.\n"
" Our community is more than just software developers -- we also have a\n"
" place for you whether you're an artist, a web site builder, a writer, or\n"
" a people person. You'll grow and learn as you work on a team with other\n"
" very smart and talented people."
msgstr ""
#: fas/templates/login.kid:a
msgid "Forgot Password?"
msgstr ""
#: fas/templates/login.kid:h2
msgid "Login"
msgstr ""
#: fas/templates/login.kid:label
msgid "Password:"
msgstr ""
#: fas/templates/login.kid:label
msgid "User Name:"
msgstr ""
#: fas/templates/login.kid:title
msgid "Login to the Fedora Accounts System"
msgstr ""
#: fas/templates/master.kid:a
msgid "."
msgstr ""
#: fas/templates/master.kid:a
msgid "About"
msgstr ""
#: fas/templates/master.kid:a
msgid "Apply For a new Group"
msgstr ""
#: fas/templates/master.kid:a
msgid "Communicate"
msgstr ""
#: fas/templates/master.kid:a
msgid "Contact Us"
msgstr ""
#: fas/templates/master.kid:a
msgid "Download Fedora"
msgstr ""
#: fas/templates/master.kid:a
msgid "Fedora"
msgstr ""
#: fas/templates/master.kid:a
msgid "Group List"
msgstr ""
#: fas/templates/master.kid:a
msgid "Help/Documentation"
msgstr ""
#: fas/templates/master.kid:a
msgid "Join Fedora"
msgstr ""
#: fas/templates/master.kid:a
msgid "Learn about Fedora"
msgstr ""
#: fas/templates/master.kid:a
msgid "Legal & Privacy"
msgstr ""
#: fas/templates/master.kid:a
msgid "Log Out"
msgstr ""
#: fas/templates/master.kid:a
msgid "My Account"
msgstr ""
#: fas/templates/master.kid:a
msgid "News"
msgstr ""
#: fas/templates/master.kid:a
msgid "Projects"
msgstr ""
#: fas/templates/master.kid:a
msgid "User List"
msgstr ""
#: fas/templates/master.kid:a
msgid "websites team"
msgstr ""
#: fas/templates/master.kid:a fas/templates/welcome.kid:a
msgid "Log In"
msgstr ""
#: fas/templates/master.kid:label
msgid "Search:"
msgstr ""
#: fas/templates/master.kid:p
msgid ""
"Copyright © 2007 Red Hat, Inc. and others. All Rights Reserved.\n"
" Please send any comments or corrections to the"
msgstr ""
#: fas/templates/master.kid:p
msgid "The Fedora Project is maintained and driven by the community and sponsored by Red Hat. This is a community maintained site. Red Hat is not responsible for content."
msgstr ""
#: fas/templates/master.kid:strong
msgid "Logged in:"
msgstr ""
#: fas/templates/master.kid:title
msgid "Title"
msgstr ""
#: fas/templates/resetPassword.kid:h2 fas/templates/resetPassword.kid:title
msgid "Reset Password"
msgstr ""
#: fas/templates/resetPassword.kid:label
msgid "New Password:"
msgstr ""
#: fas/templates/resetPassword.kid:label
msgid "Primary Email:"
msgstr ""
#: fas/templates/resetPassword.kid:label
msgid "Username:"
msgstr ""
#: fas/templates/resetPassword.kid:label
msgid "Verify Password:"
msgstr ""
#: fas/templates/signUp.kid:h2 fas/templates/signUp.kid:title
msgid "Sign up for a Fedora account"
msgstr ""
#: fas/templates/userList.kid:span fas/templates/viewAccount.kid:span
msgid "Done"
msgstr ""
#: fas/templates/userList.kid:th fas/templates/viewAccount.kid:dt
msgid "Account Status"
msgstr ""
#: fas/templates/userList.kid:title
msgid "Users List"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "(Create a new project)"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "(Join another project)"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "(View all pending requests...)"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "(change)"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Chewbacca D. Wookiee requests approval to join project as a"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Gaius Baltar requests approval to upgrade from"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Invite a New Member..."
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Leia Organa requests approval to upgrade from"
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Manage Project Details..."
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "Manage Project Membership..."
msgstr ""
#: fas/templates/viewAccount.kid:a
msgid "View All Pendind Project Membership Requests..."
msgstr ""
#: fas/templates/viewAccount.kid:a fas/templates/viewGroup.kid:a
msgid "(edit)"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Account Name"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "CLA"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Password"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Queue:"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Real Name"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Status:"
msgstr ""
#: fas/templates/viewAccount.kid:dt
msgid "Tools:"
msgstr ""
#: fas/templates/viewAccount.kid:h2
msgid "Your Fedora Account"
msgstr ""
#: fas/templates/viewAccount.kid:h3
msgid "Account Details"
msgstr ""
#: fas/templates/viewAccount.kid:h3
msgid "Your Roles"
msgstr ""
#: fas/templates/viewAccount.kid:span
msgid ", Active"
msgstr ""
#: fas/templates/viewAccount.kid:span
msgid "Not Done"
msgstr ""
#: fas/templates/viewAccount.kid:span
msgid "Valid"
msgstr ""
#: fas/templates/viewAccount.kid:strong
msgid "administrator"
msgstr ""
#: fas/templates/viewAccount.kid:strong
msgid "sponsor"
msgstr ""
#: fas/templates/viewAccount.kid:strong
msgid "to"
msgstr ""
#: fas/templates/viewAccount.kid:strong
msgid "user"
msgstr ""
#: fas/templates/viewAccount.kid:title
msgid "View Account"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Approve"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Delete"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Downgrade"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Remove me"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Suspend"
msgstr ""
#: fas/templates/viewGroup.kid:a
msgid "Upgrade"
msgstr ""
#: fas/templates/viewGroup.kid:a fas/templates/viewGroup.kid:th
msgid "Sponsor"
msgstr ""
#: fas/templates/viewGroup.kid:div
msgid "-- Error!"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Description:"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Join Message:"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Name:"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Needs Sponsor:"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Owner:"
msgstr ""
#: fas/templates/viewGroup.kid:dt
msgid "Type:"
msgstr ""
#: fas/templates/viewGroup.kid:h2
msgid "Members"
msgstr ""
#: fas/templates/viewGroup.kid:h3
msgid "Group Details"
msgstr ""
#: fas/templates/viewGroup.kid:h3
msgid "My Status:"
msgstr ""
#: fas/templates/viewGroup.kid:span
msgid "No"
msgstr ""
#: fas/templates/viewGroup.kid:span
msgid "Yes"
msgstr ""
#: fas/templates/viewGroup.kid:th
msgid "Action"
msgstr ""
#: fas/templates/viewGroup.kid:th
msgid "Approval"
msgstr ""
#: fas/templates/viewGroup.kid:th
msgid "Date Added"
msgstr ""
#: fas/templates/viewGroup.kid:th
msgid "Date Approved"
msgstr ""
#: fas/templates/viewGroup.kid:th
msgid "Role Type"
msgstr ""
#: fas/templates/welcome.kid:a
msgid "Why Join?"
msgstr ""
#: fas/templates/welcome.kid:p
msgid "Welcome to the Fedora Accounts System 2. This system is not yet live so feel free to play around. Just don't expect it to work."
msgstr ""
#: fas/templates/welcome.kid:title
msgid "Welcome to FAS2"
msgstr ""