89 lines
2.6 KiB
Python
89 lines
2.6 KiB
Python
import os
|
|
import sys
|
|
|
|
from Defaults import *
|
|
|
|
try:
|
|
from wcs_cfg import *
|
|
except ImportError:
|
|
pass
|
|
|
|
from qommon.publisher import get_publisher_class, set_publisher_class, QommonPublisher
|
|
|
|
# this is terribly ugly but import RootDirectory will import a bunch of things,
|
|
# and some of them need a publisher to be set
|
|
class StubWcsPublisher(QommonPublisher):
|
|
pass
|
|
set_publisher_class(StubWcsPublisher)
|
|
|
|
|
|
from root import RootDirectory
|
|
from backoffice import RootDirectory as BackofficeRootDirectory
|
|
from admin import RootDirectory as AdminRootDirectory
|
|
import sessions
|
|
|
|
from users import User
|
|
|
|
import pickle
|
|
|
|
class UnpicklerClass(pickle.Unpickler):
|
|
def find_class(self, module, name):
|
|
if module == 'wcs.form':
|
|
module = 'qommon.form'
|
|
__import__(module)
|
|
mod = sys.modules[module]
|
|
klass = getattr(mod, name)
|
|
return klass
|
|
|
|
|
|
class WcsPublisher(StubWcsPublisher):
|
|
APP_NAME = 'wcs'
|
|
APP_DIR = APP_DIR
|
|
DATA_DIR = DATA_DIR
|
|
ERROR_LOG = ERROR_LOG
|
|
|
|
admin_help_url = {
|
|
'fr': 'http://wcs.labs.libre-entreprise.org/doc/fr/'
|
|
}
|
|
|
|
supported_languages = ['fr', 'es']
|
|
|
|
root_directory_class = RootDirectory
|
|
backoffice_directory_class = BackofficeRootDirectory
|
|
admin_directory_class = AdminRootDirectory
|
|
|
|
session_manager_class = sessions.StorageSessionManager
|
|
user_class = User
|
|
unpickler_class = UnpicklerClass
|
|
|
|
def get_backoffice_module(cls):
|
|
import backoffice
|
|
return backoffice
|
|
get_backoffice_module = classmethod(get_backoffice_module)
|
|
|
|
def get_admin_module(cls):
|
|
import admin
|
|
return admin
|
|
get_admin_module = classmethod(get_admin_module)
|
|
|
|
def set_config(self, request = None):
|
|
QommonPublisher.set_config(self, request = request)
|
|
if request:
|
|
filename = os.path.join(self.app_dir, 'config.pck')
|
|
if os.path.exists(filename):
|
|
# a configuration file exists, it may not have a charset
|
|
# specified so we default to iso-8859-15 as it was the only
|
|
# possible value
|
|
self.site_charset = self.cfg.get('misc', {}).get('charset', 'iso-8859-15')
|
|
else:
|
|
# new site, set the charset, and write it down for further
|
|
# requests
|
|
self.site_charset = 'utf-8'
|
|
self.cfg['misc'] = {'charset': 'utf-8'}
|
|
self.write_cfg()
|
|
request.response.charset = self.site_charset
|
|
|
|
set_publisher_class(WcsPublisher)
|
|
WcsPublisher.register_extra_dir(os.path.join(os.path.dirname(__file__), 'extra'))
|
|
|