Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def update_references(filename):
initialize_libreoffice()
subprocess_arguments = [LIBREOFFICE_PATH, '--headless', '--invisible', 'macro:///Standard.Module1.PysIndexer(' + filename + ')']
tries = 0
while tries < 5:
docassemble.base.functions.server.applock('obtain', 'libreoffice')
p = subprocess.Popen(subprocess_arguments, cwd=tempfile.gettempdir())
result = p.wait()
docassemble.base.functions.server.applock('release', 'libreoffice')
if result == 0:
break
logmessage("update_references: call to LibreOffice returned non-zero response")
tries += 1
time.sleep(0.5 + tries*random.random())
if result != 0:
return False
return True
optional keyword argument width.
"""
if not self.ok:
return(u'')
if hasattr(self, 'number') and hasattr(self, 'extension') and self.extension == 'pdf' and wait:
self.page_path(1, 'page')
if self.mimetype == 'text/markdown':
the_template = DATemplate(content=self.slurp())
return unicode(the_template)
elif self.mimetype == 'text/plain':
the_content = self.slurp()
return the_content
if docassemble.base.functions.this_thread.evaluation_context == 'docx':
if self.mimetype == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':
return docassemble.base.file_docx.include_docx_template(self)
else:
return docassemble.base.file_docx.image_for_docx(self.number, docassemble.base.functions.this_thread.current_question, docassemble.base.functions.this_thread.misc.get('docx_template', None), width=width)
else:
if width is not None:
return(u'[FILE ' + unicode(self.number) + u', ' + unicode(width) + u']')
else:
return(u'[FILE ' + unicode(self.number) + u']')
def url_for(self, **kwargs):
from docassemble.base.error import DAError
import docassemble.base.config
if not docassemble.base.config.loaded:
docassemble.base.config.load()
from docassemble.base.config import daconfig
from six import string_types, text_type
if 'db' not in daconfig:
daconfig['db'] = dict()
dbuser = daconfig['db'].get('user', None)
dbpassword = daconfig['db'].get('password', None)
dbhost = daconfig['db'].get('host', None)
if dbhost is None and dbuser is not None:
dbhost = 'localhost'
dbport = daconfig['db'].get('port', None)
dbprefix = daconfig['db'].get('prefix', 'postgresql+psycopg2://')
dbname = daconfig['db'].get('name', 'docassemble')
dbtableprefix = daconfig['db'].get('table prefix', None)
if not dbtableprefix:
dbtableprefix = ''
if len(pargs) > 0:
if ':' in pargs[0]:
raise Exception("MachineLearner: you cannot use a colon in a machine learning name")
question = docassemble.base.functions.get_current_question()
if question is not None:
self.group_id = question.interview.get_ml_store() + ':' + pargs[0]
else:
self.group_id = pargs[0]
if len(pargs) > 1:
self.initial_file = pargs[1]
if 'group_id' in kwargs:
self.group_id = kwargs['group_id']
if 'initial_file' in kwargs:
self.initial_file = kwargs['initial_file']
if kwargs.get('use_initial_file', False):
question = docassemble.base.functions.get_current_question()
if question is not None:
self.initial_file = question.interview.get_ml_store()
self.reset_counter = 0
def reset(self):
else:
the_name = self.new_item_name
self.__getitem__(the_name)
if hasattr(self, 'new_item_name'):
delattr(self, 'new_item_name')
if hasattr(self, 'there_is_another'):
#logmessage("3gather " + self.instanceName + ": del on there_is_another")
delattr(self, 'there_is_another')
if hasattr(self, 'there_is_another'):
#logmessage("4gather " + self.instanceName + ": del on there_is_another")
delattr(self, 'there_is_another')
self._validate(item_object_type, complete_attribute, keys=keys)
if self.auto_gather:
self.gathered = True
self.revisit = True
docassemble.base.functions.set_gathering_mode(False, self.instanceName)
return True
def _new_item_init_callback(self):
import sys
import os
import re
import docassemble.base.config
from io import open
if __name__ == "__main__":
docassemble.base.config.load(arguments=sys.argv)
def main():
from docassemble.base.config import daconfig
container_role = ':' + os.environ.get('CONTAINERROLE', '') + ':'
if re.search(r':(all|cron):', container_role):
import docassemble.webapp.fix_postgresql_tables
docassemble.webapp.fix_postgresql_tables.main()
import docassemble.webapp.create_tables
docassemble.webapp.create_tables.main()
webapp_path = daconfig.get('webapp', '/usr/share/docassemble/webapp/docassemble.wsgi')
import docassemble.webapp.cloud
cloud = docassemble.webapp.cloud.get_cloud()
if cloud is not None:
key = cloud.get_key('config.yml')
if key.does_exist:
new_task = docassemble.webapp.worker.background_action.delay(filename, user_info, key, None, None, None, {'action': cron_type_to_use, 'arguments': dict()})
else:
try:
docassemble.base.functions.reset_local_variables()
obtain_lock_patiently(key, filename)
interview_status = docassemble.base.parse.InterviewStatus(current_info=dict(user=dict(is_anonymous=False, is_authenticated=True, email=cron_user.email, theid=cron_user_id, the_user_id=cron_user_id, roles=[role.name for role in cron_user.roles], firstname=cron_user.first_name, lastname=cron_user.last_name, nickname=cron_user.nickname, country=cron_user.country, subdivisionfirst=cron_user.subdivisionfirst, subdivisionsecond=cron_user.subdivisionsecond, subdivisionthird=cron_user.subdivisionthird, organization=cron_user.organization, location=None, session_uid='cron'), session=key, secret=None, yaml_filename=filename, url=None, url_root=None, encrypted=False, action=cron_type_to_use, interface='cron', arguments=dict()))
interview.assemble(the_dict, interview_status)
save_status = docassemble.base.functions.this_thread.misc.get('save_status', 'new')
if interview_status.question.question_type in ["restart", "exit", "exit_logout"]:
reset_user_dict(key, filename, force=True)
if interview_status.question.question_type in ["restart", "exit", "logout", "exit_logout", "new_session"]:
release_lock(key, filename)
interview_status.do_sleep()
elif interview_status.question.question_type == "backgroundresponseaction":
new_action = interview_status.question.action
interview_status = docassemble.base.parse.InterviewStatus(current_info=dict(user=user_info, session=key, secret=None, yaml_filename=filename, url=None, url_root=None, encrypted=False, action=new_action['action'], arguments=new_action['arguments'], interface='cron'))
try:
interview.assemble(the_dict, interview_status)
except:
pass
save_status = docassemble.base.functions.this_thread.misc.get('save_status', 'new')
if save_status != 'ignore':
save_user_dict(key, the_dict, filename, encrypt=False, manual_user_id=cron_user_id, steps=steps, max_indexno=indexno)
release_lock(key, filename)
interview_status.do_sleep()
elif interview_status.question.question_type == "response" and interview_status.questionText == 'null':
release_lock(key, filename)
interview_status.do_sleep()
else:
if save_status != 'ignore':
save_user_dict(key, the_dict, filename, encrypt=False, manual_user_id=cron_user_id, steps=steps, max_indexno=indexno)
release_lock(key, filename)
from rauth import OAuth1Service, OAuth2Service
from flask_kvsession import KVSessionExtension
from simplekv.db.sql import SQLAlchemyStore
from sqlalchemy import create_engine, MetaData, Sequence
from docassemble.webapp.app_and_db import app, db
from docassemble.webapp.core.models import Attachments, Uploads, SpeakList, Messages, Supervisors
from docassemble.webapp.users.models import UserAuth, User, Role, UserDict, UserDictKeys, UserRoles, UserDictLock
from docassemble.webapp.packages.models import Package, PackageAuth, Install
from docassemble.webapp.config import daconfig, s3_config, S3_ENABLED, dbtableprefix, hostname
from docassemble.webapp.files import SavedFile, get_ext_and_mimetype
from PIL import Image
import pyPdf
import yaml
from subprocess import call, Popen, PIPE
DEBUG = daconfig.get('debug', False)
docassemble.base.parse.debug = DEBUG
import docassemble.base.util
docassemble.base.util.set_debug_status(DEBUG)
if DEBUG:
from pygments import highlight
from pygments.lexers import YamlLexer
from pygments.formatters import HtmlFormatter
app.debug = False
default_yaml_filename = daconfig.get('default_interview', 'docassemble.demo:data/questions/questions.yml')
if 'mail' not in daconfig:
daconfig['mail'] = dict()
os.environ['PYTHON_EGG_CACHE'] = tempfile.mkdtemp()
app.config['APP_NAME'] = daconfig.get('appname', 'docassemble')
app.config['BRAND_NAME'] = daconfig.get('brandname', daconfig.get('appname', 'docassemble'))