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