diff --git a/fas/moveover.py b/fas/moveover.py new file mode 100644 index 0000000..b53071c --- /dev/null +++ b/fas/moveover.py @@ -0,0 +1,80 @@ +#!/usr/bin/python +import pgdb + +from turbogears.view import engines +import turbogears.view +import turbogears.util as tg_util +from turbogears import view, database, errorhandling, config +from itertools import izip +from inspect import isclass +from turbogears import update_config, start_server +import cherrypy +cherrypy.lowercase_api = True +from os.path import * +import sys +import time +import crypt +import random + +if len(sys.argv) > 1: + update_config(configfile=sys.argv[1], + modulename="fas.config") +elif exists(join(dirname(__file__), "setup.py")): + update_config(configfile="dev.cfg",modulename="fas.config") +else: + update_config(configfile="prod.cfg",modulename="fas.config") + +from sqlalchemy import * +from sqlalchemy.exceptions import * +from fas.model import * + + +db = pgdb.connect(dsn='localhost', user='fedora', password='test', database='fedorausers') + +c = db.cursor() + +c.execute('select id, name, owner_id, group_type, needs_sponsor, user_can_remove, prerequisite_id, joinmsg from project_group;') +bool_dict = {0 : False, 1 : True} +print "Creating Groups..." +admin = People.by_username('admin') +admin_id = admin.id +for group in c.fetchall(): + (id, name, owner_id, group_type, needs_sponsor, user_can_remove, prerequisite_id, joinmsg) = group + print "%i - %s" % (id, name) + try: + group = Groups.by_id(id) + if prerequisite_id: + group.prerequisite = Groups.by_id(prerequisite_id) + session.flush() + except IntegrityError, e: + print "\tERROR - The group: '%s' (%i) could not be created - %s" % (name, id, e) + except FlushError, e: + print "\tERROR - The group: '%s' (%i) could not be created - %s" % (name, id, e) + except InvalidRequestError, e: + print "\tERROR - The group: '%s' (%i) could not be created - %s" % (name, id, e) + + session.close() + +c.execute('select person_id, project_group_id, role_type, role_domain, role_status, internal_comments, sponsor_id, creation, approval from role order by person_id;') +print "Creating Role Maps..." +for role in c.fetchall(): + (person_id, project_group_id, role_type, role_domain, role_status, internal_comments, sponsor_id, creation, approval) = role + print "%s - %s" % (person_id, project_group_id) + try: + role = PersonRoles.query.filter_by(person_id=person_id, group_id=project_group_id) + if role_status == 'declined': + ''' No longer exists ''' + continue + # Do we need to do weird stuff to convert from no time zone to time zone? + role.creation = creation + session.flush() + except ProgrammingError, e: + print "\tERROR - The role %s -> %s could not be created - %s" % (person_id, project_group_id, e) + session.close() + except IntegrityError, e: + if e.message.find('dupilcate key'): + print "\tERROR - The role %s -> %s already exists! Skipping" % (person_id, project_group_id) + session.close() + continue + print "\tERROR - The role %s -> %s could not be created - %s" % (person_id, project_group_id, e) + session.close()