Blame dev-data.py

skrzepto 779aa7
#!/usr/bin/env python
skrzepto 779aa7
""" Populate the pagure db with some dev data. """
skrzepto 779aa7
Pierre-Yves Chibon b130e5
import argparse
skrzepto 779aa7
import os
Pierre-Yves Chibon b130e5
import sys
Pierre-Yves Chibon b130e5
Pierre-Yves Chibon b130e5
from sqlalchemy import create_engine, MetaData
Pierre-Yves Chibon b130e5
skrzepto 779aa7
import pagure
Pierre-Yves Chibon b130e5
import pagure.flask_app
skrzepto 779aa7
import tests
skrzepto 779aa7
skrzepto 779aa7
'''
skrzepto 779aa7
Usage:
skrzepto 779aa7
python dev-data.py --init
skrzepto 779aa7
python dev-data.py --clean
skrzepto 779aa7
python dev-data.py --populate
skrzepto 779aa7
python dev-data.py --all
skrzepto 779aa7
'''
skrzepto 779aa7
Pierre-Yves Chibon b130e5
_config = pagure.config.config.reload_config()
skrzepto 779aa7
skrzepto 779aa7
def init_database():
Pierre-Yves Chibon b130e5
    DB_URL = _config['DB_URL']
skrzepto 779aa7
skrzepto 779aa7
    # create the table if it doesnt exist
skrzepto 779aa7
    pagure.lib.model.create_tables(
skrzepto 779aa7
        DB_URL,
Pierre-Yves Chibon b130e5
        _config.get('PATH_ALEMBIC_INI', None),
Pierre-Yves Chibon b130e5
        acls=_config.get('ACLS', {}),
skrzepto 779aa7
        debug=True)
skrzepto 779aa7
skrzepto 779aa7
    engine = create_engine('%s' % DB_URL, echo=True)
skrzepto 779aa7
skrzepto 779aa7
    metadata = MetaData(engine)
skrzepto 779aa7
    metadata.reflect(bind=engine)
skrzepto 779aa7
    return engine, metadata
skrzepto 779aa7
skrzepto 779aa7
skrzepto 779aa7
def empty_dev_db(metadata, engine):
skrzepto 779aa7
    print('')
skrzepto 779aa7
    print('')
Pierre-Yves Chibon b130e5
    print('WARNING: Deleting all data from ', _config['DB_URL'])
skrzepto 779aa7
    # Dangerous: this will wipe the data from the table but keep the schema
skrzepto 779aa7
    print('')
skrzepto 779aa7
    response = raw_input('Do you want to continue yes or no?    ')
skrzepto 779aa7
    if 'yes'.startswith(response.lower()):
skrzepto 779aa7
        for tbl in reversed(metadata.sorted_tables):
skrzepto 779aa7
            if tbl.fullname != 'acls':
skrzepto 779aa7
                engine.execute(tbl.delete())
skrzepto 779aa7
skrzepto 779aa7
skrzepto 779aa7
def insert_data(session, username, user_email):
Pierre-Yves Chibon b130e5
    _config['EMAIL_SEND'] = False
