From 7de885b5eecc839c6d1f1c0f7400a2ba71b00f51 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Tue, 8 Jun 2021 14:35:28 +1000 Subject: [PATCH] Cleanup ask.openstack.org This was retired with I8a31f8fcf9b3064c0ae58e463a6014dc14b518a7 Change-Id: Ieafac856b0feb91f41f05084aa669e2ccb92569d --- doc/source/askbot.rst | 132 ------ doc/source/systems.rst | 1 - hiera/common.yaml | 1 - inventory/base/hosts.yaml | 7 - inventory/service/groups.yaml | 5 - manifests/site.pp | 15 - modules/openstack_project/manifests/ask.pp | 206 -------- .../templates/askbot/schema.cn.xml.erb | 176 ------- .../templates/askbot/schema.en.xml.erb | 170 ------- .../templates/askbot/settings.py-staging.erb | 432 ----------------- .../templates/askbot/settings.py.erb | 440 ------------------ 11 files changed, 1585 deletions(-) delete mode 100644 doc/source/askbot.rst delete mode 100644 modules/openstack_project/manifests/ask.pp delete mode 100644 modules/openstack_project/templates/askbot/schema.cn.xml.erb delete mode 100644 modules/openstack_project/templates/askbot/schema.en.xml.erb delete mode 100644 modules/openstack_project/templates/askbot/settings.py-staging.erb delete mode 100644 modules/openstack_project/templates/askbot/settings.py.erb diff --git a/doc/source/askbot.rst b/doc/source/askbot.rst deleted file mode 100644 index f979fbff30..0000000000 --- a/doc/source/askbot.rst +++ /dev/null @@ -1,132 +0,0 @@ -:title: Askbot - -.. _askbot: - -Askbot -###### - -Askbot is a publicly available Q&A support site for OpenStack. - -At a Glance -=========== - -:Hosts: - * https://ask.openstack.org -:Puppet: - * https://opendev.org/opendev/puppet-askbot - * https://github.com/vamsee/puppet-solr - * :git_file:`modules/openstack_project/manifests/ask.pp` -:Projects: - * https://askbot.com - * http://lucene.apache.org/solr - * http://redis.io - -Overview -======== - -The site ask.openstack.org based on the officially released askbot pip distribution. -The stable deployment is extended with a custom OpenStack theme available at -https://opendev.org/opendev/askbot-theme. - -System Architecture -=================== - -:: - - +--------+ +----------+ - | apache | ---- | mod_wsgi | - +--------+ +----------+ - | - +-------------+ +---------------+ - | askbot site |--- | celery daemon | - +-------------+ +---------------+ - / | \ - / | \ - +-------+ +------------+ +-------------+ - | redis | | postgresql | | apache solr | - +-------+ +------------+ +-------------+ - -Apache / mod_wsgi ------------------ - -Serve the incoming http request using the mod_wsgi Python WSGI adapter, through -an SSL virtual host. The site vhost also contains url aliases to serve static -content of the theme and all uploaded image files, including the site logo. - -Askbot site ------------ - -The Askbot django application, the custom site specific assets live under -/srv/askbot-sites/slot0 directory, including the configuration, application -level log files, static content, custom OpenStack theme and uploaded files. - -The authentication based on Google, Yahoo and Launchpad OpenID providers. -Local login and all other providers except Google, Yahoo and Launchpad are -disabled in site configuration. - -The askbot-theme repository contains just the pure Sass source of the theme, -so this must be precompiled by compass Sass tool. - -Application management tool can be found under /srv/askbot-sites/slot0/config: -``python manage.py `` - -Configuration files: - -* :git_file:`modules/askbot/templates/askbot.vhost.erb` -* :git_file:`modules/askbot/templates/settings.py.erb` - -In addition to the file-based configuration, Askbot provides a web interface -to tweak its own settings. Toggles and fields for reputation thresholds, -user communications rules, data entry and formatting rules, keys for external -services and static content can be found at `$URL/en/settings/`. - -As per Django standard, `$URL/admin` provides access to the Django -administration interface. Effectively a limited web portal to the data in the -database - but sometimes useful for debugging login problems using the -`Django_authopenid` plugin. - - -Celery daemon -------------- - -This upstart based daemon is responsible for async tasks of the Askbot site, -and can be managed by standard service management tools: -``server askbot-celeryd `` - -Redis ------ - -Askbot is using redis for handling local caching of configuration and page -data. It is useful to clear the redis cache with the ``FLUSHALL`` command -after a service restart. - -Postgresql ----------- - -A postgresql database hosts the content and dynamic site configuration. - -Apache Solr ------------ - -Apache Solr handling the full-text indexes of the site, based on a -multi-core setup, and assigning cores for specific languages. Currently -the English (en) and Chinese (zh) languages are supported. - -Solr schema templates can be found at: - -* :git_file:`modules/askbot/templates/solr/schema.en.xml.erb` -* :git_file:`modules/askbot/templates/solr/schema.cn.xml.erb` - -Operational notes -================= - -The askbot website contains a ``surprisingly`` askbot based support forum, -and a lot of operational related information is available there. Additional -maintenance commands: - -* activate virtualenv: ``source /usr/askbot-env/bin/activate`` -* synchronize db schema: ``python manage.py syncdb`` -* migrate database between upgrades: ``python manage.py migrate`` -* rebuild solr index: ``python manage.py askbot_rebuild_index -l `` -* assign administrator right to a user: ``python manage.py add_admin `` -* update site url setting in askbot database: ``update livesettings_setting set value = '' where "group" = 'QA_SITE_SETTINGS' and key = 'APP_URL';`` diff --git a/doc/source/systems.rst b/doc/source/systems.rst index 9083736e98..f3d8f67b9c 100644 --- a/doc/source/systems.rst +++ b/doc/source/systems.rst @@ -31,7 +31,6 @@ Major Systems storyboard kerberos afs - askbot translate openstack-health refstack diff --git a/hiera/common.yaml b/hiera/common.yaml index ab856e6f04..0482a54373 100644 --- a/hiera/common.yaml +++ b/hiera/common.yaml @@ -184,7 +184,6 @@ cacti_hosts: - afsdb02.openstack.org - afsdb03.openstack.org - apps.openstack.org -- ask.openstack.org - backup01.ord.rax.opendev.org - backup02.ca-ymq-1.vexxhost.opendev.org - bridge.openstack.org diff --git a/inventory/base/hosts.yaml b/inventory/base/hosts.yaml index 41f7237801..3eac7cfa55 100644 --- a/inventory/base/hosts.yaml +++ b/inventory/base/hosts.yaml @@ -49,13 +49,6 @@ all: region_name: DFW public_v4: 104.130.158.72 public_v6: 2001:4800:7818:104:be76:4eff:fe04:2952 - ask01.openstack.org: - ansible_host: 104.239.149.165 - location: - cloud: openstackci-rax - region_name: DFW - public_ipv4: 104.239.149.165 - public_ipv6: 2001:4800:7819:105:be76:4eff:fe01:e6ff backup02.ca-ymq-1.vexxhost.opendev.org: ansible_host: 199.204.45.196 location: diff --git a/inventory/service/groups.yaml b/inventory/service/groups.yaml index adc8f2f3b9..4a74f9def8 100644 --- a/inventory/service/groups.yaml +++ b/inventory/service/groups.yaml @@ -15,7 +15,6 @@ groups: - afsdb*.open*.org - afs[0-9]*.open*.org - static[0-9]*.opendev.org - ask: ask*.open*.org borg-backup: - etherpad[0-9]*.opendev.org - gitea01.opendev.org @@ -26,7 +25,6 @@ groups: # All these servers are "special-cased" in specifically # as they are puppet and should be replaced "soon" - ethercalc02.openstack.org - - ask01.openstack.org - lists.openstack.org - storyboard01.opendev.org - translate01.openstack.org @@ -131,7 +129,6 @@ groups: paste: - paste[0-9]*.open*.org puppet: - - ask*.open*.org - cacti[0-9]*.open*.org - elasticsearch[0-9]*.open*.org - ethercalc[0-9]*.open*.org @@ -151,7 +148,6 @@ groups: - wiki-dev[0-9]*.openstack.org - wiki[0-9]*.openstack.org puppet4: - - ask*.open*.org - cacti[0-9]*.open*.org - elasticsearch[0-9]*.open*.org - ethercalc[0-9]*.open*.org @@ -195,7 +191,6 @@ groups: translate: - translate[0-9]*.open*.org webservers: - - ask*.open*.org - cacti[0-9]*.open*.org - codesearch[0-9]*.opendev.org - eavesdrop[0-9]*.opendev.org diff --git a/manifests/site.pp b/manifests/site.pp index f1b75ce93e..aee7783fb3 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -318,21 +318,6 @@ node /^openstackid-dev\d*\.openstack\.org$/ { } } -# Node-OS: xenial -node /^ask\d*\.open.*\.org$/ { - - class { 'openstack_project::server': } - - class { 'openstack_project::ask': - db_user => hiera('ask_db_user', 'ask'), - db_password => hiera('ask_db_password'), - redis_password => hiera('ask_redis_password'), - site_ssl_cert_file_contents => hiera('ask_site_ssl_cert_file_contents', undef), - site_ssl_key_file_contents => hiera('ask_site_ssl_key_file_contents', undef), - site_ssl_chain_file_contents => hiera('ask_site_ssl_chain_file_contents', undef), - } -} - # Node-OS: xenial node /^translate\d+\.open.*\.org$/ { $group = "translate" diff --git a/modules/openstack_project/manifests/ask.pp b/modules/openstack_project/manifests/ask.pp deleted file mode 100644 index 41710ede50..0000000000 --- a/modules/openstack_project/manifests/ask.pp +++ /dev/null @@ -1,206 +0,0 @@ -# == Class: openstack_project::ask -# -# ask.openstack.org Q&A support website -# -class openstack_project::ask ( - $db_password, - $redis_password, - $site_ssl_cert_file_contents, - $site_ssl_key_file_contents, - $site_ssl_chain_file_contents, - $db_name = 'askbotdb', - $db_user = 'ask', - $redis_port = '6378', - $redis_max_memory = '512m', - $redis_bind = '127.0.0.1', - $solr_version = '4.10.4', - $askbot_revision = '87086ebcefc5be29e80d3228e465e6bec4523fcf' -) { - - if $::lsbdistcodename == "xenial" { - # NOTE(ianw) This is a horrible, horrible hack because puppet-solr - # has not been updated to handle Xenial where jetty split into a - # jetty8 package. This equivs deb pre-depends on jetty8, and sets - # up a few links to fool (confuse?) puppet-solr enough to install - # and run... - file { '/root/jetty_1.0_all.deb': - ensure => present, - owner => 'root', - group => 'root', - mode => '0644', - source => 'puppet:///modules/openstack_project/ask/jetty_1.0_all.deb' - } - - package { 'jetty': - provider => dpkg, - ensure => present, - source => "/root/jetty_1.0_all.deb", - require => File['/root/jetty_1.0_all.deb'] - } - - } - - file { '/srv/dist': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - } - - # solr search engine - file { '/srv/dist/solr': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - require => File['/srv/dist'], - } - - class { 'solr': - mirror => 'https://archive.apache.org/dist/lucene/solr', - version => $solr_version, - cores => [ 'core-default', 'core-en', 'core-zh' ], - dist_root => '/srv/dist/solr', - require => File['/srv/dist/solr'], - } - - file { '/usr/share/solr/core-en/conf/schema.xml': - ensure => present, - content => template('openstack_project/askbot/schema.en.xml.erb'), - replace => true, - owner => 'jetty', - group => 'jetty', - mode => '0644', - require => File['/usr/share/solr/core-zh/conf'], - } - - file { '/usr/share/solr/core-zh/conf/schema.xml': - ensure => present, - content => template('openstack_project/askbot/schema.cn.xml.erb'), - replace => true, - owner => 'jetty', - group => 'jetty', - mode => '0644', - require => File['/usr/share/solr/core-en/conf'], - } - - # deploy smartcn Chinese analyzer from solr contrib/analysys-extras - file { "/usr/share/solr/WEB-INF/lib/lucene-analyzers-smartcn-${solr_version}.jar": - ensure => present, - replace => 'no', - source => "/srv/dist/solr/solr-${solr_version}/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-${solr_version}.jar", - owner => 'root', - group => 'root', - mode => '0644', - require => [ Exec['copy-solr'], File['/srv/dist/solr'] ], - } - - # postgresql database - class { 'postgresql::server': } - - postgresql::server::db { $db_name: - user => $db_user, - password => postgresql_password($db_user, $db_password), - } - - # Streaming backup of db; see borg-backup role - file { '/etc/borg-streams': - ensure => directory, - owner => 'root', - group => 'root', - mode => '0755', - } - - file { '/etc/borg-streams/pgsql': - ensure => file, - owner => 'root', - group => 'root', - mode => '0755', - content => '/usr/bin/pg_dump -h localhost -U ask -p 5432 askbotdb', - require => File['/etc/borg-streams'], - } - - # redis cache - class { 'redis': - redis_port => $redis_port, - redis_max_memory => $redis_max_memory, - redis_bind => $redis_bind, - redis_password => $redis_password, - version => '2.8.4', - before => Class['askbot'], - } - - # askbot site - class { 'askbot': - askbot_revision => $askbot_revision, - db_provider => 'pgsql', - db_name => $db_name, - db_user => $db_user, - db_password => $db_password, - redis_enabled => true, - redis_port => $redis_port, - redis_max_memory => $redis_max_memory, - redis_bind => $redis_bind, - redis_password => $redis_password, - custom_theme_enabled => true, - custom_theme_name => 'os', - site_name => 'ask.openstack.org', - askbot_debug => false, - solr_enabled => true, - site_ssl_enabled => true, - site_ssl_cert_file => '/etc/ssl/certs/ask.openstack.org.pem', - site_ssl_key_file => '/etc/ssl/private/ask.openstack.org.key', - site_ssl_chain_file => '/etc/ssl/certs/ask.openstack.org_ca.pem', - site_ssl_cert_file_contents => $site_ssl_cert_file_contents, - site_ssl_key_file_contents => $site_ssl_key_file_contents, - site_ssl_chain_file_contents => $site_ssl_chain_file_contents, - template_settings => 'openstack_project/askbot/settings.py.erb', - } - - # askbot-theme openstack theme - git { 'askbot-theme': - ensure => present, - path => '/srv/askbot-site/themes', - branch => 'master', - origin => 'https://opendev.org/opendev/askbot-theme', - latest => true, - require => [ - File['/srv/askbot-site'], Package['git'] - ], - before => Exec['askbot-syncdb'], - notify => [ - Exec['theme-bundle-install-os'], - Exec['theme-bundle-compile-os'], - Exec['askbot-static-generate'], - ], - } - - askbot::theme::compass { 'os': - require => Git['askbot-theme'], - before => Exec['askbot-static-generate'], - } - - # site backup - pgsql_backup::backup { $db_name: - database_user => $db_user, - database_password => $db_password, - require => Postgresql::Server::Db[$db_name], - num_backups => '10', - } - - class { '::httpd::logrotate': - options => [ - 'daily', - 'missingok', - 'rotate 7', - 'compress', - 'delaycompress', - 'notifempty', - 'create 640 root adm', - ], - postrotate => [ - "if service ${::httpd::params::apache_name} status > /dev/null; then \\", - " service ${::httpd::params::apache_name} restart > /dev/null; fi; \\", - ], - } -} diff --git a/modules/openstack_project/templates/askbot/schema.cn.xml.erb b/modules/openstack_project/templates/askbot/schema.cn.xml.erb deleted file mode 100644 index 04143fc623..0000000000 --- a/modules/openstack_project/templates/askbot/schema.cn.xml.erb +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - text - - - - \ No newline at end of file diff --git a/modules/openstack_project/templates/askbot/schema.en.xml.erb b/modules/openstack_project/templates/askbot/schema.en.xml.erb deleted file mode 100644 index b2778f79d5..0000000000 --- a/modules/openstack_project/templates/askbot/schema.en.xml.erb +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - id - - - text - - - - \ No newline at end of file diff --git a/modules/openstack_project/templates/askbot/settings.py-staging.erb b/modules/openstack_project/templates/askbot/settings.py-staging.erb deleted file mode 100644 index 54161a9262..0000000000 --- a/modules/openstack_project/templates/askbot/settings.py-staging.erb +++ /dev/null @@ -1,432 +0,0 @@ -## Django settings for ASKBOT enabled project. -import os.path -import logging -import sys -import askbot -import site - -#this line is added so that we can import pre-packaged askbot dependencies -ASKBOT_ROOT = os.path.abspath(os.path.dirname(askbot.__file__)) -site.addsitedir(os.path.join(ASKBOT_ROOT, 'deps')) - -DEBUG = <%if @askbot_debug %>True<%else%>False<%end%> # set to True to enable debugging -TEMPLATE_DEBUG = False # keep false when debugging jinja2 templates -INTERNAL_IPS = ('127.0.0.1',) -ALLOWED_HOSTS = ['*',]#change this for better security on your site - -ADMINS = ( - ('Your Name', 'your_email@domain.com'), -) - -MANAGERS = ADMINS - -DATABASES = { - 'default': { - 'ENGINE': '<%= @db_engine %>', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '<%= @db_name %>', # Or path to database file if using sqlite3. - 'USER': '<%= @db_user %>', # Not used with sqlite3. - 'PASSWORD': '<%= @db_password %>', # Not used with sqlite3. - 'HOST': '<%= @db_host %>', # Set to empty string for localhost. Not used with sqlite3. - 'PORT': '', # Set to empty string for default. Not used with sqlite3. - 'TEST_CHARSET': 'utf8', # Setting the character set and collation to utf-8 - 'TEST_COLLATION': 'utf8_general_ci', # is necessary for MySQL tests to work properly. - } -} - -#outgoing mail server settings -SERVER_EMAIL = 'noreply@openstack.org' -DEFAULT_FROM_EMAIL = 'noreply@openstack.org' -EMAIL_HOST_USER = '' -EMAIL_HOST_PASSWORD = '' -EMAIL_SUBJECT_PREFIX = '' -EMAIL_HOST='<%= @smtp_host %>' -EMAIL_PORT='<%= @smtp_port %>' -EMAIL_USE_TLS=False -#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' - -#incoming mail settings -#after filling out these settings - please -#go to the site's live settings and enable the feature -#"Email settings" -> "allow asking by email" -# -# WARNING: command post_emailed_questions DELETES all -# emails from the mailbox each time -# do not use your personal mail box here!!! -# -IMAP_HOST = '' -IMAP_HOST_USER = '' -IMAP_HOST_PASSWORD = '' -IMAP_PORT = '' -IMAP_USE_TLS = False - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = 'America/Chicago' - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True -LANGUAGE_CODE = 'en' - -# Absolute path to the directory that holds uploaded media -# Example: "/home/media/media.lawrence.com/" -#MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles') -MEDIA_ROOT = '/srv/askbot-site/upfiles' -MEDIA_URL = '/upfiles/' -STATIC_URL = '/m/'#this must be different from MEDIA_URL - -PROJECT_ROOT = os.path.dirname(__file__) -STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') - -# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a -# trailing slash. -# Examples: "http://foo.com/media/", "/media/". -ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' - -# Make up some unique string, and don't share it with anybody. -SECRET_KEY = '44fb9b7219e3743bffabb6861cbc9a28' - -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'askbot.skins.loaders.Loader', - 'askbot.skins.loaders.JinjaAppDirectoryLoader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.filesystem.Loader', - #'django.template.loaders.eggs.load_template_source', -) - - -MIDDLEWARE_CLASSES = ( - #'django.middleware.gzip.GZipMiddleware', - #'askbot.middleware.locale.LocaleMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - #'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.common.CommonMiddleware', - #'django.middleware.cache.FetchFromCacheMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'stopforumspam.middleware.StopForumSpamMiddleware', - #'django.middleware.sqlprint.SqlPrintingMiddleware', - - #below is askbot stuff for this tuple - 'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware', - 'askbot.middleware.forum_mode.ForumModeMiddleware', - 'askbot.middleware.cancel.CancelActionMiddleware', - 'django.middleware.transaction.TransactionMiddleware', - #'debug_toolbar.middleware.DebugToolbarMiddleware', - 'askbot.middleware.view_log.ViewLogMiddleware', - 'askbot.middleware.spaceless.SpacelessMiddleware', - 'askbot.middleware.csrf.CsrfViewMiddleware', -) - - - -ROOT_URLCONF = os.path.basename(os.path.dirname(__file__)) + '.urls' - - -#UPLOAD SETTINGS -FILE_UPLOAD_TEMP_DIR = os.path.join( - os.path.dirname(__file__), - 'tmp' - ).replace('\\','/') - -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) -ASKBOT_ALLOWED_UPLOAD_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff') -ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 #result in bytes -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' - - -#TEMPLATE_DIRS = (,) #template have no effect in askbot, use the variable below -#ASKBOT_EXTRA_SKINS_DIR = #path to your private skin collection -#take a look here http://askbot.org/en/question/207/ - -<% if @custom_theme_enabled %> -ASKBOT_EXTRA_SKINS_DIR = '<%= @site_root %>/themes' -<% end %> - -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.request', - 'askbot.context.application_settings', - #'django.core.context_processors.i18n', - 'askbot.user_messages.context_processors.user_messages',#must be before auth - 'django.contrib.auth.context_processors.auth', #this is required for the admin app - 'django.core.context_processors.csrf', #necessary for csrf protection - 'askbot.deps.group_messaging.context.group_messaging_context', -) - - -INSTALLED_APPS = ( - 'longerusername', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.staticfiles', - - #all of these are needed for the askbot - 'django.contrib.admin', - 'django.contrib.humanize', - 'django.contrib.sitemaps', - 'django.contrib.messages', - #'debug_toolbar', -<% if @solr_enabled %> - #Optional, to enable haystack search - 'haystack', -<% end %> - 'compressor', - 'askbot', - 'askbot.deps.django_authopenid', - #'askbot.importers.stackexchange', #se loader - 'south', - 'askbot.deps.livesettings', - 'keyedcache', - 'robots', - 'django_countries', - 'djcelery', - 'djkombu', - 'followit', - 'tinymce', - 'group_messaging', - 'captcha', - #'avatar',#experimental use git clone git://github.com/ericflo/django-avatar.git$ -) - - -NOCAPTCHA = True - -#setup memcached for production use! -#see http://docs.djangoproject.com/en/1.1/topics/cache/ for details -CACHE_BACKEND = 'locmem://' - -#needed for django-keyedcache -CACHE_TIMEOUT = 6000 -#sets a special timeout for livesettings if you want to make them different -LIVESETTINGS_CACHE_TIMEOUT = CACHE_TIMEOUT -#CACHE_PREFIX = 'askbot' #make this unique -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True -#If you use memcache you may want to uncomment the following line to enable memcached based sessions -#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' - -<% if @redis_enabled %> -CACHES = { - 'default': { - 'BACKEND': 'redis_cache.RedisCache', - 'LOCATION': '<%= @redis_bind %>:<%= @redis_port %>', - 'KEY_PREFIX': '<%= @redis_prefix %>', #make unique same as db - 'OPTIONS': { - 'DB': 1, - 'PASSWORD': '<%= @redis_password %>', - # 'PARSER_CLASS': 'redis.connection.HiredisParser' - } - } -} -<%end%> - -AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.ModelBackend', - 'askbot.deps.django_authopenid.backends.AuthBackend', -) - -#logging settings -LOG_FILENAME = 'askbot.log' -logging.basicConfig( - filename=os.path.join('<%= @site_root %>/log', LOG_FILENAME), - level=logging.CRITICAL, - format='%(pathname)s TIME: %(asctime)s MSG: %(filename)s:%(funcName)s:%(lineno)d %(message)s', -) - -########################### -# -# this will allow running your forum with url like http://site.com/forum -# -# ASKBOT_URL = 'forum/' -# -ASKBOT_URL = '' #no leading slash, default = '' empty string -ASKBOT_TRANSLATE_URL = False #translate specific URLs -_ = lambda v:v #fake translation function for the login url -LOGIN_URL = '/%s%s%s' % (ASKBOT_URL,_('account/'),_('signin/')) -LOGIN_REDIRECT_URL = ASKBOT_URL #adjust, if needed -#note - it is important that upload dir url is NOT translated!!! -#also, this url must not have the leading slash -ALLOW_UNICODE_SLUGS = False -ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange - -#Celery Settings -BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport" -CELERY_ALWAYS_EAGER = False - -import djcelery -djcelery.setup_loader() -DOMAIN_NAME = '' - -CSRF_COOKIE_NAME = '_csrf' -#https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/ -#CSRF_COOKIE_DOMAIN = DOMAIN_NAME - -STATIC_ROOT = os.path.join(PROJECT_ROOT, "static") -STATIC_ROOT = '<%= @site_root %>/static' -STATICFILES_DIRS = ( - ('default/media', os.path.join(ASKBOT_ROOT, 'media')), - <% if @custom_theme_enabled %>'<%= @site_root %>/themes',<% end %> -) -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'compressor.finders.CompressorFinder', -) - -RECAPTCHA_USE_SSL = True - -#HAYSTACK_SETTINGS -ENABLE_HAYSTACK_SEARCH = False -#Uncomment for multilingual setup: -#HAYSTACK_ROUTERS = ['askbot.search.haystack.routers.LanguageRouter',] - -#Uncomment if you use haystack -#More info in http://django-haystack.readthedocs.org/en/latest/settings.html -#HAYSTACK_CONNECTIONS = { -# 'default': { -# 'ENGINE': 'haystack.backends.simple_backend.SimpleEngine', -# } -#} - -<% if @solr_enabled %> -#HAYSTACK_SETTINGS -# -# Notice: -# the default and default_en url must match to avoid a bug -# in r0.7.53 that broke the working model of UI search and -# cli indexing. -ENABLE_HAYSTACK_SEARCH = True - -HAYSTACK_ROUTERS = ['askbot.search.haystack.routers.LanguageRouter',] - -HAYSTACK_CONNECTIONS = { - 'default': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-en' - }, - 'default_en': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-en' - }, - 'default_zh': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-zh' - }, -} - -HAYSTACK_SIGNAL_PROCESSOR = 'askbot.search.haystack.signals.AskbotRealtimeSignalProcessor' -<% end %> - - -TINYMCE_COMPRESSOR = True -TINYMCE_SPELLCHECKER = False -TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, 'default/media/tinymce/') -#TINYMCE_JS_URL = STATIC_URL + 'default/media/js/tinymce/tiny_mce.js' -TINYMCE_DEFAULT_CONFIG = { - 'plugins': 'askbot_imageuploader,askbot_attachment', - 'convert_urls': False, - 'theme': 'advanced', - 'content_css': STATIC_URL + 'default/media/style/tinymce/content.css', - 'force_br_newlines': True, - 'force_p_newlines': False, - 'forced_root_block': '', - 'mode' : 'textareas', - 'oninit': "TinyMCE.onInitHook", - 'plugins': 'askbot_imageuploader,askbot_attachment', - 'theme_advanced_toolbar_location' : 'top', - 'theme_advanced_toolbar_align': 'left', - 'theme_advanced_buttons1': 'bold,italic,underline,|,bullist,numlist,|,undo,redo,|,link,unlink,askbot_imageuploader,askbot_attachment', - 'theme_advanced_buttons2': '', - 'theme_advanced_buttons3' : '', - 'theme_advanced_path': False, - 'theme_advanced_resizing': True, - 'theme_advanced_resize_horizontal': False, - 'theme_advanced_statusbar_location': 'bottom', - 'editor_deselector': 'mceNoEditor', - 'width': '100%', - 'height': '250' -} - -LIVESETTINGS_OPTIONS = { - 1: { - 'DB': True, - 'SETTINGS': { - 'GENERAL_SKIN_SETTINGS': { - <% if @custom_theme_enabled %> - 'ASKBOT_DEFAULT_SKIN': '<%= @custom_theme_name %>', - <%end%> - 'SHOW_LOGO': True - }, - 'LOGIN_PROVIDERS': { - 'SIGNIN_MOZILLA_PERSONA_ENABLED': False, - 'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN': False, - 'SIGNIN_LOCAL_ENABLED': False, - 'SIGNIN_AOL_ENABLED': False, - 'SIGNIN_LIVEJOURNAL_ENABLED': False, - 'SIGNIN_VERISIGN_ENABLED': False, - 'SIGNIN_IDENTI.CA_ENABLED': False, - 'SIGNIN_WORDPRESS_ENABLED': False, - 'SIGNIN_CLAIMID_ENABLED': False, - 'SIGNIN_TECHNORATI_ENABLED': False, - 'SIGNIN_TWITTER_ENABLED': False, - 'SIGNIN_VIDOOP_ENABLED': False, - 'SIGNIN_BLOGGER_ENABLED': False, - 'SIGNIN_LINKEDIN_ENABLED': False, - 'SIGNIN_FLICKR_ENABLED': False, - 'SIGNIN_FACEBOOK_ENABLED': False, - 'SIGNIN_LAUNCHPAD_ENABLED': True, - 'SIGNIN_OPENID_ENABLED': True - } - }, - } -} - -#delayed notifications, time in seconds, 15 mins by default -NOTIFICATION_DELAY_TIME = 60 * 15 - -GROUP_MESSAGING = { - 'BASE_URL_GETTER_FUNCTION': 'askbot.models.user_get_profile_url', - 'BASE_URL_PARAMS': {'section': 'messages', 'sort': 'inbox'} -} - -ASKBOT_LANGUAGE_MODE = 'url-lang' - -LANGUAGES = ( - ('en', 'English'), - ('zh', 'Chinese'), -) -COUNTRY_CODES = { - 'en': 'us', - 'zh': 'cn', -} - -ASKBOT_CSS_DEVEL = False -if 'ASKBOT_CSS_DEVEL' in locals() and ASKBOT_CSS_DEVEL == True: - COMPRESS_PRECOMPILERS = ( - ('text/less', 'lessc {infile} {outfile}'), - ) - -COMPRESS_JS_FILTERS = [] -COMPRESS_PARSER = 'compressor.parser.HtmlParser' -JINJA2_EXTENSIONS = ('compressor.contrib.jinja2ext.CompressorExtension',) -JINJA2_TEMPLATES = ('captcha',) - -# Use syncdb for tests instead of South migrations. Without this, some tests -# fail spuriously in MySQL. -SOUTH_TESTS_MIGRATE = False - -VERIFIER_EXPIRE_DAYS = 3 diff --git a/modules/openstack_project/templates/askbot/settings.py.erb b/modules/openstack_project/templates/askbot/settings.py.erb deleted file mode 100644 index d09822e6d6..0000000000 --- a/modules/openstack_project/templates/askbot/settings.py.erb +++ /dev/null @@ -1,440 +0,0 @@ -## Django settings for ASKBOT enabled project. -import os.path -import logging -import sys -import askbot -import site - -#this line is added so that we can import pre-packaged askbot dependencies -ASKBOT_ROOT = os.path.abspath(os.path.dirname(askbot.__file__)) -site.addsitedir(os.path.join(ASKBOT_ROOT, 'deps')) - -DEBUG = <%if @askbot_debug %>True<%else%>False<%end%> # set to True to enable debugging -TEMPLATE_DEBUG = False # keep false when debugging jinja2 templates -INTERNAL_IPS = ('127.0.0.1',) -ALLOWED_HOSTS = ['*',]#change this for better security on your site - -ADMINS = ( - ('Your Name', 'your_email@domain.com'), -) - -MANAGERS = ADMINS - -DATABASES = { - 'default': { - 'ENGINE': '<%= @db_engine %>', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': '<%= @db_name %>', # Or path to database file if using sqlite3. - 'USER': '<%= @db_user %>', # Not used with sqlite3. - 'PASSWORD': '<%= @db_password %>', # Not used with sqlite3. - 'HOST': '<%= @db_host %>', # Set to empty string for localhost. Not used with sqlite3. - 'PORT': '', # Set to empty string for default. Not used with sqlite3. - 'TEST_CHARSET': 'utf8', # Setting the character set and collation to utf-8 - 'TEST_COLLATION': 'utf8_general_ci', # is necessary for MySQL tests to work properly. - } -} - -#outgoing mail server settings -SERVER_EMAIL = 'noreply@openstack.org' -DEFAULT_FROM_EMAIL = 'noreply@openstack.org' -EMAIL_HOST_USER = '' -EMAIL_HOST_PASSWORD = '' -EMAIL_SUBJECT_PREFIX = '' -EMAIL_HOST='<%= @smtp_host %>' -EMAIL_PORT='<%= @smtp_port %>' -EMAIL_USE_TLS=False -#EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' -EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' - -#incoming mail settings -#after filling out these settings - please -#go to the site's live settings and enable the feature -#"Email settings" -> "allow asking by email" -# -# WARNING: command post_emailed_questions DELETES all -# emails from the mailbox each time -# do not use your personal mail box here!!! -# -IMAP_HOST = '' -IMAP_HOST_USER = '' -IMAP_HOST_PASSWORD = '' -IMAP_PORT = '' -IMAP_USE_TLS = False - -# Local time zone for this installation. Choices can be found here: -# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name -# although not all choices may be available on all operating systems. -# On Unix systems, a value of None will cause Django to use the same -# timezone as the operating system. -# If running in a Windows environment this must be set to the same as your -# system time zone. -TIME_ZONE = 'America/Chicago' - -SITE_ID = 1 - -# If you set this to False, Django will make some optimizations so as not -# to load the internationalization machinery. -USE_I18N = True -LANGUAGE_CODE = 'en' - -# Absolute path to the directory that holds uploaded media -# Example: "/home/media/media.lawrence.com/" -#MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles') -MEDIA_ROOT = '/srv/askbot-site/upfiles' -MEDIA_URL = '/upfiles/' -STATIC_URL = '/m/'#this must be different from MEDIA_URL - -PROJECT_ROOT = os.path.dirname(__file__) -STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static') - -# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a -# trailing slash. -# Examples: "http://foo.com/media/", "/media/". -ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/' - -# Make up some unique string, and don't share it with anybody. -SECRET_KEY = '44fb9b7219e3743bffabb6861cbc9a28' - -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - 'askbot.skins.loaders.Loader', - 'askbot.skins.loaders.JinjaAppDirectoryLoader', - 'django.template.loaders.app_directories.Loader', - 'django.template.loaders.filesystem.Loader', - #'django.template.loaders.eggs.load_template_source', -) - - -MIDDLEWARE_CLASSES = ( - #'django.middleware.gzip.GZipMiddleware', - #'askbot.middleware.locale.LocaleMiddleware', - 'django.middleware.locale.LocaleMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - #'django.middleware.cache.UpdateCacheMiddleware', - 'django.middleware.common.CommonMiddleware', - #'django.middleware.cache.FetchFromCacheMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'stopforumspam.middleware.StopForumSpamMiddleware', - #'django.middleware.sqlprint.SqlPrintingMiddleware', - - #below is askbot stuff for this tuple - 'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware', - 'askbot.middleware.forum_mode.ForumModeMiddleware', - 'askbot.middleware.cancel.CancelActionMiddleware', - 'django.middleware.transaction.TransactionMiddleware', - #'debug_toolbar.middleware.DebugToolbarMiddleware', - 'askbot.middleware.view_log.ViewLogMiddleware', - 'askbot.middleware.spaceless.SpacelessMiddleware', - 'askbot.middleware.csrf.CsrfViewMiddleware', -) - - - -ROOT_URLCONF = os.path.basename(os.path.dirname(__file__)) + '.urls' - - -#UPLOAD SETTINGS -FILE_UPLOAD_TEMP_DIR = os.path.join( - os.path.dirname(__file__), - 'tmp' - ).replace('\\','/') - -FILE_UPLOAD_HANDLERS = ( - 'django.core.files.uploadhandler.MemoryFileUploadHandler', - 'django.core.files.uploadhandler.TemporaryFileUploadHandler', -) -ASKBOT_ALLOWED_UPLOAD_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff') -ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 #result in bytes -DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' - - -#TEMPLATE_DIRS = (,) #template have no effect in askbot, use the variable below -#ASKBOT_EXTRA_SKINS_DIR = #path to your private skin collection -#take a look here http://askbot.org/en/question/207/ - -<% if @custom_theme_enabled %> -ASKBOT_EXTRA_SKINS_DIR = '<%= @site_root %>/themes' -<% end %> - -TEMPLATE_CONTEXT_PROCESSORS = ( - 'django.core.context_processors.request', - 'askbot.context.application_settings', - #'django.core.context_processors.i18n', - 'askbot.user_messages.context_processors.user_messages',#must be before auth - 'django.contrib.auth.context_processors.auth', #this is required for the admin app - 'django.core.context_processors.csrf', #necessary for csrf protection - 'askbot.deps.group_messaging.context.group_messaging_context', -) - - -INSTALLED_APPS = ( - 'longerusername', - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.staticfiles', - - #all of these are needed for the askbot - 'django.contrib.admin', - 'django.contrib.humanize', - 'django.contrib.sitemaps', - 'django.contrib.messages', - #'debug_toolbar', -<% if @solr_enabled %> - #Optional, to enable haystack search - 'haystack', -<% end %> - 'compressor', - 'askbot', - 'askbot.deps.django_authopenid', - #'askbot.importers.stackexchange', #se loader - 'south', - 'askbot.deps.livesettings', - 'keyedcache', - 'robots', - 'django_countries', - 'djcelery', - 'djkombu', - 'followit', - 'tinymce', - 'group_messaging', - 'captcha', - #'avatar',#experimental use git clone git://github.com/ericflo/django-avatar.git$ -) - - -NOCAPTCHA = True - -#setup memcached for production use! -#see http://docs.djangoproject.com/en/1.1/topics/cache/ for details -CACHE_BACKEND = 'locmem://' - -#needed for django-keyedcache -CACHE_TIMEOUT = 6000 -#sets a special timeout for livesettings if you want to make them different -LIVESETTINGS_CACHE_TIMEOUT = CACHE_TIMEOUT -#CACHE_PREFIX = 'askbot' #make this unique -CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True -#If you use memcache you may want to uncomment the following line to enable memcached based sessions -#SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' - -<% if @redis_enabled %> -CACHES = { - 'default': { - 'BACKEND': 'redis_cache.RedisCache', - 'LOCATION': '<%= @redis_bind %>:<%= @redis_port %>', - 'KEY_PREFIX': '<%= @redis_prefix %>', #make unique same as db - 'OPTIONS': { - 'DB': 1, - 'PASSWORD': '<%= @redis_password %>', - # 'PARSER_CLASS': 'redis.connection.HiredisParser' - } - } -} -<%end%> - -AUTHENTICATION_BACKENDS = ( - 'django.contrib.auth.backends.ModelBackend', - 'askbot.deps.django_authopenid.backends.AuthBackend', -) - -#logging settings -LOG_FILENAME = 'askbot.log' -logging.basicConfig( - filename=os.path.join('<%= @site_root %>/log', LOG_FILENAME), - level=logging.CRITICAL, - format='%(pathname)s TIME: %(asctime)s MSG: %(filename)s:%(funcName)s:%(lineno)d %(message)s', -) - -########################### -# -# this will allow running your forum with url like http://site.com/forum -# -# ASKBOT_URL = 'forum/' -# -ASKBOT_URL = '' #no leading slash, default = '' empty string -ASKBOT_TRANSLATE_URL = False #translate specific URLs -_ = lambda v:v #fake translation function for the login url -LOGIN_URL = '/%s%s%s' % (ASKBOT_URL,_('account/'),_('signin/')) -LOGIN_REDIRECT_URL = ASKBOT_URL #adjust, if needed -#note - it is important that upload dir url is NOT translated!!! -#also, this url must not have the leading slash -ALLOW_UNICODE_SLUGS = False -ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange - -#Celery Settings -BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport" -CELERY_ALWAYS_EAGER = False - -import djcelery -djcelery.setup_loader() -DOMAIN_NAME = '' - -CSRF_COOKIE_NAME = '_csrf' -#https://docs.djangoproject.com/en/1.3/ref/contrib/csrf/ -#CSRF_COOKIE_DOMAIN = DOMAIN_NAME - -STATIC_ROOT = os.path.join(PROJECT_ROOT, "static") -STATIC_ROOT = '<%= @site_root %>/static' -STATICFILES_DIRS = ( - ('default/media', os.path.join(ASKBOT_ROOT, 'media')), - <% if @custom_theme_enabled %>'<%= @site_root %>/themes',<% end %> -) -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'compressor.finders.CompressorFinder', -) - -RECAPTCHA_USE_SSL = True - -#HAYSTACK_SETTINGS -ENABLE_HAYSTACK_SEARCH = False -#Uncomment for multilingual setup: -#HAYSTACK_ROUTERS = ['askbot.search.haystack.routers.LanguageRouter',] - -#Uncomment if you use haystack -#More info in http://django-haystack.readthedocs.org/en/latest/settings.html -#HAYSTACK_CONNECTIONS = { -# 'default': { -# 'ENGINE': 'haystack.backends.simple_backend.SimpleEngine', -# } -#} - -<% if @solr_enabled %> -#HAYSTACK_SETTINGS -# -# Notice: -# the default and default_en url must match to avoid a bug -# in r0.7.53 that broke the working model of UI search and -# cli indexing. -ENABLE_HAYSTACK_SEARCH = True - -HAYSTACK_ROUTERS = ['askbot.search.haystack.routers.LanguageRouter',] - -HAYSTACK_CONNECTIONS = { - 'default': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-en' - }, - 'default_en': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-en' - }, - 'default_zh': { - 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', - 'URL': 'http://127.0.0.1:8983/solr/core-zh' - }, -} - -HAYSTACK_SIGNAL_PROCESSOR = 'askbot.search.haystack.signals.AskbotRealtimeSignalProcessor' -<% end %> - - -TINYMCE_COMPRESSOR = True -TINYMCE_SPELLCHECKER = False -TINYMCE_JS_ROOT = os.path.join(STATIC_ROOT, 'default/media/tinymce/') -#TINYMCE_JS_URL = STATIC_URL + 'default/media/js/tinymce/tiny_mce.js' -TINYMCE_DEFAULT_CONFIG = { - 'plugins': 'askbot_imageuploader,askbot_attachment', - 'convert_urls': False, - 'theme': 'advanced', - 'content_css': STATIC_URL + 'default/media/style/tinymce/content.css', - 'force_br_newlines': True, - 'force_p_newlines': False, - 'forced_root_block': '', - 'mode' : 'textareas', - 'oninit': "TinyMCE.onInitHook", - 'plugins': 'askbot_imageuploader,askbot_attachment', - 'theme_advanced_toolbar_location' : 'top', - 'theme_advanced_toolbar_align': 'left', - 'theme_advanced_buttons1': 'bold,italic,underline,|,bullist,numlist,|,undo,redo,|,link,unlink,askbot_imageuploader,askbot_attachment', - 'theme_advanced_buttons2': '', - 'theme_advanced_buttons3' : '', - 'theme_advanced_path': False, - 'theme_advanced_resizing': True, - 'theme_advanced_resize_horizontal': False, - 'theme_advanced_statusbar_location': 'bottom', - 'editor_deselector': 'mceNoEditor', - 'width': '100%', - 'height': '250' -} - -LIVESETTINGS_OPTIONS = { - 1: { - 'DB': True, - 'SETTINGS': { - 'ACCESS_CONTROL': { - 'READ_ONLY_MODE_ENABLED': True, - 'READ_ONLY_MESSAGE': - 'The ask.openstack.org website will be read-only from ' - 'now on. Please ask questions on the openstack-discuss ' - 'mailing-list, stackoverflow.com for coding or ' - 'serverfault.com for operations.' - }, - 'GENERAL_SKIN_SETTINGS': { - <% if @custom_theme_enabled %> - 'ASKBOT_DEFAULT_SKIN': '<%= @custom_theme_name %>', - <%end%> - 'SHOW_LOGO': True - }, - 'LOGIN_PROVIDERS': { - 'SIGNIN_MOZILLA_PERSONA_ENABLED': False, - 'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN': False, - 'SIGNIN_LOCAL_ENABLED': False, - 'SIGNIN_AOL_ENABLED': False, - 'SIGNIN_LIVEJOURNAL_ENABLED': False, - 'SIGNIN_VERISIGN_ENABLED': False, - 'SIGNIN_IDENTI.CA_ENABLED': False, - 'SIGNIN_WORDPRESS_ENABLED': False, - 'SIGNIN_CLAIMID_ENABLED': False, - 'SIGNIN_TECHNORATI_ENABLED': False, - 'SIGNIN_TWITTER_ENABLED': False, - 'SIGNIN_VIDOOP_ENABLED': False, - 'SIGNIN_BLOGGER_ENABLED': False, - 'SIGNIN_LINKEDIN_ENABLED': False, - 'SIGNIN_FLICKR_ENABLED': False, - 'SIGNIN_FACEBOOK_ENABLED': False, - 'SIGNIN_LAUNCHPAD_ENABLED': True, - 'SIGNIN_OPENID_ENABLED': True - } - }, - } -} - -#delayed notifications, time in seconds, 15 mins by default -NOTIFICATION_DELAY_TIME = 60 * 15 - -GROUP_MESSAGING = { - 'BASE_URL_GETTER_FUNCTION': 'askbot.models.user_get_profile_url', - 'BASE_URL_PARAMS': {'section': 'messages', 'sort': 'inbox'} -} - -ASKBOT_LANGUAGE_MODE = 'url-lang' - -LANGUAGES = ( - ('en', 'English'), - ('zh', 'Chinese'), -) -COUNTRY_CODES = { - 'en': 'us', - 'zh': 'cn', -} - -ASKBOT_CSS_DEVEL = False -if 'ASKBOT_CSS_DEVEL' in locals() and ASKBOT_CSS_DEVEL == True: - COMPRESS_PRECOMPILERS = ( - ('text/less', 'lessc {infile} {outfile}'), - ) - -COMPRESS_JS_FILTERS = [] -COMPRESS_PARSER = 'compressor.parser.HtmlParser' -JINJA2_EXTENSIONS = ('compressor.contrib.jinja2ext.CompressorExtension',) -JINJA2_TEMPLATES = ('captcha',) - -# Use syncdb for tests instead of South migrations. Without this, some tests -# fail spuriously in MySQL. -SOUTH_TESTS_MIGRATE = False - -VERIFIER_EXPIRE_DAYS = 3