def new_username(fname, lname, tmpset=[]): prefix = "%s%s" % (fname[0], lname[0]) prefix = prefix.lower() def c(i): return "%s%i" % (prefix, i) n = 1 u = sr.user(c(n)) while u.in_db or u.username in tmpset: n += 1 u = sr.user(c(n)) return u.username
def new_username( fname, lname, tmpset = [] ): prefix = "%s%s" % (fname[0], lname[0]) prefix = prefix.lower() def c(i): return "%s%i" % (prefix, i) n = 1 u = sr.user( c(n) ) while u.in_db or u.username in tmpset: n += 1 u = sr.user( c(n) ) return u.username
def __init__(self, args): CmdBase.__init__(self, args) glist = sr.groups.list() for gname in glist: if re.match("^college-[0-9]+$", gname) == None: continue g = sr.group(gname) if hasattr(g, "desc"): desc = g.desc else: desc = "(no description)" print "%s: %s" % (gname, desc) print "\t %i members." % len(g.members) teams = set() for uname in g.members: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match("^team[0-9]+$", gname) != None: teams.add(gname) print "\t %i teams: %s" % (len(teams), ", ".join( [x[4:] for x in teams])) print
def login(self, usr="", pwd=""): """Logs the given user in with the given password. Returns SUCCESS if authentication was successful, and FAIL if it was unsuccessful. If no username and password are given, then SUCCESS is returned if we're already logged in -- otherwise FAIL. Where: SUCCESS is {"login":1} and FAIL is {"login":0}""" SUCCESS = {"login": 1} FAIL = {"login": 0} # When not using LDAP, logins are always successful if dev_env() and not config.get("user.use_ldap"): return SUCCESS if usr == "" and pwd == "": # Already logged in if get_curuser() != None: return SUCCESS if pwd == "": return FAIL u = sr.user(usr) if not u.in_db: return FAIL if u.bind(pwd): cherrypy.session["user"] = usr return SUCCESS else: return FAIL
def form_new_users(self, csv_fname): "Create the new user objects -- not in db yet." rows = self.read_csv(csv_fname) # Returns dictionary # keys are columns, values are column numbers colmap = self.discover_columns(rows) newusers = [] for row in rows: fname, lname, email = [ row[colmap[x]] for x in ["fname", "lname", "email"] ] u = sr.user( new_username(fname, lname, tmpset=[x.username for x in newusers])) u.cname = fname.strip().capitalize() u.sname = lname.strip().capitalize() u.email = email.strip().lower() newusers.append(u) return newusers
def create_team_user(tla, college_name): tu = sr.user(KICKSTART_USER_PREFIX + tla) tu.cname = tla tu.sname = college_name tu.email = '' tu.save() return tu
def __init__(self, args): CmdBase.__init__(self, args) glist = sr.groups.list() for gname in glist: if re.match( "^college-[0-9]+$", gname ) == None: continue g = sr.group(gname) if hasattr(g, "desc"): desc = g.desc else: desc = "(no description)" print "%s: %s" % (gname, desc) print "\t %i members." % len(g.members) teams = set() for uname in g.members: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match( "^team[0-9]+$", gname ) != None: teams.add(gname) print "\t %i teams: %s" % (len(teams), ", ".join([x[4:] for x in teams]) ) print
def __init__(self, args): CmdBase.__init__(self, args) tg = get_team(int(args[0])) if not tg.in_db: print "Team %i do not exist" % int(args[0]) sys.exit(1) # Group people into teachers, students, mentors and misc: g = ["teachers", "students", "mentors"] groups = {} team_grouped = {} for gname in g: groups[gname] = sr.group(gname) team_grouped[gname] = [] for uname in tg.members: for gname, g in groups.iteritems(): if uname in g.members: team_grouped[gname].append(uname) if hasattr(tg, "desc"): print "Team %i: %s" % (int(args[0]), tg.desc) else: print "Team", int(args[0]), "(no description)" print for status, ulist in team_grouped.iteritems(): if len(ulist): print len(ulist), "%s:" % status ulist.sort() for u in ulist: print "\t%s" % u print else: print "No %s." % status # Work out what college they're from college_gnames = set() for uname in team_grouped["students"] + team_grouped["teachers"]: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match( "^college-[0-9]+$", gname ) != None: college_gnames.add( gname ) college_gnames = list(college_gnames) college_gnames.sort() if len(college_gnames): print "Colleges:" for gname in college_gnames: print "\t%s" % gname else: print "No associated college."
def __init__(self, args): CmdBase.__init__(self, args) tg = get_team(int(args[0])) if not tg.in_db: print "Team %i do not exist" % int(args[0]) sys.exit(1) # Group people into teachers, students, mentors and misc: g = ["teachers", "students", "mentors"] groups = {} team_grouped = {} for gname in g: groups[gname] = sr.group(gname) team_grouped[gname] = [] for uname in tg.members: for gname, g in groups.iteritems(): if uname in g.members: team_grouped[gname].append(uname) if hasattr(tg, "desc"): print "Team %i: %s" % (int(args[0]), tg.desc) else: print "Team", int(args[0]), "(no description)" print for status, ulist in team_grouped.iteritems(): if len(ulist): print len(ulist), "%s:" % status ulist.sort() for u in ulist: print "\t%s" % u print else: print "No %s." % status # Work out what college they're from college_gnames = set() for uname in team_grouped["students"] + team_grouped["teachers"]: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match("^college-[0-9]+$", gname) != None: college_gnames.add(gname) college_gnames = list(college_gnames) college_gnames.sort() if len(college_gnames): print "Colleges:" for gname in college_gnames: print "\t%s" % gname else: print "No associated college."
def __init__(self, args): CmdBase.__init__(self, args) tid = args[0] tg = get_team(tid) if not tg.in_db: print "Team '%s' do not exist" % tid sys.exit(1) # Group people into teachers, students, mentors and misc: g = ["teachers", "students", "mentors"] groups = {} team_grouped = {} for gname in g: groups[gname] = sr.group(gname) team_grouped[gname] = [] for uname in tg.members: for gname, g in groups.iteritems(): if uname in g.members: team_grouped[gname].append(uname) print "Team", tid print for status, ulist in team_grouped.iteritems(): if len(ulist): print len(ulist), "%s:" % status ulist.sort() for u in ulist: print "\t%s" % u print else: print "No %s." % status # Work out what college they're from college_gnames = set() for uname in team_grouped["students"] + team_grouped["teachers"]: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match(COLLEGE_PATTERN, gname) != None: college_gnames.add(gname) college_gnames = list(college_gnames) college_gnames.sort() if len(college_gnames): print "Colleges:" for gname in college_gnames: print "\t%s" % gname else: print "No associated college."
def __init__(self, args): CmdBase.__init__(self, args) tid = args[0] tg = get_team(tid) if not tg.in_db: print "Team '%s' do not exist" % tid sys.exit(1) # Group people into teachers, students, mentors and misc: g = ["teachers", "students", "mentors"] groups = {} team_grouped = {} for gname in g: groups[gname] = sr.group(gname) team_grouped[gname] = [] for uname in tg.members: for gname, g in groups.iteritems(): if uname in g.members: team_grouped[gname].append(uname) print "Team", tid print for status, ulist in team_grouped.iteritems(): if len(ulist): print len(ulist), "%s:" % status ulist.sort() for u in ulist: print "\t%s" % u print else: print "No %s." % status # Work out what college they're from college_gnames = set() for uname in team_grouped["students"] + team_grouped["teachers"]: u = sr.user(uname) assert u.in_db for gname in u.groups(): if re.match( COLLEGE_PATTERN, gname ) != None: college_gnames.add( gname ) college_gnames = list(college_gnames) college_gnames.sort() if len(college_gnames): print "Colleges:" for gname in college_gnames: print "\t%s" % gname else: print "No associated college."
def is_ide_admin(): """Returns True if the current user is an IDE Admin, False otherwise""" if dev_env() and not config.get("user.use_ldap"): return config.get("user.can_admin") else: username = get_curuser() if username == None or username not in sr.users.list(): return False else: return "ide-admin" in sr.user(username).groups()
def __init__(self, args): CmdBase.__init__(self, args) CDESC = args[0] college = college_find( CDESC ) print "%s: %s" % (college.name , college.desc) teams = set() for uname in college.members: u = sr.user(uname) for g in u.groups(): if re.match( "^team[0-9]+$", g ) != None: teams.add(g) print "Teams:" for team in teams: print "\t -", team
def __init__(self, args): CmdBase.__init__(self, args) CDESC = args[0] college = college_find(CDESC) print "%s: %s" % (college.name, college.desc) teams = set() for uname in college.members: u = sr.user(uname) for g in u.groups(): if re.match(TEAM_PATTERN, g) != None: teams.add(g) print "Teams:" for team in teams: print "\t -", team
def getteams(): """Return a list of the teams the user's in""" username = get_curuser() if username == None: return [] groups = None if dev_env() and not config.get("user.use_ldap"): # Use the default group list when not using LDAP groups = config.get("user.default_groups") else: if username in sr.users.list(): user = sr.user(username) groups = user.groups() else: return RuntimeError("Could not find user") return [int(group[4:]) for group in groups if group[:4] == "team"]
def form_new_users(self, csv_fname): "Create the new user objects -- not in db yet." rows = self.read_csv( csv_fname ) # Returns dictionary # keys are columns, values are column numbers colmap = self.discover_columns(rows) newusers = [] for row in rows: fname, lname, email = [row[colmap[x]] for x in ["fname", "lname", "email"]] u = sr.user( new_username(fname, lname, tmpset = [x.username for x in newusers]) ) u.cname = fname.strip().capitalize() u.sname = lname.strip().capitalize() u.email = email.strip().lower() newusers.append(u) return newusers
print """} % end makebox }""" if len(sys.argv) < 2: print "Usage: make-cards.py INPUT-CSV" sys.exit(1) users = [] r = csv.reader(open(sys.argv[1], "r")) for row in r: uname = row[5].strip() pw = row[6].strip() user = sr.user(uname) users.append({"user": user, "password": pw}) header() x = 0 y = 0 COLS = 2 ROWS = 5 for user in users: if x == 0 and y == 0: page_header() output(x, y, user)