| ''' |
| seed.py users the models in model.py and populates the database with dummy content |
| ''' |
|
|
| |
| |
| |
| from helpers import ( |
| create_org_by_org_or_uuid, |
| create_project_by_org, |
| create_document_by_file_path |
| ) |
| from config import ( |
| FILE_UPLOAD_PATH, |
| logger |
| ) |
| from util import ( |
| get_file_hash |
| ) |
| import os |
|
|
| |
| |
| |
|
|
| organizations = [ |
| { |
| 'display_name': 'Pepe Corp.', |
| 'namespace': 'pepe', |
| 'projects': [ |
| { |
| 'display_name': 'Pepetamine', |
| 'docs': [ |
| 'project-pepetamine.md' |
| ] |
| }, |
| { |
| 'display_name': 'Frogonil', |
| 'docs': [ |
| 'project-frogonil.md' |
| ] |
| }, |
| { |
| 'display_name': 'Kekzal', |
| 'docs': [ |
| 'project-kekzal.md' |
| ] |
| }, |
| { |
| 'display_name': 'Memetrex', |
| 'docs': [ |
| 'project-memetrex.md' |
| ] |
| }, |
| { |
| 'display_name': 'PepeTrak', |
| 'docs': [ |
| 'project-pepetrak.md' |
| ] |
| }, |
| { |
| 'display_name': 'MemeGen', |
| 'docs': [ |
| 'project-memegen.md' |
| ] |
| }, |
| { |
| 'display_name': 'Neuro-kek', |
| 'docs': [ |
| 'project-neurokek.md' |
| ] |
| }, |
| { |
| 'display_name': 'Pepe Corp. (company)', |
| 'docs': [ |
| 'org-about_the_company.md', |
| 'org-board_of_directors.md', |
| 'org-company_story.md', |
| 'org-corporate_philosophy.md', |
| 'org-customer_support.md', |
| 'org-earnings_fy2023.md', |
| 'org-management_team.md' |
| ] |
| } |
| ] |
| }, |
| { |
| 'display_name': 'Umbrella Corp', |
| 'namespace': 'acme', |
| 'projects': [ |
| {'display_name': 'T-Virus'}, |
| {'display_name': 'G-Virus'}, |
| {'display_name': 'Umbrella Corp. (company)'} |
| ] |
| }, |
| { |
| 'display_name': 'Cyberdine Systems', |
| 'namespace': 'cyberdine', |
| 'projects': [ |
| {'display_name': 'Skynet'}, |
| {'display_name': 'Cyberdine Systems (company)'} |
| ] |
| }, |
| { |
| 'display_name': 'Bluth Companies', |
| 'namespace': 'bluth', |
| 'projects': [ |
| {'display_name': 'Bluth Company (company)'} |
| ] |
| }, |
| { |
| 'display_name': 'Evil Corp', |
| 'namespace': 'evil', |
| 'projects': [ |
| {'display_name': 'E-Coin'}, |
| {'display_name': 'E-Corp Power'}, |
| {'display_name': 'Bank of E Network'}, |
| {'display_name': 'E Corp Labs'}, |
| {'display_name': 'Evil Corp (company)'} |
| ] |
| } |
| ] |
|
|
| training_data_path = os.path.join(os.path.dirname(__file__), f'{FILE_UPLOAD_PATH}/training_data') |
|
|
| for org in organizations: |
|
|
| org_obj = create_org_by_org_or_uuid( |
| display_name=org['display_name'], |
| namespace=org['namespace'] |
| ) |
| logger.debug(f'π Created organization: {org_obj.display_name}') |
|
|
| if 'projects' not in org: |
| continue |
|
|
| for project in org['projects']: |
| project['organization'] = org_obj |
|
|
| project_obj = create_project_by_org( |
| organization_id=org_obj, |
| display_name=project['display_name'] |
| ) |
| logger.debug(f'ποΈ Created project: {project_obj.display_name}') |
|
|
| project_uuid = str(project_obj.uuid) |
| org_uuid = str(org_obj.uuid) |
|
|
| |
| if not os.path.exists(os.path.join(FILE_UPLOAD_PATH, org_uuid, project_uuid)): |
| os.mkdir(os.path.join(FILE_UPLOAD_PATH, org_uuid, project_uuid)) |
|
|
| if 'docs' not in project: |
| continue |
|
|
| for doc in project['docs']: |
| file_path = os.path.join(training_data_path, doc) |
|
|
| |
| if os.path.isfile(file_path): |
| file_hash = get_file_hash(file_path) |
| create_document_by_file_path( |
| organization=org_obj, |
| project=project_obj, |
| file_path=file_path, |
| file_hash=file_hash |
| ) |
| logger.info(f' β
Created document: {doc}') |
| else: |
| logger.error(f' β Document not found: {doc}') |