Example #1
0
def create_site_publisher(site):
    local.open_database()
    
    # pmo fix this to get publisher from config file
    # publisher = DulcineaPublisher()
    
    publisher = get_publisher()
    
    # set config options
    publisher.config.form_tokens = 1
    publisher.config.display_exceptions = 0
    publisher.config.secure_errors = 1
    publisher.config.session_cookie_path = '/'
#    if local.BACKUPDELTA:
#        publisher.config.session_cookie_name= 'qx_backupdelta_session'
    site_log_dir = os.path.join(config.get(site, 'log-directory'), site)
    publisher.config.access_log = os.path.join(site_log_dir, 'access.log')
    publisher.config.error_log = error_log
    publisher.config.compress_pages = 1
    administrator = site_util.get_administrator_address()
    if site_util.is_live(site):
        publisher.config.error_email = administrator[0]
        publisher.config.mail_from = administrator
    elif site_util.is_staging(site):
        publisher.config.error_email = administrator[0]
        publisher.config.mail_from = administrator
        publisher.config.mail_debug_addr = administrator[0]
    else: # devel
        publisher.config.display_exceptions = 1
        publisher.config.secure_errors = 0
        publisher.config.fix_trailing_slash = 0
        user = pwd.getpwuid(os.geteuid())[0] # Owner of the SCGI process
        user_email = user + '@' + socket.getfqdn()
        publisher.config.mail_debug_addr = user_email
        publisher.config.mail_from = user_email
    # Adjust any values that are set in the site configuration.
    for config_var in publisher.config.config_vars:
        if config.has_option(site, config_var):
            setattr(publisher.config, config_var,
                    config.get(site, config_var))
    publisher.setup_logs()

    # We have to commit the current transaction here, just in case there wasn't
    # an existing session manager object in the ZODB.  In the case,
    # get_session_manager() created a new session manager and added it to the
    # ZODB root, but then start_request() will call sync(), losing the
    # modification to the ZODB root.  The net result is that, without the
    # following commit, the session manager is never written to disk and
    # sessions are always immediately thrown away.
    get_transaction().note('create_site_publisher')
    get_transaction().commit()

    return publisher
Example #2
0
def main (prog, args):
    usage = "usage: %s [site] [expire time]" % prog

    if len(args) != 2:
        sys.exit(usage)

    site = os.environ['SITE'] = args[0]
    expiration_hours = float(args[1])

    local.open_database()
    session_mgr = local.get_session_manager()
    expired_count = session_mgr.del_sessions(age=expiration_hours)
    if expired_count:
        get_transaction().commit()