def __init__(self): (options, args) = self.get_args() utils.load_settings(filepath=options.settings) self.dry_run = options.dry_run self.db = utils.get_db() self.args = args self.prepare()
def get_args(): parser = utils.get_command_line_parser( description='Send info message to all users.') parser.add_option('-d', '--dry-run', action='store_true', dest='dry_run', default=False, help='do not send messages; for debug') (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) send_info_email('accounts.csv', sender='Per Kraulis <*****@*****.**>', options=options)
def __init__(self): parser = utils.get_command_line_parser( description='Fix documents in CouchDB.') parser.add_option('-d', '--dry-run', action='store_true', dest='dry_run', default=False, help='do not perform save; for debug') (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) self.dry_run = options.dry_run self.db = utils.get_db() self.args = args self.prepare()
undump(db, dumpfilepath) designs.regenerate_views_indexes(db) except IOError: print('Warning: could not load', dumpfilepath) else: print('no dump file loaded') # Load texts from the initial texts YAML file. Only if missing in db! print('loading any missing texts from', INIT_TEXTS_FILEPATH) try: with open(INIT_TEXTS_FILEPATH) as infile: texts = yaml.safe_load(infile) except IOError: print('Warning: could not load', INIT_TEXTS_FILEPATH) texts = dict() for name in constants.TEXTS: if len(list(db.view('text/name', key=name))) == 0: with admin.TextSaver(db=db) as saver: saver['name'] = name saver['text'] = texts.get(name, '') if __name__ == '__main__': parser = utils.get_command_line_parser( description='Initialize the database, optionally load from dump file.') parser.add_option("-L", "--load", action='store', dest='FILE', default=None, metavar="FILE", help="filepath of dump file to load") (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) init_database(dumpfilepath=options.FILE)
saver['address'] = dict() saver['invoice_address'] = dict() saver['university'] = university saver['department'] = None saver['owner'] = email saver.set_password(password) saver['role'] = constants.ADMIN saver['status'] = constants.ENABLED print('Created admin account', email) if __name__ == '__main__': parser = utils.get_command_line_parser( description='Create a new admin account.') (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) email = raw_input('Email address (=account name) > ') if not email: sys.exit('no email address provided') password = getpass.getpass('Password > ') if not password: sys.exit('no password provided') try: utils.check_password(password) except ValueError, msg: sys.exit(str(msg)) again_password = getpass.getpass('Password again > ') if password != again_password: sys.exit('passwords do not match') first_name = raw_input('First name > ') or 'first' last_name = raw_input('Last name > ') or 'last'
def main(): parser = utils.get_command_line_parser(description='OrderPortal server.') (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) utils.initialize() url = tornado.web.url handlers = [ url(r'/', Home, name='home'), url(r'/status', Status, name="status") ] try: regexp = settings['ORDER_IDENTIFIER_REGEXP'] except KeyError: pass else: handlers.append( url(r"/order/({0})".format(regexp), Order, name='order_id')) handlers.append( url(r"/api/v1/order/({0})".format(regexp), OrderApiV1, name='order_id_api')) handlers.extend([ url(r'/order/([0-9a-f]{32})', Order, name='order'), url(r'/api/v1/order/([0-9a-f]{32})', OrderApiV1, name='order_api'), url(r'/order/([^/]+).csv', OrderCsv, name='order_csv'), url(r'/order/([^/]+).xlsx', OrderXlsx, name='order_xlsx'), url(r'/order/([^/]+).zip', OrderZip, name='order_zip'), url(r'/order/([0-9a-f]{32})/logs', OrderLogs, name='order_logs'), url(r'/order', OrderCreate, name='order_create'), url(r'/api/v1/order', OrderCreateApiV1, name='order_create_api'), url(r'/order/([0-9a-f]{32})/edit', OrderEdit, name='order_edit'), url(r'/order/([0-9a-f]{32})/transition/(\w+)', OrderTransition, name='order_transition'), url(r'/api/v1/order/([0-9a-f]{32})/transition/(\w+)', OrderTransitionApiV1, name='order_transition_api'), url(r'/order/([0-9a-f]{32})/owner', OrderOwner, name='order_owner'), url(r'/order/([0-9a-f]{32})/clone', OrderClone, name='order_clone'), url(r'/order/([0-9a-f]{32})/file', OrderFile, name='order_file_add'), url(r'/order/([0-9a-f]{32})/file/([^/]+)', OrderFile, name='order_file'), url(r'/order/([0-9a-f]{32})/report', OrderReport, name='order_report'), url(r'/api/v1/order/([0-9a-f]{32})/report', OrderReportApiV1, name='order_report_api'), url(r'/order/([0-9a-f]{32})/report/edit', OrderReportEdit, name='order_report_edit'), url(r'/orders', Orders, name='orders'), url(r'/api/v1/orders', OrdersApiV1, name='orders_api'), url(r'/orders.csv', OrdersCsv, name='orders_csv'), url(r'/orders.xlsx', OrdersXlsx, name='orders_xlsx'), url(r'/accounts', Accounts, name='accounts'), url(r'/api/v1/accounts', AccountsApiV1, name='accounts_api'), url(r'/accounts.csv', AccountsCsv, name='accounts_csv'), url(r'/accounts.xlsx', AccountsXlsx, name='accounts_xlsx'), url(r'/account/([^/]+)', Account, name='account'), url(r'/api/v1/account/([^/]+)', AccountApiV1, name='account_api'), url(r'/account/([^/]+)/orders', AccountOrders, name='account_orders'), url(r'/api/v1/account/([^/]+)/orders', AccountOrdersApiV1, name='account_orders_api'), url(r'/account/([^/]+)/groups/orders', AccountGroupsOrders, name='account_groups_orders'), url(r'/api/v1/account/([^/]+)/groups/orders', AccountGroupsOrdersApiV1, name='account_groups_orders_api'), url(r'/account/([^/]+)/logs', AccountLogs, name='account_logs'), url(r'/account/([^/]+)/messages', AccountMessages, name='account_messages'), url(r'/account/([^/]+)/edit', AccountEdit, name='account_edit'), url(r'/group', GroupCreate, name='group_create'), url(r'/group/([0-9a-f]{32})', Group, name='group'), url(r'/group/([0-9a-f]{32})/edit', GroupEdit, name='group_edit'), url(r'/group/([0-9a-f]{32})/accept', GroupAccept, name='group_accept'), url(r'/group/([0-9a-f]{32})/decline', GroupDecline, name='group_decline'), url(r'/group/([0-9a-f]{32})/logs', GroupLogs, name='group_logs'), url(r'/groups', Groups, name='groups'), url(r'/search', Search, name='search'), url(r'/login', Login, name='login'), url(r'/logout', Logout, name='logout'), url(r'/reset', Reset, name='reset'), url(r'/password', Password, name='password'), url(r'/register', Register, name='register'), url(r'/registered', Registered, name='registered'), url(r'/account/([^/]+)/enable', AccountEnable, name='account_enable'), url(r'/account/([^/]+)/disable', AccountDisable, name='account_disable'), url(r'/account/([^/]+)/updateinfo', AccountUpdateInfo, name='account_update_info'), url(r'/forms', Forms, name='forms'), url(r'/form/([0-9a-f]{32})', Form, name='form'), url(r'/api/v1/form/([0-9a-f]{32})', FormApiV1, name='form_api'), url(r'/form/([0-9a-f]{32})/logs', FormLogs, name='form_logs'), url(r'/form', FormCreate, name='form_create'), url(r'/form/([0-9a-f]{32})/edit', FormEdit, name='form_edit'), url(r'/form/([0-9a-f]{32})/clone', FormClone, name='form_clone'), url(r'/form/([0-9a-f]{32})/pending', FormPending, name='form_pending'), url(r'/form/([0-9a-f]{32})/testing', FormTesting, name='form_testing'), url(r'/form/([0-9a-f]{32})/enable', FormEnable, name='form_enable'), url(r'/form/([0-9a-f]{32})/disable', FormDisable, name='form_disable'), url(r'/form/([0-9a-f]{32})/field', FormFieldCreate, name='field_create'), url(r'/form/([0-9a-f]{32})/field/([a-zA-Z][_a-zA-Z0-9]*)', FormFieldEdit, name='field_edit'), url(r'/form/([0-9a-f]{32})/field/([a-zA-Z][_a-zA-Z0-9]*)/descr', FormFieldEditDescr, name='field_edit_descr'), url(r'/form/([0-9a-f]{32})/orders', FormOrders, name='form_orders'), url(r'/form/([0-9a-f]{32})/aggregate', FormOrdersAggregate, name='form_orders_aggregate'), url(r'/news', News, name='news'), url(r'/new/([0-9a-f]{32})', NewsEdit, name='news_edit'), url(r'/new', NewsCreate, name='news_create'), url(r'/events', Events, name='events'), url(r'/event/([0-9a-f]{32})', Event, name='event'), url(r'/event', EventCreate, name='event_create'), url(r'/contact', Contact, name='contact'), url(r'/about', About, name='about'), url(r'/software', Software, name='software'), url(r'/infos', Infos, name='infos'), url(r'/info', InfoCreate, name='info_create'), url(r'/info/([^/]+)', Info, name='info'), url(r'/info/([^/]+)/edit', InfoEdit, name='info_edit'), url(r'/info/([^/]+)/logs', InfoLogs, name='info_logs'), url(r'/files', Files, name='files'), url(r'/file', FileCreate, name='file_create'), url(r'/file/([^/]+)', File, name='file'), url(r'/file/([^/]+)/meta', FileMeta, name='file_meta'), url(r'/file/([^/]+)/download', FileDownload, name='file_download'), url(r'/file/([^/]+)/edit', FileEdit, name='file_edit'), url(r'/api/v1/file/([^/]+)/edit', FileEditApiV1, name='file_edit_api'), url(r'/file/([0-9a-f]{32})/logs', FileLogs, name='file_logs'), url(r'/log/([0-9a-f]{32})', Log, name='log'), url(r'/([0-9a-f]{32})', Entity, name='entity'), url(r'/admin/global_modes', GlobalModes, name='global_modes'), url(r'/admin/settings', Settings, name='settings'), url(r'/admin/text/([^/]+)', Text, name='text'), url(r'/admin/texts', Texts, name='texts'), url(r'/admin/order_statuses', OrderStatuses, name='order_statuses'), url(r'/admin/order_messages', AdminOrderMessages, name='admin_order_messages'), url(r'/admin/account_messages', AdminAccountMessages, name='admin_account_messages'), url(r'/site/([^/]+)', tornado.web.StaticFileHandler, {'path': utils.expand_filepath(settings['SITE_DIR'])}, name='site'), ]) handlers.append(url(r'/api/v1/(.*)', NoSuchEntityApiV1)) handlers.append(url(r'/(.*)', NoSuchEntity)) application = tornado.web.Application( handlers=handlers, debug=settings.get('TORNADO_DEBUG', False), cookie_secret=settings['COOKIE_SECRET'], xsrf_cookies=True, ui_modules=uimodules, template_path=os.path.join(settings['ROOT_DIR'], 'templates'), static_path=os.path.join(settings['ROOT_DIR'], 'static'), login_url=(settings['BASE_URL_PATH_PREFIX'] or '') + '/login') # Add href URLs for the status icons. # This depends on order status setup. for key, value in settings['ORDER_STATUSES_LOOKUP'].items(): value['href'] = application.reverse_url('site', key + '.png') application.listen(settings['PORT'], xheaders=True) pid = os.getpid() url = settings['BASE_URL'] if settings['BASE_URL_PATH_PREFIX']: url += settings['BASE_URL_PATH_PREFIX'] logging.info("web server %s (PID %s)", url, pid) if options.pidfile: with open(options.pidfile, 'w') as pf: pf.write(str(pid)) tornado.ioloop.IOLoop.instance().start()
def main(): parser = utils.get_command_line_parser(description='OrderPortal server.') (options, args) = parser.parse_args() utils.load_settings(filepath=options.settings) url = tornado.web.url handlers = [url(r'/', Home, name='home')] try: regexp = settings['ORDER_IDENTIFIER_REGEXP'] except KeyError: pass else: handlers.append(url(r"/order/({0})".format(regexp), Order, name='order_id')) handlers.append(url(r"/api/v1/order/({0})".format(regexp), OrderApiV1, name='order_id_api')) handlers.extend([ url(r'/order/([0-9a-f]{32})', Order, name='order'), url(r'/api/v1/order/([0-9a-f]{32})', OrderApiV1, name='order_api'), url(r'/order/([^/]+).csv', OrderCsv, name='order_csv'), url(r'/order/([^/]+).zip', OrderZip, name='order_zip'), url(r'/order/([0-9a-f]{32})/logs', OrderLogs, name='order_logs'), url(r'/order', OrderCreate, name='order_create'), url(r'/api/v1/order', OrderCreateApiV1, name='order_create_api'), url(r'/order/([0-9a-f]{32})/edit', OrderEdit, name='order_edit'), url(r'/order/([0-9a-f]{32})/transition/(\w+)', OrderTransition, name='order_transition'), url(r'/api/v1/order/([0-9a-f]{32})/transition/(\w+)', OrderTransitionApiV1, name='order_transition_api'), url(r'/order/([0-9a-f]{32})/clone', OrderClone, name='order_clone'), url(r'/order/([0-9a-f]{32})/file', OrderFile, name='order_file_add'), url(r'/order/([0-9a-f]{32})/file/([^/]+)',OrderFile,name='order_file'), url(r'/order/([0-9a-f]{32})/report', OrderReport, name='order_report'), url(r'/api/v1/order/([0-9a-f]{32})/report', OrderReportApiV1, name='order_report_api'), url(r'/order/([0-9a-f]{32})/report/edit', OrderReportEdit, name='order_report_edit'), url(r'/orders', Orders, name='orders'), url(r'/api/v1/orders', OrdersApiV1, name='orders_api'), url(r'/orders.csv', OrdersCsv, name='orders_csv'), url(r'/accounts', Accounts, name='accounts'), url(r'/api/v1/accounts', AccountsApiV1, name='accounts_api'), url(r'/accounts.csv', AccountsCsv, name='accounts_csv'), url(r'/account/([^/]+)', Account, name='account'), url(r'/api/v1/account/([^/]+)', AccountApiV1, name='account_api'), url(r'/account/([^/]+)/orders', AccountOrders, name='account_orders'), url(r'/api/v1/account/([^/]+)/orders', AccountOrdersApiV1, name='account_orders_api'), url(r'/account/([^/]+)/groups/orders', AccountGroupsOrders, name='account_groups_orders'), url(r'/api/v1/account/([^/]+)/groups/orders', AccountGroupsOrdersApiV1, name='account_groups_orders_api'), url(r'/account/([^/]+)/logs', AccountLogs, name='account_logs'), url(r'/account/([^/]+)/messages', AccountMessages, name='account_messages'), url(r'/account/([^/]+)/edit', AccountEdit, name='account_edit'), url(r'/group', GroupCreate, name='group_create'), url(r'/group/([0-9a-f]{32})', Group, name='group'), url(r'/group/([0-9a-f]{32})/edit', GroupEdit, name='group_edit'), url(r'/group/([0-9a-f]{32})/accept', GroupAccept, name='group_accept'), url(r'/group/([0-9a-f]{32})/decline', GroupDecline, name='group_decline'), url(r'/group/([0-9a-f]{32})/logs', GroupLogs, name='group_logs'), url(r'/groups', Groups, name='groups'), url(r'/search', Search, name='search'), url(r'/login', Login, name='login'), url(r'/logout', Logout, name='logout'), url(r'/reset', Reset, name='reset'), url(r'/password', Password, name='password'), url(r'/register', Register, name='register'), url(r'/registered', Registered, name='registered'), url(r'/account/([^/]+)/enable', AccountEnable, name='account_enable'), url(r'/account/([^/]+)/disable', AccountDisable,name='account_disable'), url(r'/account/([^/]+)/updateinfo', AccountUpdateInfo, name='account_update_info'), url(r'/forms', Forms, name='forms'), url(r'/form/([0-9a-f]{32})', Form, name='form'), url(r'/api/v1/form/([0-9a-f]{32})', FormApiV1, name='form_api'), url(r'/form/([0-9a-f]{32})/logs', FormLogs, name='form_logs'), url(r'/form', FormCreate, name='form_create'), url(r'/form/([0-9a-f]{32})/edit', FormEdit, name='form_edit'), url(r'/form/([0-9a-f]{32})/clone', FormClone, name='form_clone'), url(r'/form/([0-9a-f]{32})/pending', FormPending, name='form_pending'), url(r'/form/([0-9a-f]{32})/testing', FormTesting, name='form_testing'), url(r'/form/([0-9a-f]{32})/enable', FormEnable, name='form_enable'), url(r'/form/([0-9a-f]{32})/disable', FormDisable, name='form_disable'), url(r'/form/([0-9a-f]{32})/field', FormFieldCreate,name='field_create'), url(r'/form/([0-9a-f]{32})/field/([a-zA-Z][_a-zA-Z0-9]*)', FormFieldEdit, name='field_edit'), url(r'/form/([0-9a-f]{32})/field/([a-zA-Z][_a-zA-Z0-9]*)/descr', FormFieldEditDescr, name='field_edit_descr'), url(r'/form/([0-9a-f]{32})/orders', FormOrders, name='form_orders'), url(r'/form/([0-9a-f]{32})/orders.csv', FormOrdersCsv, name='form_orders_csv'), url(r'/news', News, name='news'), url(r'/new/([0-9a-f]{32})', NewsEdit, name='news_edit'), url(r'/new', NewsCreate, name='news_create'), url(r'/events', Events, name='events'), url(r'/event/([0-9a-f]{32})', Event, name='event'), url(r'/event', EventCreate, name='event_create'), url(r'/contact', Contact, name='contact'), url(r'/about', About, name='about'), url(r'/software', Software, name='software'), url(r'/infos', Infos, name='infos'), url(r'/info', InfoCreate, name='info_create'), url(r'/info/([^/]+)', Info, name='info'), url(r'/info/([^/]+)/edit', InfoEdit, name='info_edit'), url(r'/info/([^/]+)/logs', InfoLogs, name='info_logs'), url(r'/files', Files, name='files'), url(r'/file', FileCreate, name='file_create'), url(r'/file/([^/]+)', File, name='file'), url(r'/file/([^/]+)/meta', FileMeta, name='file_meta'), url(r'/file/([^/]+)/download', FileDownload, name='file_download'), url(r'/file/([^/]+)/edit', FileEdit, name='file_edit'), url(r'/api/v1/file/([^/]+)/edit', FileEditApiV1, name='file_edit_api'), url(r'/file/([0-9a-f]{32})/logs', FileLogs, name='file_logs'), url(r'/log/([0-9a-f]{32})', Log, name='log'), url(r'/([0-9a-f]{32})', Entity, name='entity'), url(r'/nsc/package/([0-9a-f]{32})', NscOrderPkgV1, name='nsc_order_package'), url(r'/admin/global_modes', GlobalModes, name='global_modes'), url(r'/admin/settings', Settings, name='settings'), url(r'/admin/text/([^/]+)', Text, name='text'), url(r'/admin/texts', Texts, name='texts'), url(r'/admin/order_statuses', OrderStatuses, name='order_statuses'), url(r'/admin/order_messages', AdminOrderMessages, name='admin_order_messages'), url(r'/admin/account_messages', AdminAccountMessages, name='admin_account_messages'), url(r'/site/([^/]+)', tornado.web.StaticFileHandler, {'path': utils.expand_filepath(settings['SITE_DIR'])}, name='site'), ]) handlers.append(url(r'/api/v1/(.*)', NoSuchEntityApiV1)) handlers.append(url(r'/(.*)', NoSuchEntity)) application = tornado.web.Application( handlers=handlers, debug=settings.get('TORNADO_DEBUG', False), cookie_secret=settings['COOKIE_SECRET'], xsrf_cookies=True, ui_modules=uimodules, template_path=os.path.join(settings['ROOT_DIR'], 'html'), static_path=os.path.join(settings['ROOT_DIR'], 'static'), login_url=r'/login') # Add href URLs for the status icons. # This depends on order status setup. for key, value in settings['ORDER_STATUSES_LOOKUP'].iteritems(): value['href'] = application.reverse_url('site', key + '.png') application.listen(settings['PORT'], xheaders=True) pid = os.getpid() logging.info("web server PID %s on port %s", pid, settings['PORT']) if options.pidfile: with open(options.pidfile, 'w') as pf: pf.write(str(pid)) tornado.ioloop.IOLoop.instance().start()