示例#1
0
 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)
示例#3
0
 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)
示例#5
0
        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()
示例#7
0
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()