HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/lib/db_seed.py
import logging

from buyercall.blueprints.user.models import User
from buyercall.blueprints.reports.models import Report
from buyercall.blueprints.partnership.models import Partnership
from buyercall.extensions import db

try:
    from instance import settings

    SEED_ADMIN_EMAIL = settings.SEED_ADMIN_EMAIL,
    SEED_PARTNER_EMAIL = settings.SEED_PARTNER_EMAIL
except ImportError:
    logging.error('Ensure __init__.py and settings.py both exist in instance/')
    exit(1)
except AttributeError:
    from config import settings

    SEED_ADMIN_EMAIL = settings.SEED_ADMIN_EMAIL,
    SEED_PARTNER_EMAIL = settings.SEED_PARTNER_EMAIL


def create_sysadmin():
    """
    Create an admin account.

    :return: User instance
    """
    if User.find_by_identity(SEED_ADMIN_EMAIL) is not None:
        return None

    params = {
        'role': 'sysadmin',
        'email': SEED_ADMIN_EMAIL,
        'password': 'password',
        'company': 'SysAdmin'
    }

    return User(**params).save()


def create_reports():
    """
    Create reports.
    """
    if Report.query.filter(Report.name == 'List of Interest').first() is None:
        report = Report(name='List of Interest')
        db.session.add(report)


def create_partnership():
    """
        Create partnership.
    """
    partnership = Partnership.query.filter(Partnership.name == 'Buyercall').first()
    if partnership is None:
        partnership = Partnership()
        partnership.default_billing_type = 'account'
        partnership.name = 'Buyercall'
        # partnership.account_invitation_url_token = str(uuid.uuid4())
        db.session.add(partnership)

    if partnership is not None and User.query.filter(User.company == 'Buyercall Partnership', User.is_deactivated.is_(False)).first() is None:
        params = {
            'role': 'partner',
            'email': SEED_PARTNER_EMAIL,
            'password': 'password',
            'company': 'Buyercall Partnership',
            'partnership': partnership,
        }
        partner = User(**params)
        db.session.add(partner)


def seed_database():
    """
    Entry point to seed the database with whatever we see fit.

    :return: None
    """
    create_sysadmin()
    create_reports()
    create_partnership()
    db.session.commit()

    return None