def add_dependencies(user_id): #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, daconfig #docassemble_git_url = daconfig.get('docassemble git url', 'https://github.com/jhpyle/docassemble') package_by_name = dict() for package in Package.query.filter_by(active=True).order_by(Package.name, Package.id.desc()).all(): if package.name in package_by_name: continue package_by_name[package.name] = package installed_packages = get_installed_distributions() for package in installed_packages: if package.key in package_by_name: continue pip_info = get_pip_info(package.key) #sys.stderr.write("Home page of " + str(package.key) + " is " + str(pip_info['Home-page']) + "\n") Package.query.filter_by(name=package.key).delete() db.session.commit() package_auth = PackageAuth(user_id=user_id) if package.key.startswith('docassemble.') and pip_info['Home-page'] is not None and re.search(r'/github.com/', pip_info['Home-page']): package_entry = Package(name=package.key, package_auth=package_auth, type='git', giturl=pip_info['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) 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() sys.stderr.write("add_dependencies: ending\n") return
def add_dependencies(user_id, start_time=None): if start_time is None: start_time = time.time() #sys.stderr.write('add_dependencies: user_id is ' + str(user_id) + "\n") sys.stderr.write("add_dependencies: starting after " + str(time.time() - start_time) + " seconds\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 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 = 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 db.session.execute(delete(Package).filter_by(name=package.key)) packages_to_add.append(package) did_something = False if len(packages_to_add): did_something = True 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 did_something
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