import datetime def includeme(config): 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("api_logout", "/api/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_issue_grid", "/api/IssueGrid/{date}") config.add_route("employee_benefits_id", "/EmployeeBenefits/{id}") config.add_route("employee_benefits", "/EmployeeBenefits") config.add_route("incentive_id", "/Incentive/{id}") config.add_route("incentive", "/Incentive") 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_information", "/api/LockInformation") 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_static_view("", "brewman:static") def add_route(config, name, url, has_list=True, variable="id"): config.add_route(name + "_" + variable, url + "/{" + variable + "}") config.add_route(name, url) if has_list: config.add_route(name + "_list", pluralize(url)) config.add_route( "api_" + name + "_" + variable, "/api" + url + "/{" + variable + "}" ) config.add_route("api_" + name, "/api" + url) def pluralize(word, num=None): if num is None or num != 1: if word.endswith("y"): return word[:-1] + "ies" elif word[-1] in "sx" or word[-2:] in ["sh", "ch"]: return word + "es" elif word.endswith("an"): return word[:-2] + "en" else: return word + "s" return word def get_age(days): return datetime.timedelta(days=days).total_seconds()