def make_app(global_conf, full_stack=True, static_files=True, **app_conf): """Create a Pylons WSGI application and return it ``global_conf`` The inherited configuration for this application. Normally from the [DEFAULT] section of the Paste ini file. ``full_stack`` Whether this application provides a full WSGI stack (by default, meaning it handles its own exceptions and errors). Disable full_stack when this application is "managed" by another WSGI middleware. ``static_files`` Whether this application serves its own static files; disable when another web server is responsible for serving them. ``app_conf`` The application's local configuration. Normally specified in the [app:<name>] section of the Paste ini file (where <name> defaults to main). """ # Configure the Pylons environment config = load_environment(global_conf, app_conf) # The Pylons WSGI app app = PylonsApp(config=config) # Routing/Session Middleware app = RoutesMiddleware(app, config['routes.map']) app = SessionMiddleware(app, config) # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) # Add repoze auth app = add_auth(app, app_conf) if asbool(full_stack): # Handle Python exceptions app = ErrorHandler(app, global_conf, **config['pylons.errorware']) # Display error documents for 401, 403, 404 status codes (and # 500 when debug is disabled) if asbool(config['debug']): app = StatusCodeRedirect(app) else: app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) # Establish the Registry for this application app = RegistryManager(app) if asbool(static_files): # Serve static files static_app = StaticURLParser(config['pylons.paths']['static_files']) app = Cascade([static_app, app]) app.config = config return app
def setup_app(command, conf, vars): """Setup the SIS application.""" # Don't reload the app if it was loaded under the testing environment if not pylons.test.pylonsapp: load_environment(conf.global_conf, conf.local_conf) # Create the tables if they don't already exist log.info("Creating tables...") Base.metadata.create_all(bind=Session.bind) log.info("Schema saved to the database.") # Run parsers log.info("Running parsers...") # Parse lucky numbers parse_numbers(conf['numbers_file']) # Parse subjects subjects_file = conf.get('subjects_file', 'subjects.xml') subjects = parse_subjects(subjects_file) # Parse teachers teachers = parse_teachers(conf['teachers_file']) # Parse students students_dir = conf['students_dir'] current_year, groups = parse_students(students_dir) # Parse schedule schedule = parse_schedule(conf['schedule_file'], current_year, groups, subjects, teachers) try: Session.commit() except IntegrityError as error: if not error.statement.startswith("INSERT INTO lessons"): raise schedule_id, group_id, first_part, second_part, subject_id, \ teacher_id, order, day, room = error.params # Rollback commit Session.rollback() group = Session.query(Group).get(group_id) subject = Session.query(Subject).get(subject_id) error_msg = (u"Integrity error: no teacher set!:\n" " group: {0}\n" " first_part: {1}\n" " second_part: {2}\n" " subject: {3}\n" " day: {4}\n" " order: {5}\n" " room: {6}") log.error( error_msg.format(group.full_name(), first_part, second_part, subject.name, day, order, room).encode("utf-8")) sys.exit() # Check rooms, exclude gym check_rooms(schedule) # Create superadmin setup_admin() log.info("Succesfully set up.")
def setup_app(command, conf, vars): """Setup the SIS application.""" # Don't reload the app if it was loaded under the testing environment if not pylons.test.pylonsapp: load_environment(conf.global_conf, conf.local_conf) # Create the tables if they don't already exist log.info("Creating tables...") Base.metadata.create_all(bind=Session.bind) log.info("Schema saved to the database.") # Run parsers log.info("Running parsers...") # Parse lucky numbers parse_numbers(conf['numbers_file']) # Parse subjects subjects_file = conf.get('subjects_file', 'subjects.xml') subjects = parse_subjects(subjects_file) # Parse teachers teachers = parse_teachers(conf['teachers_file']) # Parse students students_dir = conf['students_dir'] current_year, groups = parse_students(students_dir) # Parse schedule schedule = parse_schedule(conf['schedule_file'], current_year, groups, subjects, teachers) try: Session.commit() except IntegrityError as error: if not error.statement.startswith("INSERT INTO lessons"): raise schedule_id, group_id, first_part, second_part, subject_id, \ teacher_id, order, day, room = error.params # Rollback commit Session.rollback() group = Session.query(Group).get(group_id) subject = Session.query(Subject).get(subject_id) error_msg = ( u"Integrity error: no teacher set!:\n" " group: {0}\n" " first_part: {1}\n" " second_part: {2}\n" " subject: {3}\n" " day: {4}\n" " order: {5}\n" " room: {6}") log.error(error_msg.format(group.full_name(), first_part, second_part, subject.name, day, order, room).encode("utf-8")) sys.exit() # Check rooms, exclude gym check_rooms(schedule) # Create superadmin setup_admin() log.info("Succesfully set up.")