[app:caerp] use = egg:caerp pyramid.reload_templates = true pyramid.reload_assets = true pyramid.reload_all = true pyramid.debug_authorization = false pyramid.debug_notfound = true pyramid.debug_routematch = false pyramid.debug_templates = true pyramid.default_locale_name = fr_FR pyramid.includes = pyramid_retry pyramid_tm pyramid_services pyramid_layout pyramid_mako pyramid_chameleon pyramid_celery caerp_celery pyramid_mailer.debug js.deform deform_extensions #### MAIL FROM WITHIN THE APPLICATION #### # Add this one to pyramid.includes if you configured a mailbox #pyramid_mailer # Mail configuration # Host and port are set to localhost/25 by default #mail.host = localhost #mail.port=587 #mail.username=mygmailaccount@gmail.com #mail.password=mygmailpasswd #mail.tls=True mail.default_sender=noreply@__DOMAIN__ ### Optout address for unsubscription (for local smtp purpose) #mail.optout_address=unsubcribe@mail.com ## Bounce_url address (should indicate a server redirecting a query to the url passed in the url GET param) #mail.bounce_url=bounce_server.com #### DATABASE ACCESS CONFIGURATION #### sqlalchemy.url = mysql://__DB_USER__:__DB_PWD__@localhost/__DB_NAME__?charset=utf8mb4 # Uncomment the following line to use docker-compose # sqlalchemy.url = mysql://caerp:caerp@127.0.0.1:13306/caerp?charset=utf8mb4 sqlalchemy.echo=False # Those variables should be improved to fit your configuration sqlalchemy.pool_recycle=7200 sqlalchemy.pool_size=100 #### MAKO SPECIFIC CONFIGURATION #### mako.directories = caerp:templates mako.imports = from markupsafe import escape_silent mako.default_filters = escape_silent mako.module_directory = %(here)s/mako_compiled_templates #### BEAKER SESSION AND CACHE CONFIGURATION #### session.type=file session.data_dir = %(here)s/data/sessions/data session.lock_dir = %(here)s/data/sessions/lock session.cookie_on_exception = true #session.auto=True session.secret=mysecretpassphraseforsessionencoding session.timeout=3600 session.longtimeout=64000 cache.data_dir = %(here)s/data/cache/data cache.regions = default_term, second, short_term, long_term cache.type = file cache.second.expire = 1 cache.short_term.expire = 60 cache.default_term.expire = 300 cache.long_term.expire = 20 # static file path (may be an url, allowing to have static datas on different servers) caerp.statics=static # Assets (logo ...) storage path caerp.assets = %(here)s/data/assets # Temp dir for compiled files (like pdf generation or large export files), # is accessible as a static directory caerp.static_tmp=caerp:tmp # treasury related docs upload caerp.ftpdir=%(here)s/tmp/filesystem # Max filesize for file attachment (in Bytes) caerp.maxfilesize=2000000 # The instance name caerp.instance_name=__DOMAIN__ # The depot path for storing files locally caerp.depot_path = %(here)s/tmp/filedepot # Tempdir for file upload (should exist) pyramid_deform.tempdir= %(here)s/tmp/tempdir # Pyramid services configuration (allow to override default behaviour for some # interfaces) ## ECRITURES ## # SAGE GENERATION EXPERT # caerp.services.treasury_invoice_producer=caerp.compute.sage_generation_expert.compute.InvoiceProducer # caerp.services.treasury_internalinvoice_producer=caerp.compute.sage_generation_expert.compute.InternalInvoiceProducer # caerp.services.treasury_invoice_writer=caerp.export.sage_generation_expert.InvoiceWriter # # caerp.services.treasury_payment_producer=caerp.compute.sage_generation_expert.compute.PaymentProducer # caerp.services.treasury_internalpayment_producer=caerp.compute.sage_generation_expert.compute.InternalPaymentProducer # caerp.services.treasury_payment_writer=caerp.export.sage_generation_expert.PaymentWriter # # caerp.services.treasury_expense_producer=caerp.compute.sage_generation_expert.compute.ExpenseProducer # caerp.services.treasury_expense_writer=caerp.export.sage_generation_expert.ExpenseWriter # # caerp.services.treasury_expense_payment_producer=caerp.compute.sage_generation_expert.compute.ExpensePaymentProducer # caerp.services.treasury_expense_payment_writer=caerp.export.sage_generation_expert.ExpensePaymentWriter # # caerp.services.treasury_supplier_invoice_producer=caerp.compute.sage_generation_expert.compute.SupplierInvoiceProducer # caerp.services.treasury_internalsupplier_invoice_producer=caerp.compute.sage_generation_expert.compute.InternalSupplierInvoiceProducer # caerp.services.treasury_supplier_invoice_writer=caerp.export.sage_generation_expert.SupplierInvoiceWriter # # caerp.services.treasury_supplier_payment_producer=caerp.compute.sage_generation_expert.compute.SupplierPaymentProducer # caerp.services.treasury_supplier_payment_user_producer=caerp.compute.sage_generation_expert.compute.SupplierUserPaymentProducer # caerp.services.treasury_internalsupplier_payment_producer=caerp.compute.sage_generation_expert.compute.InternalSupplierPaymentProducer # caerp.services.treasury_supplier_payment_writer=caerp.export.sage_generation_expert.SupplierPaymentWriter # CEGID caerp.services.treasury_invoice_writer=caerp.export.cegid.InvoiceWriter caerp.services.treasury_payment_writer=caerp.export.cegid.PaymentWriter caerp.services.treasury_expense_writer=caerp.export.cegid.ExpenseWriter caerp.services.treasury_expense_payment_writer=caerp.export.cegid.ExpensePaymentWriter caerp.services.treasury_supplier_invoice_writer=caerp.export.cegid.SupplierInvoiceWriter caerp.services.treasury_supplier_payment_writer=caerp.export.cegid.SupplierPaymentWriter ## FIN DE LA CONFIG DES ECRITURES # Payment specific configuration see https://framagit.org/caerp/caerp_payment # caerp_payment_db.url = mysql://caerp_payment:caerp@localhost/caerp_payment?charset=utf8mb4 caerp.interfaces.IPaymentRecordService = caerp_payment.public.PaymentService # Log payment service caerp_payment.interfaces.IPaymentRecordHistoryService = caerp_payment.history.HistoryLogService # caerp_payment.interfaces.IPaymentRecordHistoryService = caerp_payment.history.HistoryDBService # Payment archiving service (here FileArchiveService) # caerp_payment.interfaces.IPaymentArchiveService = caerp_payment.archive.FileArchiveService # caerp_payment_archive_storage_path = %(here)s/data/payment_storage # Key used for accounting data upload # caerp.accounting_api_key= # Key used to count users # caerp.users_api_key= caerp.includes= caerp_payment caerp_payment.views # URL for tiles layer for companies map ; uncomment to override # caerp.leaflet_layer_url=https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png [celery] broker_url = redis://127.0.0.1:6379/__REDIS_DB__ # Uncomment the following line to use docker-compose # broker_url = redis://127.0.0.1:16379/0 imports = caerp_celery.tasks.tasks caerp_celery.tasks.mail caerp_celery.tasks.csv_import caerp_celery.tasks.export caerp_celery.tasks.accounting_measure_compute caerp_celery.tasks.accounting_parser task_serializer = json accept_content= json yaml [filter:fanstatic] use = egg:fanstatic#fanstatic bundle=False minified=False bottom=True [pipeline:main] pipeline = fanstatic caerp [server:main] use = egg:waitress#main host = 127.0.0.1 port = __PORT__ # Nginx reverse proxy configuration # FIXME: is it legacy? trusted_proxy = 127.0.0.1 trusted_proxy_count = 1 trusted_proxy_headers = x-forwarded-for x-forwarded-host x-forwarded-proto x-forwarded-port clear_untrusted_proxy_headers = yes [pshell] default_shell = ipython setup = caerp.pshell.setup # Begin logging configuration [loggers] keys = root, sqlalchemy, alembic, celery, colanderalchemy, pyexcel_io, lml [handlers] keys = console, file, sqlfile, celery_file [formatters] keys = generic, sqlfile [logger_root] level = WARN handlers = file, console propagate=1 [logger_caerp] level = INFO handlers = file, console, warnfile qualname = caerp propagate=0 [logger_sqlalchemy] level = WARN handlers = file, sqlfile qualname = sqlalchemy.engine propagate=0 # level = INFO logs SQL queries. # level = DEBUG logs SQL queries and results. # level = WARN logs neither. (Recommended for production systems.) [logger_celery] level=INFO handlers = celery_file, console propagate=0 qualname = caerp.celery [logger_alembic] level = INFO handlers = sqlfile qualname = alembic [logger_colanderalchemy] level = INFO handlers = file, console qualname = colanderalchemy propagate=0 [logger_pyexcel_io] # Too chatty at DEBUG level level = INFO handlers = file, console qualname = pyexcel_io propagate=0 [logger_lml] # Too chatty at DEBUG level level = INFO handlers = file, console qualname = lml propagate=0 [handler_console] class = caerp.log.CustomStreamHandler args = (sys.stderr,) level = NOTSET formatter = generic [handler_file] class = caerp.log.CustomFileHandler args = ('/var/log/__APP__/logfile.log','a') level = INFO formatter = generic [handler_celery_file] class = caerp.log.CustomFileHandler args = ('/var/log/__APP__/celery.log','a') level = INFO formatter = generic [handler_warnfile] class = caerp.log.CustomFileHandler args = ('/var/log/__APP__/warnlogfile.log','a') level = WARN formatter = generic [handler_sqlfile] class = FileHandler args = ('/var/log/__APP__/sql.log','a') level = INFO formatter = sqlfile [formatter_sqlfile] format = %(message)s [formatter_generic] format = %(asctime)-15s %(levelname)-5.5s %(message)s ([%(name)s.%(funcName)s:%(lineno)d]) # End logging configuration #Alembic conf [alembic] script_location = caerp:alembic file_template = %%(slug)s_%%(rev)s