Merry Christmas! I AM READY I love you all! new file: .gitignore new file: MANIFEST.in new file: Makefile new file: README.rst new file: development.ini new file: index.html new file: index2.html new file: journal.rst new file: readme-postgres-notes.rst new file: readme-themes.rst new file: remarkbox/__init__.py new file: remarkbox/lib/__init__.py new file: remarkbox/lib/mail.py new file: remarkbox/lib/mail_messages.py new file: remarkbox/lib/notify.py new file: remarkbox/lib/render.py new file: remarkbox/lib/svgtar/__init__.py new file: remarkbox/lib/svgtar/svg.py new file: remarkbox/models/__init__.py new file: remarkbox/models/event.py new file: remarkbox/models/meta.py new file: remarkbox/models/namespace.py new file: remarkbox/models/namespace_request.py new file: remarkbox/models/namespace_user.py new file: remarkbox/models/node.py new file: remarkbox/models/node_cache.py new file: remarkbox/models/notification.py new file: remarkbox/models/oauth.py new file: remarkbox/models/pay_what_you_can.py new file: remarkbox/models/uri.py new file: remarkbox/models/user.py new file: remarkbox/models/vote.py new file: remarkbox/models/watcher.py new file: remarkbox/routes.py new file: remarkbox/scripts/__init__.py new file: remarkbox/scripts/alembic/README new file: remarkbox/scripts/alembic/env.py new file: remarkbox/scripts/alembic/script.py.mako new file: remarkbox/scripts/alembic/versions/00211ed642cc_add_ip_address_column_to_rb_node.py new file: remarkbox/scripts/alembic/versions/0208c10ea67f_create_new_node_cache_table.py new file: remarkbox/scripts/alembic/versions/04e52337756e_autogenerated_indicies.py new file: remarkbox/scripts/alembic/versions/051f8b810f26_namespace_ignore_query_string.py new file: remarkbox/scripts/alembic/versions/1040ee4836af_namespace_description.py new file: remarkbox/scripts/alembic/versions/184a349cd589_uri_accessed_timestamp.py new file: remarkbox/scripts/alembic/versions/256468780798_root_nodes_to_namespace_.py new file: remarkbox/scripts/alembic/versions/2e00b92495e4_node_disabled_timestamp.py new file: remarkbox/scripts/alembic/versions/3ee195d142fb_add_subscription_type_to_namespace.py new file: remarkbox/scripts/alembic/versions/40ded1163f95_add_user_surrogate_columns.py new file: remarkbox/scripts/alembic/versions/43c1e5a99d4e_new_namespace_column_3.py new file: remarkbox/scripts/alembic/versions/4aeda8e797ab_new_namespace_column_for_stylesheet_uris.py new file: remarkbox/scripts/alembic/versions/503a2cef2378_root_stats.py new file: remarkbox/scripts/alembic/versions/591800942adf_node_data_html_column.py new file: remarkbox/scripts/alembic/versions/59592cf325fb_stylesheet_timestamp.py new file: remarkbox/scripts/alembic/versions/5a5d0b68db78_add_root_id_field.py new file: remarkbox/scripts/alembic/versions/6a440d3921d2_added_email_id_column_to_user_table.py new file: remarkbox/scripts/alembic/versions/6bbc92ccc112_add_changed_column_to_node_table.py new file: remarkbox/scripts/alembic/versions/6db39621f46c_namespace_group_conversations.py new file: remarkbox/scripts/alembic/versions/6fc1d0cf350c_notification_columns_to_rb_user_table.py new file: remarkbox/scripts/alembic/versions/76deff88cfd6_create_graph_depth_column_on_node_model.py new file: remarkbox/scripts/alembic/versions/771ef7c868de_added_created_timestamp_column_to_.py new file: remarkbox/scripts/alembic/versions/7a3a4755b4a8_add_hide_unless_approved_column.py new file: remarkbox/scripts/alembic/versions/87fbd2b4e06e_namespace_theme_embed_column.py new file: remarkbox/scripts/alembic/versions/953d42406dbb_namespace_public_column.py new file: remarkbox/scripts/alembic/versions/98a90d2add21_namespace_model.py new file: remarkbox/scripts/alembic/versions/98ced5f6ff36_stripe_id_for_user.py new file: remarkbox/scripts/alembic/versions/a26302bcfa25_add_created_timestamp_column_to_oauth_.py new file: remarkbox/scripts/alembic/versions/a38c12eeff2d_locked_rb_node.py new file: remarkbox/scripts/alembic/versions/a738d6859f18_new_namespace_columns_2.py new file: remarkbox/scripts/alembic/versions/aa2dfb4decda_hide_powered_by_column.py new file: remarkbox/scripts/alembic/versions/b132ec968f0c_pay_what_you_can_table.py new file: remarkbox/scripts/alembic/versions/ba8e83a3b8fd_namespace_stylesheet_embed_column.py new file: remarkbox/scripts/alembic/versions/c9793937e756_make_all_verified_namespace_request_.py new file: remarkbox/scripts/alembic/versions/c97ddfcbc406_approve_column.py new file: remarkbox/scripts/alembic/versions/cbdf3cd4ccba_avatar_size_in_namespace.py new file: remarkbox/scripts/alembic/versions/d1a0ab4f617f_add_has_uri_to_node.py new file: remarkbox/scripts/alembic/versions/f5f88293428a_add_mathjax_column_to_rb_namespace.py new file: remarkbox/scripts/alembic/versions/f7b42b2024fb_namespace_reverse_node_order.py new file: remarkbox/scripts/alembic/versions/fa8402aa1a00_add_link_protection_column_to_namespace.py new file: remarkbox/scripts/dump_sqlite3_to_csv.sh new file: remarkbox/scripts/init_db.py new file: remarkbox/scripts/invalidate_node_cache.py new file: remarkbox/scripts/json_import.py new file: remarkbox/scripts/load_csv_into_postgres.sh new file: remarkbox/scripts/merge_dupes.py new file: remarkbox/scripts/modify_namespace.py new file: remarkbox/scripts/modify_node.py new file: remarkbox/scripts/modify_uris.py new file: remarkbox/scripts/modify_user.py new file: remarkbox/scripts/recompute_node_depths.py new file: remarkbox/scripts/safe_approve_all_nodes.py new file: remarkbox/scripts/send_node_digest_notifications.py new file: remarkbox/static/css/common.css new file: remarkbox/static/css/embed.css new file: remarkbox/static/css/pygments.css new file: remarkbox/static/favicon.ico new file: remarkbox/static/img/remarkbox-logo.png new file: remarkbox/static/img/remarkbox-minified.png new file: remarkbox/static/js/custom.js new file: remarkbox/static/js/iframe-resizer/ie8.polyfils.map new file: remarkbox/static/js/iframe-resizer/ie8.polyfils.min.js new file: remarkbox/static/js/iframe-resizer/iframeResizer.contentWindow.js new file: remarkbox/static/js/iframe-resizer/iframeResizer.contentWindow.map new file: remarkbox/static/js/iframe-resizer/iframeResizer.contentWindow.min.js new file: remarkbox/static/js/iframe-resizer/iframeResizer.js new file: remarkbox/static/js/iframe-resizer/iframeResizer.map new file: remarkbox/static/js/iframe-resizer/iframeResizer.min.js new file: remarkbox/static/js/iframe-resizer/index.js new file: remarkbox/static/js/iframe-resizer/readme.rst new file: remarkbox/static/js/jquery-2.1.3.min.js new file: remarkbox/static/theme/readme.rst new file: remarkbox/templates/base.j2 new file: remarkbox/templates/billing.j2 new file: remarkbox/templates/dynamic-remarkbox.css.j2 new file: remarkbox/templates/edit-node.j2 new file: remarkbox/templates/embed-iframe.txt.j2 new file: remarkbox/templates/home.j2 new file: remarkbox/templates/join-or-log-in.j2 new file: remarkbox/templates/list-namespace-owners.j2 new file: remarkbox/templates/list-namespace-requests.j2 new file: remarkbox/templates/list-nodes.j2 new file: remarkbox/templates/list-notifications.j2 new file: remarkbox/templates/mail_digest_html.j2 new file: remarkbox/templates/mail_digest_text.j2 new file: remarkbox/templates/mail_immediate_html.j2 new file: remarkbox/templates/mail_immediate_text.j2 new file: remarkbox/templates/mail_snippet_html.j2 new file: remarkbox/templates/mail_snippet_text.j2 new file: remarkbox/templates/namespace-settings.j2 new file: remarkbox/templates/new.j2 new file: remarkbox/templates/rss.xml.j2 new file: remarkbox/templates/setup-namespace.j2 new file: remarkbox/templates/show-count.j2 new file: remarkbox/templates/show-node.j2 new file: remarkbox/templates/show-node2.j2 new file: remarkbox/templates/sitemap.xml.j2 new file: remarkbox/templates/snippets/add-to-slack.j2 new file: remarkbox/templates/snippets/create.j2 new file: remarkbox/templates/snippets/csrf.j2 new file: remarkbox/templates/snippets/email.j2 new file: remarkbox/templates/snippets/flash-alerts.j2 new file: remarkbox/templates/snippets/forms.j2 new file: remarkbox/templates/snippets/google-analytics.j2 new file: remarkbox/templates/snippets/javascript-includes.j2 new file: remarkbox/templates/snippets/owner-key-comment.j2 new file: remarkbox/templates/snippets/phone-menu.j2 new file: remarkbox/templates/snippets/powered-by.j2 new file: remarkbox/templates/snippets/search.j2 new file: remarkbox/templates/snippets/snippets.j2 new file: remarkbox/templates/snippets/stripe.j2 new file: remarkbox/templates/snippets/stylesheet-includes.j2 new file: remarkbox/templates/snippets/submit.j2 new file: remarkbox/templates/update-card.j2 new file: remarkbox/templates/user-settings.j2 new file: remarkbox/templates/user-watching.j2 new file: remarkbox/tests/test_models.py new file: remarkbox/tests/test_render.py new file: remarkbox/tests/test_views.py new file: remarkbox/views/__init__.py new file: remarkbox/views/authenticated/__init__.py new file: remarkbox/views/authenticated/authenticated.py new file: remarkbox/views/authenticated/lock.py new file: remarkbox/views/authenticated/notifications.py new file: remarkbox/views/authenticated/oauth.py new file: remarkbox/views/authenticated/stripe.py new file: remarkbox/views/authenticated/topsecret.py new file: remarkbox/views/authenticated/watch.py new file: remarkbox/views/authentication.py new file: remarkbox/views/list_nodes.py new file: remarkbox/views/misc.py new file: remarkbox/views/modify_node.py new file: remarkbox/views/new_thread.py new file: remarkbox/views/reply_node.py new file: requirements-dev.txt new file: requirements-prod.txt new file: requirements-test.txt new file: requirements.py3.txt new file: requirements.txt new file: setup.py new file: test.ini
140 lines
3.6 KiB
INI
140 lines
3.6 KiB
INI
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
|
|
|
|
[alembic]
|
|
script_location = remarkbox:scripts/alembic
|
|
sqlalchemy.url = sqlite:///%(here)s/test-remarkbox.sqlite
|
|
|
|
[app:main]
|
|
use = egg:remarkbox
|
|
|
|
sqlalchemy.url = sqlite:///%(here)s/test-remarkbox.sqlite
|
|
#sqlalchemy.url = postgres://localhost/remarkbox_test
|
|
|
|
###
|
|
# Pyramid configuration.
|
|
###
|
|
pyramid.reload_templates = true
|
|
pyramid.debug_authorization = false
|
|
pyramid.debug_notfound = false
|
|
pyramid.debug_routematch = false
|
|
pyramid.default_locale_name = en
|
|
pyramid.includes =
|
|
pyramid_tm
|
|
|
|
# By default, the toolbar only appears for clients from IP addresses
|
|
# '127.0.0.1' and '::1'.
|
|
# debugtoolbar.hosts = 127.0.0.1 ::1
|
|
|
|
###
|
|
# session / cookie configuration.
|
|
# http://docs.pylonsproject.org/docs/pyramid/en/latest/api/session.html
|
|
###
|
|
session.hashalg = sha512
|
|
session.secret = test-test-secret
|
|
session.timeout = 31104000
|
|
session.max_age = 31104000
|
|
session.reissue_time = 15552000
|
|
|
|
###
|
|
# custom app configuration.
|
|
###
|
|
app.avatar.size = 35
|
|
|
|
# If set we force all links related to `join or log in` to this base url
|
|
# and use this url for links in email notifications.
|
|
# Also useful when multiple subdomains point at the same Remarkbox cluster.
|
|
# In prod I set this to: https://my.remarkbox.com (default = request.host_url)
|
|
#app.app_url = ""
|
|
|
|
# if your marketing / main landing page base url is different then app url.
|
|
# In prod I set this to: https://www.remarkbox.com (default = request.app_url)
|
|
#app.marketing_url = ""
|
|
|
|
# if Node is None, we can redirect to this uri.
|
|
#app.safe_redirect = https://unturf.com
|
|
|
|
app.email.relay = localhost
|
|
app.email.sender = no-reply@remarkbox.com
|
|
|
|
# set this to the path of your private DKIM key.
|
|
# reference: https://russell.ballestrini.net/quickstart-to-dkim-signed-email-with-python/
|
|
#app.email.dkim_private_key_path = ""
|
|
#app.email.dkim_selector = ""
|
|
|
|
# The app name in the email subject (default = request.app_domain)
|
|
# In production I set this to "Remarkbox".
|
|
#app.email.subject_postfix
|
|
|
|
# optional theme plugin name.
|
|
#app.theme = westworld
|
|
app.theme = meta
|
|
|
|
# optional theme plugin name for embed mode.
|
|
#app.theme_embed = meta
|
|
|
|
# stand-alone mode disables a bunch of views and templates
|
|
# related to billing and registering Namespaces. Defaults to False
|
|
#app.stand_alone_mode = enabled
|
|
|
|
# stripe: credit card storage and processing.
|
|
# This syntax will automatically expand an ENV var of the same name.
|
|
app.stripe.secret = ${REMARKBOX_APP_STRIPE_SECRET}
|
|
app.stripe.public = ${REMARKBOX_APP_STRIPE_PUBLIC}
|
|
|
|
# slack: bot notifications.
|
|
app.slack.secret = ${REMARKBOX_APP_SLACK_SECRET}
|
|
app.slack.public = ${REMARKBOX_APP_SLACK_PUBLIC}
|
|
app.slack.oauth_scope = channels:read,chat:write:bot
|
|
|
|
# feature flag for email notifications.
|
|
#app.deliver_email_notifications = true
|
|
|
|
###
|
|
# wsgi server configuration
|
|
###
|
|
[server:main]
|
|
use = egg:waitress#main
|
|
host = 0.0.0.0
|
|
port = 6543
|
|
|
|
###
|
|
# logging configuration
|
|
# http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/logging.html
|
|
###
|
|
[loggers]
|
|
keys = root, remarkbox, sqlalchemy
|
|
|
|
[handlers]
|
|
keys = console
|
|
|
|
[formatters]
|
|
keys = generic
|
|
|
|
[logger_root]
|
|
level = INFO
|
|
handlers = console
|
|
|
|
[logger_remarkbox]
|
|
level = DEBUG
|
|
handlers =
|
|
qualname = remarkbox
|
|
|
|
[logger_sqlalchemy]
|
|
level = INFO
|
|
handlers =
|
|
qualname = sqlalchemy.engine
|
|
# "level = INFO" logs SQL queries.
|
|
# "level = DEBUG" logs SQL queries and results.
|
|
# "level = WARN" logs neither. (Recommended for production systems.)
|
|
|
|
[handler_console]
|
|
class = StreamHandler
|
|
args = (sys.stderr,)
|
|
level = NOTSET
|
|
formatter = generic
|
|
|
|
[formatter_generic]
|
|
format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s
|
|
|
|
[pshell]
|
|
m = remarkbox.models
|