Pierre-Yves Chibon b130e5
    _config['TESTING'] = True
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # tags
skrzepto 779aa7
    item = pagure.lib.model.Tag(
skrzepto 779aa7
        tag='tag1',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # Users
skrzepto 779aa7
    # Create a couple of users
skrzepto 779aa7
    item = pagure.lib.model.User(
skrzepto 779aa7
        user='pingou',
skrzepto 779aa7
        fullname='PY C',
skrzepto 779aa7
        password='foo',
skrzepto 779aa7
        default_email='bar@pingou.com',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.User(
skrzepto 779aa7
        user='foo',
skrzepto 779aa7
        fullname='foo bar',
skrzepto 779aa7
        password='foo',
skrzepto 779aa7
        default_email='foo@bar.com',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.User(
skrzepto 779aa7
        user=username,
skrzepto 779aa7
        fullname=username,
skrzepto 779aa7
        password='foo',
skrzepto 779aa7
        default_email=user_email,
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # pagure_group
skrzepto 779aa7
    item = pagure.lib.model.PagureGroup(
skrzepto 779aa7
        group_name='admin',
skrzepto 779aa7
        user_id=1,
Ryan Lerch 6aa425
        display_name='admin',
Ryan Lerch 6aa425
        description='Admin Group',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    # Add a couple of groups so that we can list them
skrzepto 779aa7
    item = pagure.lib.model.PagureGroup(
skrzepto 779aa7
        group_name='group',
skrzepto 779aa7
        group_type='user',
skrzepto 779aa7
        user_id=1,  # pingou
Ryan Lerch 6aa425
        display_name='group group',
Ryan Lerch 6aa425
        description='this is a group group',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.PagureGroup(
skrzepto 779aa7
        group_name='rel-eng',
skrzepto 779aa7
        group_type='user',
skrzepto 779aa7
        user_id=1,  # pingou
Ryan Lerch 6aa425
        display_name='Release Engineering',
Ryan Lerch 6aa425
        description='The group of release engineers',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # projects
skrzepto 779aa7
skrzepto 779aa7
    import shutil
skrzepto 779aa7
    # delete folder from local instance to start from a clean slate
skrzepto 779aa7
    if os.path.exists(pagure.APP.config['GIT_FOLDER']):
Pierre-Yves Chibon b130e5
        shutil.rmtree(_config['GIT_FOLDER'])
skrzepto 779aa7
skrzepto 779aa7
    tests.create_projects(session)
Pierre-Yves Chibon b130e5
    tests.create_projects_git(_config['GIT_FOLDER'], bare=True)
skrzepto 779aa7
    tests.add_content_git_repo(
Pierre-Yves Chibon b130e5
        os.path.join(_config['GIT_FOLDER'], 'test.git'))
skrzepto 779aa7
    tests.add_readme_git_repo(
Pierre-Yves Chibon b130e5
        os.path.join(_config['GIT_FOLDER'], 'test.git'))
skrzepto 779aa7
skrzepto 779aa7
    # Add some content to the git repo
skrzepto 779aa7
    tests.add_content_git_repo(
Pierre-Yves Chibon b130e5
        os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou',
skrzepto 779aa7
                     'test.git'))
skrzepto 779aa7
    tests.add_readme_git_repo(
Pierre-Yves Chibon b130e5
        os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou',
skrzepto 779aa7
                     'test.git'))
skrzepto 779aa7
    tests.add_commit_git_repo(
Pierre-Yves Chibon b130e5
        os.path.join(_config['GIT_FOLDER'], 'forks', 'pingou',
skrzepto 779aa7
                     'test.git'), ncommits=10)
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # user_emails
skrzepto 779aa7
    item = pagure.lib.model.UserEmail(
skrzepto 779aa7
        user_id=1,
skrzepto 779aa7
        email='bar@pingou.com')
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.UserEmail(
skrzepto 779aa7
        user_id=1,
skrzepto 779aa7
        email='foo@pingou.com')
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.UserEmail(
skrzepto 779aa7
        user_id=2,
skrzepto 779aa7
        email='foo@bar.com')
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.UserEmail(
skrzepto 779aa7
        user_id=3,
skrzepto 779aa7
        email=user_email)
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # user_emails_pending
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='pingou')
skrzepto 779aa7
    email_pend = pagure.lib.model.UserEmailPending(
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        email='foo@fp.o',
skrzepto 779aa7
        token='abcdef',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(email_pend)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # issues
skrzepto 779aa7
    # Add an issue and tag it so that we can list them
skrzepto 779aa7
    item = pagure.lib.model.Issue(
skrzepto 779aa7
        id=1,
skrzepto 779aa7
        uid='foobar',
skrzepto 779aa7
        project_id=1,
skrzepto 779aa7
        title='Problem with jenkins build',
skrzepto 779aa7
        content='For some reason the tests fail at line:24',
skrzepto 779aa7
        user_id=1,  # pingou
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.Issue(
skrzepto 779aa7
        id=2,
skrzepto 779aa7
        uid='foobar2',
skrzepto 779aa7
        project_id=1,
skrzepto 779aa7
        title='Unit tests failing',
skrzepto 779aa7
        content='Need to fix code for the unit tests to '
skrzepto 779aa7
                'pass so jenkins build can complete.',
skrzepto 779aa7
        user_id=1,  # pingou
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    user = pagure.lib.search_user(session, username=username)
skrzepto 779aa7
    item = pagure.lib.model.Issue(
skrzepto 779aa7
        id=3,
skrzepto 779aa7
        uid='foobar3',
skrzepto 779aa7
        project_id=1,
skrzepto 779aa7
        title='Segfault during execution',
skrzepto 779aa7
        content='Index out of bounds for variable i?',
skrzepto 779aa7
        user_id=user.id,  # current user
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # pagure_user_group
skrzepto 779aa7
    group = pagure.lib.search_groups(session, pattern=None,
skrzepto 779aa7
                                     group_name="rel-eng", group_type=None)
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='pingou')
skrzepto 779aa7
    item = pagure.lib.model.PagureUserGroup(
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        group_id=group.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    user = pagure.lib.search_user(session, username=username)
skrzepto 779aa7
    group = pagure.lib.search_groups(session, pattern=None,
skrzepto 779aa7
                                     group_name="admin", group_type=None)
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.PagureUserGroup(
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        group_id=group.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='foo')
skrzepto 779aa7
    group = pagure.lib.search_groups(session, pattern=None,
skrzepto 779aa7
                                     group_name="group", group_type=None)
skrzepto 779aa7
skrzepto 779aa7
    item = pagure.lib.model.PagureUserGroup(
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        group_id=group.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # projects_groups
skrzepto 779aa7
    group = pagure.lib.search_groups(session, pattern=None,
skrzepto 779aa7
                                     group_name="rel-eng", group_type=None)
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    item = pagure.lib.model.ProjectGroup(
skrzepto 779aa7
        project_id=repo.id,
skrzepto 779aa7
        group_id=group.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    group = pagure.lib.search_groups(session, pattern=None,
skrzepto 779aa7
                                     group_name="admin", group_type=None)
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test2')
skrzepto 779aa7
    item = pagure.lib.model.ProjectGroup(
skrzepto 779aa7
        project_id=repo.id,
skrzepto 779aa7
        group_id=group.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # pull_requests
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
Pierre-Yves Chibon b130e5
    forked_repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    req = pagure.lib.new_pull_request(
skrzepto 779aa7
        session=session,
skrzepto 779aa7
        repo_from=forked_repo,
skrzepto 779aa7
        branch_from='master',
skrzepto 779aa7
        repo_to=repo,
skrzepto 779aa7
        branch_to='master',
skrzepto 779aa7
        title='Fixing code for unittest',
skrzepto 779aa7
        user=username,
skrzepto 779aa7
        requestfolder=None,
skrzepto 779aa7
    )
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # tokens
skrzepto 779aa7
    tests.create_tokens(session)
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # user_projects
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='foo')
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    item = pagure.lib.model.ProjectUser(
skrzepto 779aa7
        project_id=repo.id,
skrzepto 779aa7
        user_id=user.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    user = pagure.lib.search_user(session, username=username)
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test2')
skrzepto 779aa7
    item = pagure.lib.model.ProjectUser(
skrzepto 779aa7
        project_id=repo.id,
skrzepto 779aa7
        user_id=user.id
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # issue_comments
skrzepto 779aa7
    item = pagure.lib.model.IssueComment(
skrzepto 779aa7
        user_id=1,
skrzepto 779aa7
        issue_uid='foobar',
skrzepto 779aa7
        comment='We may need to adjust the unittests instead of the code.',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # issue_to_issue
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    all_issues = pagure.lib.search_issues(session, repo)
skrzepto 779aa7
    pagure.lib.add_issue_dependency(session, all_issues[0],
skrzepto 779aa7
                                    all_issues[1], 'pingou',
Pierre-Yves Chibon b130e5
                                    _config['GIT_FOLDER'])
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # pull_request_comments
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='pingou')
skrzepto 779aa7
    # only 1 pull request available atm
skrzepto 779aa7
    pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0]
skrzepto 779aa7
    item = pagure.lib.model.PullRequestComment(
skrzepto 779aa7
        pull_request_uid=pr.uid,
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        comment="+1 for me. Btw, could you rebase before you merge?",
skrzepto 779aa7
        notification=0
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # pull_request_flags
skrzepto 779aa7
    user = pagure.lib.search_user(session, username='pingou')
skrzepto 779aa7
    # only 1 pull request available atm
skrzepto 779aa7
    pr = pagure.lib.get_pull_request_of_user(session, "pingou")[0]
skrzepto 779aa7
    item = pagure.lib.model.PullRequestFlag(
skrzepto 779aa7
        uid="random_pr_flag_uid",
skrzepto 779aa7
        pull_request_uid=pr.uid,
skrzepto 779aa7
        user_id=user.id,
skrzepto 779aa7
        username=user.user,
skrzepto 779aa7
        percent=80,
skrzepto 779aa7
        comment="Jenkins build passes",
skrzepto 779aa7
        url=str(pr.id)
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # tags_issues
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    issues = pagure.lib.search_issues(session, repo)
skrzepto 779aa7
    item = pagure.lib.model.TagIssue(
skrzepto 779aa7
        issue_uid=issues[0].uid,
skrzepto 779aa7
        tag='Blocker',
skrzepto 779aa7
    )
skrzepto 779aa7
    session.add(item)
skrzepto 779aa7
    session.commit()
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # tokens_acls
skrzepto 779aa7
    tests.create_tokens_acl(session)
skrzepto 779aa7
skrzepto 779aa7
    ######################################
skrzepto 779aa7
    # Fork a project
skrzepto 779aa7
    # delete fork data
skrzepto 779aa7
    fork_proj_location = "forks/foo/test.git"
skrzepto 779aa7
    try:
Pierre-Yves Chibon b130e5
        shutil.rmtree(os.path.join(_config['GIT_FOLDER'],
skrzepto 779aa7
                                   fork_proj_location))
skrzepto 779aa7
    except:
skrzepto 779aa7
        print('git folder already deleted')
skrzepto 779aa7
skrzepto 779aa7
    try:
Pierre-Yves Chibon b130e5
        shutil.rmtree(os.path.join(_config['DOCS_FOLDER'],
skrzepto 779aa7
                                   fork_proj_location))
skrzepto 779aa7
    except:
skrzepto 779aa7
        print('docs folder already deleted')
skrzepto 779aa7
skrzepto 779aa7
    try:
Pierre-Yves Chibon b130e5
        shutil.rmtree(os.path.join(_config['TICKETS_FOLDER'],
skrzepto 779aa7
                                   fork_proj_location))
skrzepto 779aa7
    except:
skrzepto 779aa7
        print('tickets folder already deleted')
skrzepto 779aa7
skrzepto 779aa7
    try:
Pierre-Yves Chibon b130e5
        shutil.rmtree(os.path.join(_config['REQUESTS_FOLDER'],
skrzepto 779aa7
                                   fork_proj_location))
skrzepto 779aa7
    except:
skrzepto 779aa7
        print('requests folder already deleted')
skrzepto 779aa7
Pierre-Yves Chibon b130e5
    repo = pagure.lib.get_authorized_project(session, 'test')
skrzepto 779aa7
    result = pagure.lib.fork_project(session, 'foo', repo,
Pierre-Yves Chibon b130e5
                                     _config['GIT_FOLDER'],
Pierre-Yves Chibon b130e5
                                     _config['DOCS_FOLDER'],
Pierre-Yves Chibon b130e5
                                     _config['TICKETS_FOLDER'],
Pierre-Yves Chibon b130e5
                                     _config['REQUESTS_FOLDER'])
skrzepto 779aa7
    if result == 'Repo "test" cloned to "foo/test"':
skrzepto 779aa7
        session.commit()
skrzepto 779aa7
skrzepto 779aa7
skrzepto 779aa7
if __name__ == "__main__":
skrzepto 779aa7
    desc = "Run the dev database initialization/insertion/deletion " \
Pierre-Yves Chibon b130e5
           "script for db located  " + str(_config['DB_URL'])
skrzepto 779aa7
    parser = argparse.ArgumentParser(prog="dev-data", description=desc)
skrzepto 779aa7
    parser.add_argument('-i', '--init', action="store_true",
skrzepto 779aa7
                        help="Create the dev db")
skrzepto 779aa7
    parser.add_argument('-p', '--populate', action="store_true",
skrzepto 779aa7
                        help="Add test data to the db")
skrzepto 779aa7
    parser.add_argument('-d', '--delete', action="store_true",
skrzepto 779aa7
                        help="Wipe the dev db")
skrzepto 779aa7
    parser.add_argument('-a', '--all', action="store_true",
skrzepto 779aa7
                        help="Create, Wipe, Populate the dev db")
skrzepto 779aa7
skrzepto 779aa7
    args = parser.parse_args()
skrzepto 779aa7
skrzepto 779aa7
    # forcing the user to choose
skrzepto 779aa7
    if not any(vars(args).values()):
skrzepto 779aa7
        parser.error('No arguments provided.')
skrzepto 779aa7
skrzepto 779aa7
    if args.init or args.delete or args.all:
skrzepto 779aa7
        eng, meta = init_database()
skrzepto 779aa7
skrzepto 779aa7
    if args.delete or args.all:
skrzepto 779aa7
        empty_dev_db(meta, eng)
skrzepto 779aa7
skrzepto 779aa7
    if args.populate or args.all:
Pierre-Yves Chibon b130e5
        session = pagure.flask_app.SESSION
skrzepto 779aa7
        invalid_option = ['pingou', 'bar@pingou.com', 'foo', 'foo@bar.com']
skrzepto 779aa7
        print("")
skrzepto 779aa7
        user_name = raw_input(
skrzepto 779aa7
            "Enter your username so we can add you into the test data:  ")
skrzepto 779aa7
        while user_name in invalid_option:
skrzepto 779aa7
            print("Reserved names: " + str(invalid_option))
skrzepto 779aa7
            user_name = raw_input(
skrzepto 779aa7
                "Enter your username so we can add you into the test data:  ")
skrzepto 779aa7
skrzepto 779aa7
        if not user_name.replace(" ", ""):
skrzepto 779aa7
            user_name = 'pythagoras'
skrzepto 779aa7
skrzepto 779aa7
        print("")
skrzepto 779aa7
        user_email = raw_input("Enter your user email:  ")
skrzepto 779aa7
skrzepto 779aa7
        while user_email in invalid_option:
skrzepto 779aa7
            print("Reserved names: " + str(invalid_option))
skrzepto 779aa7
            user_email = raw_input("Enter your user email:  ")
skrzepto 779aa7
skrzepto 779aa7
        if not user_email.replace(" ", ""):
skrzepto 779aa7
            user_email = 'pythagoras@math.com'
skrzepto 779aa7
skrzepto 779aa7
        insert_data(session, user_name, user_email)