Files
brewman/brewman/__init__.py
T
tanshu e56b35dd53 Journal / Payment / Receipt forms show Account balances when account is selected.
Journals Validation now checks for negative amount and not just signed amounts.
Journal form supports negative amounts by changing the Debit / Credit.
Removed Messaging and Dashboard from Home screen and all its dependencies
 - Ace Editor
 - D3
 - Chosen

Moved from TryCatch Decorator to View deriver, it is available in Pyramid 1.7+ and the decorator is not working.
Updated Lodash to 4.17.2 (online hosted)
Updated Loading Bar to 0.9.0
Updated Moment.js to 2.17.1
Updated Mousetrap to 1.6.0
2016-12-16 18:57:06 +05:30

168 lines
7.1 KiB
Python

import datetime
import os
from pyramid.config import Configurator
from sqlalchemy import engine_from_config
from sqlalchemy.engine.url import make_url
from pyramid.authentication import AuthTktAuthenticationPolicy
from pyramid.authorization import ACLAuthorizationPolicy
from pyramid.session import SignedCookieSessionFactory
from brewman.factories import add_route
from brewman.models import initialize_sql
from brewman.renderers import json_renderer, CSVRenderer
from brewman.security import groupfinder
from brewman.transactional_view_deriver import transactional_view
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
if 'sqlalchemy.url' not in settings:
DB_NAME = os.environ['DB_NAME']
DB_USER = os.environ['DB_USER']
DB_PASS = os.environ['DB_PASS']
DB_URI = 'postgresql://{0}:{1}@postgres:5432/{2}'.format(
DB_USER, DB_PASS, DB_NAME
)
settings['sqlalchemy.url']= DB_URI
engine = engine_from_config(settings, 'sqlalchemy.')
initialize_sql(engine)
SECRET_KEY = os.environ.get('SECRET_KEY', settings.get('secret_key', ''))
session_factory = SignedCookieSessionFactory(SECRET_KEY)
authentication_policy = AuthTktAuthenticationPolicy('brewman', timeout=900, reissue_time=90, callback=groupfinder)
authorization_policy = ACLAuthorizationPolicy()
config = Configurator(
settings=settings,
root_factory='brewman.factories.RootFactory',
authentication_policy=authentication_policy,
authorization_policy=authorization_policy,
session_factory=session_factory
)
config.add_view_deriver(transactional_view)
config.add_renderer(name='json', factory=json_renderer)
config.add_renderer(name='csv', factory=CSVRenderer)
def get_age(days):
return datetime.timedelta(days=days).total_seconds()
config.add_static_view('icons', 'brewman:static/icons', cache_max_age=get_age(10))
config.add_static_view('assets', 'brewman:static/assets', cache_max_age=get_age(10))
config.add_static_view('features', 'brewman:static/features', cache_max_age=get_age(10))
config.add_static_view('fonts', 'brewman:static/fonts', cache_max_age=get_age(10))
config.add_static_view('img', 'brewman:static/img', cache_max_age=get_age(10))
config.add_static_view('js', 'brewman:static/js', cache_max_age=get_age(10))
config.add_static_view('script', 'brewman:static/scripts', cache_max_age=get_age(1))
config.add_static_view('css', 'brewman:static/css', cache_max_age=get_age(10))
config.add_static_view('partial', 'brewman:static/partial', cache_max_age=get_age(10))
config.add_static_view('template', 'brewman:static/template', cache_max_age=get_age(10))
config.add_route('api_dashboard', '/api/Dashboard')
config.add_route('dashboard', '/Dashboard')
config.add_route('api_db_integrity', '/api/DbIntegrity')
config.add_route('api_login', '/api/login')
config.add_route('login', '/login')
config.add_route('logout', '/logout')
config.add_route('home', '/')
config.add_route('api_account_type_list', '/api/AccountTypes')
add_route(config, 'cost_centre', '/CostCentre')
add_route(config, 'account', '/Account')
add_route(config, 'employee', '/Employee')
add_route(config, 'user', '/User')
add_route(config, 'group', '/Group')
add_route(config, 'client', '/Client')
add_route(config, 'product', '/Product')
add_route(config, 'recipe', '/Recipe')
add_route(config, 'product_group', '/ProductGroup')
config.add_route('journal_id', '/Journal/{id}')
config.add_route('journal', '/Journal')
config.add_route('purchase_id', '/Purchase/{id}')
config.add_route('purchase', '/Purchase')
config.add_route('purchase_return_id', '/Return/{id}')
config.add_route('purchase_return', '/Return')
config.add_route('payment_id', '/Payment/{id}')
config.add_route('payment', '/Payment')
config.add_route('receipt_id', '/Receipt/{id}')
config.add_route('receipt', '/Receipt')
config.add_route('issue_id', '/Issue/{id}')
config.add_route('issue', '/Issue')
config.add_route('api_issues_grid', '/api/Issues/Services/{date}')
config.add_route('salary_deduction_id', '/SalaryDeduction/{id}')
config.add_route('salary_deduction', '/SalaryDeduction')
config.add_route('service_charge_id', '/ServiceCharge/{id}')
config.add_route('service_charge', '/ServiceCharge')
config.add_route('db_image', '/api/DbImage/{id}/{type}')
config.add_route('api_voucher_id', '/api/Voucher/{id}')
config.add_route('api_voucher', '/api/Voucher')
config.add_route('message_id', '/Message/{id}')
config.add_route('message', '/Message')
config.add_route('api_message_id', '/api/Message/{id}')
config.add_route('api_message', '/api/Message')
config.add_route('api_tag_list', '/api/Tags')
config.add_route('settings', '/Settings')
config.add_route('api_lock_info', '/api/LockInfo')
config.add_route('api_maintenance', '/api/Maintenance')
add_route(config, 'attendance', '/Attendance', has_list=False, variable='date')
config.add_route('api_attendance_types', '/api/AttendanceTypes')
add_route(config, 'employee_attendance', '/EmployeeAttendance', has_list=False)
config.add_route('attendance_report', '/AttendanceReport')
config.add_route('api_credit_salary', '/api/CreditSalary')
config.add_route('employee_functions', '/EmployeeFunctions')
config.add_route('api_fingerprint', '/api/Fingerprint')
add_route(config, 'ledger', '/Ledger', has_list=False)
add_route(config, 'reconcile', '/Reconcile', has_list=False)
add_route(config, 'product_ledger', '/ProductLedger', has_list=False)
add_route(config, 'trial_balance', '/TrialBalance', has_list=False, variable='date')
config.add_route('api_net_transactions', '/api/NetTransactions')
config.add_route('net_transactions', '/NetTransactions')
config.add_route('api_purchases', '/api/Purchases')
config.add_route('purchases', '/Purchases')
add_route(config, 'closing_stock', '/ClosingStock', has_list=False, variable='date')
add_route(config, 'cash_flow', '/CashFlow', has_list=False)
add_route(config, 'raw_material_cost', '/RawMaterialCost', has_list=False)
config.add_route('api_daybook', '/api/Daybook')
config.add_route('daybook', '/Daybook')
config.add_route('api_unposted', '/api/Unposted')
config.add_route('unposted', '/Unposted')
config.add_route('api_profit_loss', '/api/ProfitLoss')
config.add_route('profit_loss', '/ProfitLoss')
config.add_route('api_stock_movement', '/api/StockMovement')
config.add_route('stock_movement', '/StockMovement')
add_route(config, 'balance_sheet', '/BalanceSheet', has_list=False, variable='date')
config.add_route('api_purchase_entries', '/api/PurchaseEntries')
config.add_route('purchase_entries', '/PurchaseEntries')
config.add_route('api_auth', '/api/Auth')
config.add_route('api_rebase', '/api/Rebase/{date}')
config.add_route('api_reset_stock', '/api/ResetStock/{id}')
config.add_route('api_batch', '/api/Batch')
config.add_route('favicon', '/favicon.ico')
config.scan()
return config.make_wsgi_app()