""" open/dulcinea/site/slash.qpy A QP demo using Dulcinea Contact and ContactDatabase and associated UI for user management. Symlink to this directory from the qp/sites directory. Start qp with qp -u A minimal durus database will be created in var Log in as 'administrator' password 'administrator' """ from dulcinea.address import Address from dulcinea.contact import Contact from dulcinea.ui.css import StyleDirectory from dulcinea.ui.publisher import DulcineaPublisher from dulcinea.ui.user.profile import Profile from dulcinea.ui.user.profile import ProfileDirectory from dulcinea.ui.user.user import UserDirectory from qp.fill.directory import Directory from qp.pub.common import get_publisher from qp.pub.common import page, get_users class SitePublisher (DulcineaPublisher): """ Login is redirected to the https address. Example stunnel4 entry: [contact] accept = 10008 connect = 9008 TIMEOUTclose = 0 """ configuration = dict( http_address=('', 8009), as_https_address=('localhost', 9009), https_address=('localhost', 10009), durus_address=('localhost', 11009), durus_logginglevel=5, allow_anonymous_registration=True, ) def get_site_title(self): return 'Dulcinea Demo' def is_email_enabled(self): return True def display_exceptions(self): return True def ensure_users_initialized(self): DulcineaPublisher.ensure_users_initialized(self) db_root = self.get_connection().get_root() if 'administrator' not in get_users(): super(self.__class__, self).ensure_users_initialized() for (user_id, name, email) in [ ("administrator", "System Administrator", 'example@example.org'), ]: user = Contact(user_id) user.set_password(user_id) assert user.has_password(user_id) address = Address() user.set_address(address) first, last = name.split(' ', 1) user.set_first_name(first) user.set_last_name(last) user.set_email(email) assert user_id not in get_users() get_users()[user_id] = user boss = get_users()['administrator'] boss.get_permissions().grant('manage-permissions', True) boss.get_permissions().grant('staff', True) boss.get_permissions().grant('create-users', True) boss.get_permissions().grant('act-as', True) self.get_connection().commit() class SiteDirectory (Directory): def get_exports(self): yield '', 'index', 'Home', None yield 'css', 'css', None, None yield 'user', 'user', 'User', None yield 'my', 'my', 'My', None yield 'profile', 'profile', None, None def index:xml(self): page(get_publisher().get_site_title()) my = Profile() profile = ProfileDirectory() user = UserDirectory() css = StyleDirectory()