import sys, os, urllib, sha
os.environ['DJANGO_SETTTINGS_MODULE'] = 'pycon.settings'
from pycon.usermgr.models import *
from django.contrib.auth.models import *

GROUPS = [
    'Submitters',
    'Authors',
    'Presenters',
    'Organizers',
    'Guests',
    'VIPs',
    'Attendees',
    'Reviewers',
]

GPERMS = {
    'Organizers': ['propmgr.can_view_all_proposals',
                   'propmgr.can_view_proposal_stats',
                   'propmgr.can_view_proposal_listing',],
    'Reviewers':  ['propmgr.can_view_all_proposals',
                   'propmgr.can_view_proposal_listing',],
    'Authors':    ['propmgr.can_view_proposal_listing',],
    'Submitters': ['propmgr.can_view_proposal_listing',],
}

PASSWORD = 'pycon'
USERS = [
    # uname   email                 first      last         staff admin groups
    ('jrush', 'jeff@taupro.com',    'Jeff',    'Rush',      True, True, ['Organizers', 'Reviewers']),
    ('dougn', 'pycon07@dougma.com', 'Douglas', 'Napoleone', True, True, ['Organizers', 'Reviewers']),
    ('amk',   'amk@amk.ca',         'Andrew',  'Kuchling',  True, True, ['Organizers', 'Reviewers']),
]

def init_groups():
    for groupname in GROUPS:
        o, b = Group.objects.get_or_create(name=groupname)
        if b:
            print "Added Group:", groupname
        if groupname in GPERMS:
            for permcode in GPERMS[groupname]:
                app, perm = permcode.split('.')
                p = Permission.objects.get(content_type__app_label=app,
                                           codename=perm)
                o.permissions.add(p)
            o.save()

def init_users():
    for username, email, first, last, is_staff, is_admin, groups in USERS:
        try:
            #print "Username:", username
            user = User.objects.get(username = username)
        except User.DoesNotExist:
            print "Adding User:", username
            gobjs = [Group.objects.get(name=group) for group in groups]
            user = User.objects.create_user(username, email, PASSWORD)
            user.is_staff = is_staff
            user.is_superuser = is_admin
            user.first_name = first.encode('UTF8')
            user.last_name = last.encode('UTF8')
            user.groups=gobjs
            user.save()
            up = UserProfile()
            up.user = user
            up.save()

def main():
    init_groups()
    init_users()
    
if __name__ == '__main__':
    main()
