Example #1
0
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
Example #2
0
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
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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
Example #6
0
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
Example #7
0
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
Example #8
0
    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
Example #9
0
    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."
Example #10
0
    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."
Example #11
0
    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."
Example #12
0
    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."
Example #13
0
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()
Example #14
0
    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
Example #15
0
    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
Example #16
0
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"]
Example #17
0
    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
Example #18
0
    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)