Exemplo n.º 1
0
def add_dependencies(user_id):
    start_time = time.time()
    #sys.stderr.write('add_dependencies: user_id is ' + str(user_id) + "\n")
    sys.stderr.write("add_dependencies: starting\n")
    from docassemble.base.config import hostname
    from docassemble.webapp.app_object import app
    from docassemble.webapp.db_object import db
    from docassemble.webapp.packages.models import Package, Install, PackageAuth
    packages_known = set()
    for package in Package.query.filter_by(active=True).all():
        packages_known.add(package.name)
    installed_packages = get_installed_distributions()
    home_pages = None
    packages_to_add = list()
    for package in installed_packages:
        if package.key in packages_known:
            continue
        if package.key.startswith('mysqlclient') or package.key.startswith('mysql-connector') or package.key.startswith('MySQL-python'):
            continue
        Package.query.filter_by(name=package.key).delete()
        packages_to_add.append(package)
    if len(packages_to_add):
        db.session.commit()
        for package in packages_to_add:
            package_auth = PackageAuth(user_id=user_id)
            if package.key.startswith('docassemble.'):
                if home_pages is None:
                    home_pages = get_home_page_dict()
                home_page = home_pages.get(package.key.lower(), None)
                if home_page is not None and re.search(r'/github.com/', home_page):
                    package_entry = Package(name=package.key, package_auth=package_auth, type='git', giturl=home_page, packageversion=package.version, dependency=True)
                else:
                    package_entry = Package(name=package.key, package_auth=package_auth, type='pip', packageversion=package.version, dependency=True)
            else:
                package_entry = Package(name=package.key, package_auth=package_auth, type='pip', packageversion=package.version, dependency=True)
            db.session.add(package_entry)
            db.session.commit()
            install = Install(hostname=hostname, packageversion=package_entry.packageversion, version=package_entry.version, package_id=package_entry.id)
            db.session.add(install)
            db.session.commit()
    sys.stderr.write("add_dependencies: ending after " + str(time.time() - start_time) + " seconds\n")
    return
Exemplo n.º 2
0
def add_dependencies(user_id):
    logmessage('add_dependencies: ' + str(user_id))
    from docassemble.webapp.config import hostname
    package_by_name = dict()
    for package in Package.query.filter_by(active=True).all():
        package_by_name[package.name] = package
    installed_packages = get_installed_distributions()
    for package in installed_packages:
        if package.key in package_by_name:
            continue
        package_auth = PackageAuth(user_id=user_id)
        if package.key in ['docassemble', 'docassemble.base', 'docassemble.webapp', 'docassemble.demo']:
            package_entry = Package(name=package.key, package_auth=package_auth, giturl=docassemble_git_url, packageversion=package.version, gitsubdir=re.sub(r'\.', '-', package.key), type='git', core=True)
        else:
            package_entry = Package(name=package.key, package_auth=package_auth, type='pip', packageversion=package.version, dependency=True)
        db.session.add(package_auth)
        db.session.add(package_entry)
        db.session.commit()
        install = Install(hostname=hostname, packageversion=package_entry.packageversion, version=package_entry.version, package_id=package_entry.id)
        db.session.add(install)
        db.session.commit()
    return
Exemplo n.º 3
0
def add_dependencies(user_id, start_time=None):
    if start_time is None:
        start_time = time.time()
    #logmessage('add_dependencies: user_id is ' + str(user_id))
    logmessage("add_dependencies: starting after " +
               str(time.time() - start_time) + " seconds")
    from docassemble.base.config import hostname
    #from docassemble.webapp.app_object import app
    from docassemble.webapp.db_object import db
    from docassemble.webapp.packages.models import Package, Install, PackageAuth
    from sqlalchemy import select, delete
    packages_known = set()
    for package in db.session.execute(
            select(Package.name).filter_by(active=True)):
        packages_known.add(package.name)
    installed_packages = get_installed_distributions(start_time=start_time)
    home_pages = None
    packages_to_add = []
    for package in installed_packages:
        if package.key in packages_known:
            continue
        if package.key.startswith('mysqlclient') or package.key.startswith(
                'mysql-connector') or package.key.startswith('MySQL-python'):
            continue
        db.session.execute(delete(Package).filter_by(name=package.key))
        packages_to_add.append(package)
    did_something = False
    if len(packages_to_add) > 0:
        did_something = True
        db.session.commit()
        for package in packages_to_add:
            if package.key.startswith('docassemble.'):
                if home_pages is None:
                    home_pages = get_home_page_dict()
                home_page = home_pages.get(package.key.lower(), None)
                if home_page is not None and re.search(r'/github.com/',
                                                       home_page):
                    package_entry = Package(
                        name=package.key,
                        package_auth=PackageAuth(user_id=user_id),
                        type='git',
                        giturl=home_page,
                        packageversion=package.version,
                        dependency=True)
                else:
                    package_entry = Package(
                        name=package.key,
                        package_auth=PackageAuth(user_id=user_id),
                        type='pip',
                        packageversion=package.version,
                        dependency=True)
            else:
                package_entry = Package(
                    name=package.key,
                    package_auth=PackageAuth(user_id=user_id),
                    type='pip',
                    packageversion=package.version,
                    dependency=True)
            db.session.add(package_entry)
            db.session.commit()
            install = Install(hostname=hostname,
                              packageversion=package_entry.packageversion,
                              version=package_entry.version,
                              package_id=package_entry.id)
            db.session.add(install)
            db.session.commit()
    logmessage("add_dependencies: ending after " +
               str(time.time() - start_time) + " seconds")
    return did_something