accounts2/fas/fas .LDAP.py.swp, NONE, 1.1 .test.py.swp, NONE, 1.1 LDAP.pyc, NONE, 1.1 __init__.py, NONE, 1.1 __init__.pyc, NONE, 1.1 controllers.py, NONE, 1.1 controllers.pyc, NONE, 1.1 controllers.py~, NONE, 1.1 fasLDAP.py, NONE, 1.1 fasLDAP.pyc, NONE, 1.1 fasLDAP.py~, NONE, 1.1 json.py, NONE, 1.1 model.py, NONE, 1.1 model.pyc, NONE, 1.1 release.py, NONE, 1.1 t.py, NONE, 1.1 test.py, NONE, 1.1
Michael Patrick McGrath (mmcgrath)
fedora-extras-commits at redhat.com
Mon Mar 26 15:11:19 UTC 2007
- Previous message (by thread): accounts2/fas/fas/static/css fas.css, NONE, 1.1 fas.css~, NONE, 1.1 style.css, NONE, 1.1
- Next message (by thread): accounts2/fas/fas/static/css/static/images favicon.ico, NONE, 1.1 header-icon_account.png, NONE, 1.1 header_inner.png, NONE, 1.1 hr.png, NONE, 1.1 icon_tool-item.png, NONE, 1.1 icon_warning.png, NONE, 1.1 info.png, NONE, 1.1 ok.png, NONE, 1.1 status_approved.png, NONE, 1.1 status_incomplete.png, NONE, 1.1 status_rejected.png, NONE, 1.1 tg_under_the_hood.png, NONE, 1.1 under_the_hood_blue.png, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mmcgrath
Update of /cvs/fedora/accounts2/fas/fas
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv26831/fas/fas
Added Files:
.LDAP.py.swp .test.py.swp LDAP.pyc __init__.py __init__.pyc
controllers.py controllers.pyc controllers.py~ fasLDAP.py
fasLDAP.pyc fasLDAP.py~ json.py model.py model.pyc release.py
t.py test.py
Log Message:
added tg fas2 code
--- NEW FILE .LDAP.py.swp ---
b0VIM 7.0
tp
ad
es)
--- NEW FILE .test.py.swp ---
b0VIM 7.0
tp
ad
--- NEW FILE LDAP.pyc ---
mò
|áEc
--- NEW FILE __init__.py ---
--- NEW FILE __init__.pyc ---
mò
PkàEc
--- NEW FILE controllers.py ---
from turbogears import controllers, expose
# from model import *
from turbogears import identity, redirect
from cherrypy import request, response
from fas.fasLDAP import UserAccount
from fas.fasLDAP import Person
from fas.fasLDAP import Groups
from turbogears import exception_handler
import turbogears
# from fas import json
# import logging
# log = logging.getLogger("fas.controllers")
class Root(controllers.RootController):
@expose(template="fas.templates.error")
def errorMessage(self, tg_exceptions=None):
''' Generic exception handler'''
message = 'Replace me with a tg_error popup thang %s' % tg_exceptions
return dict(handling_value=True,exception=message)
@expose(template="fas.templates.welcome")
# @identity.require(identity.in_group("admin"))
def index(self):
import time
# log.debug("Happy TurboGears Controller Responding For Duty")
return dict(now=time.ctime())
@expose(template="fas.templates.login")
def login(self, forward_url=None, previous_url=None, *args, **kw):
if not identity.current.anonymous \
and identity.was_login_attempted() \
and not identity.get_identity_errors():
raise redirect(forward_url)
forward_url=None
previous_url= request.path
if identity.was_login_attempted():
msg=_("The credentials you supplied were not correct or "
"did not grant access to this resource.")
elif identity.get_identity_errors():
msg=_("You must provide your credentials before accessing "
"this resource.")
else:
msg=_("Please log in.")
forward_url= request.headers.get("Referer", "/")
response.status=403
return dict(message=msg, previous_url=previous_url, logging_in=True,
original_parameters=request.params,
forward_url=forward_url)
@expose()
def logout(self):
identity.current.logout()
raise redirect("/")
@expose(template="fas.templates.editAccount")
# @identity.require(identity.in_group("admin"))
# @identity.require(identity.not_anonymous())
def editAccount(self,userName=None):
if not userName:
userName = turbogears.identity.current.user_name
user = Person.byUserName(userName)
groups = Groups.byUserName(userName)
# log.debug("Happy TurboGears Controller Responding For Duty")
return dict(user=user, groups=groups)
@expose(template="fas.templates.editGroup")
# @identity.require(identity.not_anonymous())
def editGroup(self, groupName):
groups = Groups.byGroupName(groupName)
return dict(groups=groups, groupName=groupName)
@expose(template="fas.templates.groupList")
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
# @identity.require(identity.not_anonymous())
def groupList(self, search='*'):
groups = Groups.groups(search)
try:
groups[0]
except:
turbogears.flash("No Groups found matching '%s'" % search)
groups = []
return dict(printList=groups, search=search)
@expose(template="fas.templates.userList")
# @identity.require(identity.not_anonymous())
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
def userList(self, search='a*'):
users = Person.users(search)
try:
users[0]
except:
turbogears.flash("No users found matching '%s'" % search)
users = []
# raise ValueError("No users found matching '%s'. Please go back and search again." % search)
return dict(printList=users, search=search)
@expose(template='fas.templates.edit')
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
# @identity.require(identity.not_anonymous())
def edit(self, userName, attribute, value, update=None):
attribute = attribute.encode('utf8')
value = value.encode('utf8')
if update:
p = Person.byUserName(userName)
p.__setattr__('%s' % attribute, '%s' % value)
turbogears.flash("'%s' Updated to %s" % (attribute, value))
return dict(userName=userName, attribute=attribute, value=value)
--- NEW FILE controllers.pyc ---
mò
BFc
s
s
s
--- NEW FILE controllers.py~ ---
from turbogears import controllers, expose
# from model import *
from turbogears import identity, redirect
from cherrypy import request, response
from fas.fasLDAP import UserAccount
from fas.fasLDAP import Person
from fas.fasLDAP import Groups
from turbogears import exception_handler
import turbogears
# from fas import json
# import logging
# log = logging.getLogger("fas.controllers")
class Root(controllers.RootController):
@expose(template="fas.templates.error")
def errorMessage(self, tg_exceptions=None):
''' Generic exception handler'''
message = 'Replace me with a tg_error popup thang %s' % tg_exceptions
return dict(handling_value=True,exception=message)
@expose(template="fas.templates.welcome")
# @identity.require(identity.in_group("admin"))
def index(self):
import time
# log.debug("Happy TurboGears Controller Responding For Duty")
return dict(now=time.ctime())
@expose(template="fas.templates.login")
def login(self, forward_url=None, previous_url=None, *args, **kw):
if not identity.current.anonymous \
and identity.was_login_attempted() \
and not identity.get_identity_errors():
raise redirect(forward_url)
forward_url=None
previous_url= request.path
if identity.was_login_attempted():
msg=_("The credentials you supplied were not correct or "
"did not grant access to this resource.")
elif identity.get_identity_errors():
msg=_("You must provide your credentials before accessing "
"this resource.")
else:
msg=_("Please log in.")
forward_url= request.headers.get("Referer", "/")
response.status=403
return dict(message=msg, previous_url=previous_url, logging_in=True,
original_parameters=request.params,
forward_url=forward_url)
@expose()
def logout(self):
identity.current.logout()
raise redirect("/")
@expose(template="fas.templates.editAccount")
# @identity.require(identity.in_group("admin"))
@identity.require(identity.not_anonymous())
def editAccount(self,userName=None):
if not userName:
userName = turbogears.identity.current.user_name
user = Person.byUserName(userName)
groups = Groups.byUserName(userName)
# log.debug("Happy TurboGears Controller Responding For Duty")
return dict(user=user, groups=groups)
@expose(template="fas.templates.editGroup")
# @identity.require(identity.not_anonymous())
def editGroup(self, groupName):
groups = Groups.byGroupName(groupName)
return dict(groups=groups, groupName=groupName)
@expose(template="fas.templates.groupList")
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
# @identity.require(identity.not_anonymous())
def groupList(self, search='*'):
groups = Groups.groups(search)
try:
groups[0]
except:
turbogears.flash("No Groups found matching '%s'" % search)
groups = []
return dict(printList=groups, search=search)
@expose(template="fas.templates.userList")
# @identity.require(identity.not_anonymous())
@exception_handler(errorMessage,rules="isinstance(tg_exceptions,ValueError)")
def userList(self, search='a*'):
users = Person.users(search)
try:
users[0]
except:
turbogears.flash("No users found matching '%s'" % search)
users = []
# raise ValueError("No users found matching '%s'. Please go back and search again." % search)
return dict(printList=users, search=search)
--- NEW FILE fasLDAP.py ---
#!/usr/bin/python
import ldap
class Server:
def __init__(self, server='localhost', who='', password=''):
self.ldapConn = ldap.open(server)
self.ldapConn.simple_bind_s(who, password)
class Group:
''' Individual Group abstraction class '''
def __init__(self, fedoraRoleApprovalDate, fedoraRoleSponsor, cn, fedoraRoleCreationDate, objectClass, fedoraRoleType, fedoraRoleStatus, fedoraRoleDomain):
self.fedoraRoleApprovalDate = fedoraRoleApprovalDate
self.fedoraRoleSponsor = fedoraRoleSponsor
self.cn = cn
self.fedoraRoleCreationDate = fedoraRoleCreationDate
self.objectClass = objectClass
self.fedoraRoleType = fedoraRoleType
self.fedoraRoleStatus = fedoraRoleStatus
self.fedoraRoleDomain = fedoraRoleDomain
class Groups:
''' Class contains group information '''
@classmethod
def byUserName(self, cn):
server = Server()
groups = {}
filter = 'objectClass=FedoraRole'
base = 'ou=Roles,cn=%s,ou=People,dc=fedoraproject,dc=org' % cn
groupsDict = search(base, filter)
for group in groupsDict:
cn = group[0][1]['cn'][0]
groups[cn] = Group(
fedoraRoleApprovalDate = group[0][1]['fedoraRoleApprovalDate'][0],
fedoraRoleSponsor = group[0][1]['fedoraRoleSponsor'][0],
cn = group[0][1]['cn'][0],
fedoraRoleCreationDate = group[0][1]['fedoraRoleCreationDate'][0],
objectClass = group[0][1]['objectClass'][0],
fedoraRoleType = group[0][1]['fedoraRoleType'][0],
fedoraRoleStatus = group[0][1]['fedoraRoleStatus'][0],
fedoraRoleDomain = group[0][1]['fedoraRoleDomain'][0]
)
return groups
@classmethod
def groups(self, searchExpression='*', findAttr='cn'):
groups = []
filter = '%s=%s' % (findAttr, searchExpression)
base = 'ou=FedoraGroups,dc=fedoraproject,dc=org'
attributes = ['cn']
groupsDict = search(base, filter, attributes)
if groupsDict:
for group in groupsDict:
groups.append(group[0][1]['cn'][0])
else:
return None
return groups
@classmethod
def remove(self, groupName, userName):
if groupName in self.byUserName(userName):
# Probably shouldn't be 'TypeError'
delete('cn=%s,ou=Roles,cn=%s,ou=People,dc=fedoraproject,dc=org' % (groupName, userName))
else:
raise TypeError, 'User not in that group'
@classmethod
def apply(self, groupName, userName):
''' Apply for a group '''
import datetime
if groupName in self.byUserName(userName):
# Probably shouldn't be 'TypeError'
raise TypeError, 'Already in that group'
try:
self.byGroupName(groupName)
except TypeError:
raise TypeError, 'Group "%s" does not exist' % groupName
dt = datetime.datetime.now()
now = '%s-%s-%s %s:%s:%s.%s' % (dt.year,
dt.month,
dt.day,
dt.hour,
dt.minute,
dt.second,
dt.microsecond)
attributes = { 'cn' : groupName,
'fedoraRoleApprovaldate' : 'NotApproved',
'fedoraRoleCreationDate' : now,
'fedoraRoleDomain' : 'None',
'fedoraRoleSponsor' : 'None',
'fedoraRoleStatus' : 'unapproved',
'fedoraRoleType' : 'user',
'objectClass' : ('fedoraRole')}
add('cn=%s,ou=Roles,cn=%s,ou=People,dc=fedoraproject,dc=org' % (groupName, userName), attributes)
@classmethod
def byGroupName(cls, cn):
self = cls()
server = Server()
users = {}
filter = 'cn=%s' % cn
base = 'ou=People,dc=fedoraproject,dc=org'
self.__attributes = ['cn']
attributes = ['cn']
usersDict = search(base, filter)
for user in usersDict:
userName = user[0][0].split(',')[2].split('=')[1]
users[userName] = Group(
fedoraRoleApprovalDate = user[0][1]['fedoraRoleApprovalDate'][0],
fedoraRoleSponsor = user[0][1]['fedoraRoleSponsor'][0],
cn = user[0][1]['cn'][0],
fedoraRoleCreationDate = user[0][1]['fedoraRoleCreationDate'][0],
objectClass = user[0][1]['objectClass'][0],
fedoraRoleType = user[0][1]['fedoraRoleType'][0],
fedoraRoleStatus = user[0][1]['fedoraRoleStatus'][0],
fedoraRoleDomain = user[0][1]['fedoraRoleDomain'][0]
)
return users
class Person:
''' information and attributes about users '''
__base = 'ou=People,dc=fedoraproject,dc=org'
__server = Server()
__filter = ''
def __getattr__(self, attr):
if attr.startswith('_'):
print 'GET %s=%s' % (attr, self.__getattr__(attr))
return self.__getattr__(attr)
try:
attributes = []
attributes.append(attr)
return search(self.__base, self.__filter, attributes)[0][0][1][attr][0]
except:
# Should probably raise here.
return None
def __setattr__(self, attr, value):
if attr.startswith('_'):
return setattr(self.__class__, attr, value)
base = 'cn=%s,ou=People,dc=fedoraproject,dc=org' % self.__getattr__('cn')
modify(base, attr, value, self.__getattr__(attr))
return setattr(self.__class__, attr, value)
@classmethod
def users(self, searchExpression='*', findAttr='cn'):
''' Returns a list of users '''
users = []
filter = '(&(objectClass=top)(%s=%s))' % (findAttr, searchExpression)
attributes = ['cn']
usersDict = search(self.__base, filter, attributes)
if usersDict:
for user in usersDict:
users.append(user[0][1]['cn'][0])
else:
return None
return users
@classmethod
def byFilter(cls, filter):
''' Returns only the first result in the search '''
self = cls()
self.__filter = filter
return self
@classmethod
def byUserName(self, cn):
'''Wrapper for byFilter - search by cn'''
return self.byFilter('cn=%s' % cn)
@classmethod
def auth(self, who, password):
''' Basic Authentication Module '''
who = 'cn=%s,ou=People,dc=fedoraproject,dc=org' % who
self.server.ldapConn.simple_bind_s(who, password)
class UserAccount:
def __init__(self):
self.realName = ''
self.userName = ''
self.primaryEmail = ''
self.groups = []
def delete(base, ldapServer=None):
''' Delete target base '''
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
ldapServer.simple_bind_s('cn=directory manager', 'test')
ldapServer.delete_s(base)
def add(base, attributes, ldapServer=None):
''' Add a new record to LDAP instance '''
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
attributes=[ (k,v) for k,v in attributes.items() ]
ldapServer.simple_bind_s('cn=directory manager', 'test')
ldapServer.add_s(base, attributes)
def modify(base, attribute, new, old=None, ldapServer=None):
''' Modify an attribute, requires write access '''
if old == new:
print "same"
return None
else:
print "diff %s %s %s" % (attribute, new, old)
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
from ldap import modlist
ldapServer.simple_bind_s('cn=directory manager', 'test')
o = { attribute : old }
n = { attribute : new }
print attribute
print o
print n
ldif = modlist.modifyModlist(o, n)
#commit
ldapServer.modify_s(base, ldif)
ldapServer.unbind_s()
def search(base, filter, attributes=None, ldapServer=None):
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
scope = ldap.SCOPE_SUBTREE
count = 0
timeout = 2
result_set = []
try:
result_id = ldapServer.search(base, scope, filter, attributes)
while 1:
result_type, result_data = ldapServer.result(result_id, timeout)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
if len(result_set) == 0:
print "No results."
return
except ldap.LDAPError, e:
print "Crap: %s" % e
raise
ldapServer.unbind_s()
return result_set
--- NEW FILE fasLDAP.pyc ---
mò
cÉFc
(
(
--- NEW FILE fasLDAP.py~ ---
#!/usr/bin/python
import ldap
class Server:
def __init__(self, server='localhost', who='', password=''):
self.ldapConn = ldap.open(server)
self.ldapConn.simple_bind_s(who, password)
class Group:
''' Individual Group abstraction class '''
def __init__(self, fedoraRoleApprovalDate, fedoraRoleSponsor, cn, fedoraRoleCreationDate, objectClass, fedoraRoleType, fedoraRoleStatus, fedoraRoleDomain):
self.fedoraRoleApprovalDate = fedoraRoleApprovalDate
self.fedoraRoleSponsor = fedoraRoleSponsor
self.cn = cn
self.fedoraRoleCreationDate = fedoraRoleCreationDate
self.objectClass = objectClass
self.fedoraRoleType = fedoraRoleType
self.fedoraRoleStatus = fedoraRoleStatus
self.fedoraRoleDomain = fedoraRoleDomain
class Groups:
''' Class contains group information '''
@classmethod
def byUserName(self, cn):
server = Server()
groups = {}
filter = 'objectClass=FedoraRole'
base = 'ou=Roles,cn=%s,ou=People,dc=fedoraproject,dc=org' % cn
groupsDict = search(base, filter)
for group in groupsDict:
cn = group[0][1]['cn'][0]
groups[cn] = Group(
fedoraRoleApprovalDate = group[0][1]['fedoraRoleApprovalDate'][0],
fedoraRoleSponsor = group[0][1]['fedoraRoleSponsor'][0],
cn = group[0][1]['cn'][0],
fedoraRoleCreationDate = group[0][1]['fedoraRoleCreationDate'][0],
objectClass = group[0][1]['objectClass'][0],
fedoraRoleType = group[0][1]['fedoraRoleType'][0],
fedoraRoleStatus = group[0][1]['fedoraRoleStatus'][0],
fedoraRoleDomain = group[0][1]['fedoraRoleDomain'][0]
)
return groups
@classmethod
def groups(self, searchExpression='*', findAttr='cn'):
groups = []
filter = '%s=%s' % (findAttr, searchExpression)
base = 'ou=FedoraGroups,dc=fedoraproject,dc=org'
attributes = ['cn']
groupsDict = search(base, filter, attributes)
if groupsDict:
for group in groupsDict:
groups.append(group[0][1]['cn'][0])
else:
return None
return groups
@classmethod
def byGroupName(self, cn):
server = Server()
users = {}
filter = 'cn=%s' % cn
base = 'ou=People,dc=fedoraproject,dc=org'
attributes = ['cn']
usersDict = search(base, filter)
for user in usersDict:
userName = user[0][0].split(',')[2].split('=')[1]
users[userName] = Group(
fedoraRoleApprovalDate = user[0][1]['fedoraRoleApprovalDate'][0],
fedoraRoleSponsor = user[0][1]['fedoraRoleSponsor'][0],
cn = user[0][1]['cn'][0],
fedoraRoleCreationDate = user[0][1]['fedoraRoleCreationDate'][0],
objectClass = user[0][1]['objectClass'][0],
fedoraRoleType = user[0][1]['fedoraRoleType'][0],
fedoraRoleStatus = user[0][1]['fedoraRoleStatus'][0],
fedoraRoleDomain = user[0][1]['fedoraRoleDomain'][0]
)
return users
class Person:
''' information and attributes about users '''
base = 'ou=People,dc=fedoraproject,dc=org'
server = Server()
# def __init__(self):
# self.server = Server()
@classmethod
def users(self, searchExpression='*', findAttr='cn'):
''' Returns a list of users '''
users = []
filter = '(&(objectClass=top)(%s=%s))' % (findAttr, searchExpression)
attributes = ['cn']
usersDict = search(self.base, filter, attributes)
if usersDict:
for user in usersDict:
users.append(user[0][1]['cn'][0])
else:
return None
return users
@classmethod
def byFilter(self, filter):
''' Returns only the first result in the search '''
person = search(self.base, filter)[0][0]
self.telephoneNumber = person[1]['telephoneNumber'][0]
self.userName = person[1]['cn'][0]
self.bugzillaEmail = person[1]['fedoraPersonBugzillaMail'][0]
self.ircNick = person[1]['fedoraPersonIrcNick'][0]
self.pgpKey = person[1]['fedoraPersonKeyId'][0]
self.primaryEmail = person[1]['mail'][0]
self.postalAddress = person[1]['postalAddress'][0]
self.givenName = person[1]['givenName'][0]
self.sshPubKey = person[1]['fedoraPersonSshKey'][0]
self.description = person[1]['description'][0]
return self
@classmethod
def byUserName(self, cn):
'''Wrapper for byFilter - search by cn'''
return self.byFilter('cn=%s' % cn)
@classmethod
def auth(self, who, password):
''' Basic Authentication Module '''
who = 'cn=%s,ou=People,dc=fedoraproject,dc=org' % who
self.server.ldapConn.simple_bind_s(who, password)
@classmethod
def commit(self):
''' Commit changes made to the object '''
# ghost is our fake user to compare against.
self.ghost = self.byUserName(self.userName)
#modify(self.server.ldapConn
class UserAccount:
def __init__(self):
self.realName = ''
self.userName = ''
self.primaryEmail = ''
self.groups = []
def modify(base, attribute, old, new, ldapServer=None):
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
from ldap import modlist
''' Modify an attribute, requires write access '''
ldapServer.simple_bind_s('cn=directory manager', 'test')
if old == new:
return None
o = { attribute : old }
n = { attribute : new }
ldif = modlist.modifyModlist(o, n)
#commit
ldapServer.modify_s(base, ldif)
ldapServer.unbind_s()
def search(base, filter, attributes=None, ldapServer=None):
if not ldapServer:
s = Server()
ldapServer = s.ldapConn
scope = ldap.SCOPE_SUBTREE
count = 0
timeout = 2
result_set = []
try:
result_id = ldapServer.search(base, scope, filter, attributes)
while 1:
result_type, result_data = ldapServer.result(result_id, timeout)
if (result_data == []):
break
else:
if result_type == ldap.RES_SEARCH_ENTRY:
result_set.append(result_data)
if len(result_set) == 0:
print "No results."
return
except ldap.LDAPError, e:
print "Crap: %s" % e
raise
ldapServer.unbind_s()
return result_set
--- NEW FILE json.py ---
# A JSON-based API(view) for your app.
# Most rules would look like:
# @jsonify.when("isinstance(obj, YourClass)")
# def jsonify_yourclass(obj):
# return [obj.val1, obj.val2]
# @jsonify can convert your objects to following types:
# lists, dicts, numbers and strings
from turbojson.jsonify import jsonify
from turbojson.jsonify import jsonify_sqlobject
from fas.model import User, Group, Permission
@jsonify.when('isinstance(obj, Group)')
def jsonify_group(obj):
result = jsonify_sqlobject( obj )
result["users"] = [u.user_name for u in obj.users]
result["permissions"] = [p.permission_name for p in obj.permissions]
return result
@jsonify.when('isinstance(obj, User)')
def jsonify_user(obj):
result = jsonify_sqlobject( obj )
del result['password']
result["groups"] = [g.group_name for g in obj.groups]
result["permissions"] = [p.permission_name for p in obj.permissions]
return result
@jsonify.when('isinstance(obj, Permission)')
def jsonify_permission(obj):
result = jsonify_sqlobject( obj )
result["groups"] = [g.group_name for g in obj.groups]
return result
--- NEW FILE model.py ---
from datetime import datetime
from turbogears.database import PackageHub
from sqlobject import *
from turbogears import identity
hub = PackageHub("fas")
__connection__ = hub
# class YourDataClass(SQLObject):
# pass
# identity models.
class Visit(SQLObject):
class sqlmeta:
table = "visit"
visit_key = StringCol(length=40, alternateID=True,
alternateMethodName="by_visit_key")
created = DateTimeCol(default=datetime.now)
expiry = DateTimeCol()
def lookup_visit(cls, visit_key):
try:
return cls.by_visit_key(visit_key)
except SQLObjectNotFound:
return None
lookup_visit = classmethod(lookup_visit)
class VisitIdentity(SQLObject):
visit_key = StringCol(length=40, alternateID=True,
alternateMethodName="by_visit_key")
user_id = IntCol()
--- NEW FILE model.pyc ---
mò
çâEc
--- NEW FILE release.py ---
# Release information about fas
version = "1.0"
# description = "Your plan to rule the world"
# long_description = "More description about your plan"
# author = "Your Name Here"
# email = "YourEmail at YourDomain"
# copyright = "Vintage 2006 - a good year indeed"
# if it's open source, you might want to specify these
# url = "http://yourcool.site/"
# download_url = "http://yourcool.site/download"
# license = "MIT"
--- NEW FILE t.py ---
from fasLDAP import Groups
g = Groups.byGroupName('art')
print g.__base
print g.__filter
--- NEW FILE test.py ---
from fasLDAP import add, Groups, delete
attributes = { 'cn' : 'infrastructureTest',
'fedoraRoleApprovaldate' : 'None',
'fedoraRoleCreationDate' : 'None',
'fedoraRoleDomain' : 'None',
'fedoraRoleSponsor' : 'None',
'fedoraRoleStatus' : 'unapproved',
'fedoraRoleType' : 'user',
'objectClass' : ('fedoraRole')}
print "add('cn=infrastructureTest,ou=Roles,cn=mmcgrath,ou=People,dc=fedoraproject,dc=org', attributes)"
print "delete('cn=infrastructureTest,ou=Roles,cn=mmcgrath,ou=People,dc=fedoraproject,dc=org')"
- Previous message (by thread): accounts2/fas/fas/static/css fas.css, NONE, 1.1 fas.css~, NONE, 1.1 style.css, NONE, 1.1
- Next message (by thread): accounts2/fas/fas/static/css/static/images favicon.ico, NONE, 1.1 header-icon_account.png, NONE, 1.1 header_inner.png, NONE, 1.1 hr.png, NONE, 1.1 icon_tool-item.png, NONE, 1.1 icon_warning.png, NONE, 1.1 info.png, NONE, 1.1 ok.png, NONE, 1.1 status_approved.png, NONE, 1.1 status_incomplete.png, NONE, 1.1 status_rejected.png, NONE, 1.1 tg_under_the_hood.png, NONE, 1.1 under_the_hood_blue.png, NONE, 1.1
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list