Operator direction: stop hand-attaching tags ('ghost metadata'
invisible to the humans and agents reading the page). Derive tags
from title + description (auto-hydrate + suggest engine) instead.
- New MPS-22-style kill switch: app.features.manual_tags.enabled
(request.manual_tags_enabled, DEFAULT FALSE, env
MPS_FEATURES_MANUAL_TAGS_ENABLED, =True in test.ini so the existing
tag suite keeps passing).
- product_edit.j2: hides the chip editor + comma tags field +
product_tags.js; shows a 'tags are derived from your title &
description' note (lists current auto-derived tags read-only).
- shop_tags.j2: hides 'Create a tag' + the per-product apply (focus)
section; shows a 'How tags work' note. Suggest categories + the
category overview stay (the blessed linguistic path).
- Endpoints remain functional -> flipping the flag On is instant and
lossless ('until further notice').
- CLAUDE.md: 'Tag Philosophy' section + manual_tags row in the
kill-switch matrix. mps-24.md Phase 2.8o.
- Tests: TestManualTagsKillSwitch (fresh app, flag False; mirrors
TestKillSwitches). 1147 passed; existing tag suite green under
test.ini (flag True).
113 lines
3.3 KiB
INI
113 lines
3.3 KiB
INI
[app:main]
|
|
use = egg:make_post_sell
|
|
|
|
pyramid.reload_templates = true
|
|
pyramid.debug_authorization = false
|
|
pyramid.debug_notfound = false
|
|
pyramid.debug_routematch = false
|
|
pyramid.default_locale_name = en
|
|
|
|
sqlalchemy.url = sqlite:///%(here)s/${TEST_DATABASE_PATH:-test_make_post_sell.sqlite}
|
|
|
|
retry.attempts = 3
|
|
|
|
session.hashalg = sha512
|
|
session.secret = test-secret
|
|
session.timeout = 31104000
|
|
session.max_age = 31104000
|
|
session.reissue_time = 15552000
|
|
session.samesite = None
|
|
|
|
app.root_domain = blanka.foxhop.net
|
|
|
|
app.bucket.secure_uploads = plan-period-files
|
|
app.bucket.secure_uploads.region = nyc3
|
|
app.bucket.secure_uploads.post_endpoint = https://nyc3.digitaloceanspaces.com
|
|
app.bucket.secure_uploads.get_endpoint = https://plan-period-files.nyc3.digitaloceanspaces.com
|
|
app.bucket.secure_uploads.access_key = ${MPS_APP_SECURE_UPLOADS_ACCESS_KEY}
|
|
app.bucket.secure_uploads.secret_key = ${MPS_APP_SECURE_UPLOADS_SECRET_KEY}
|
|
|
|
# stripe test mode is enabled for development & disabled by default.
|
|
app.stripe.test_mode = True
|
|
|
|
# Payment method toggles
|
|
app.payments.stripe.enabled = True
|
|
app.payments.monero.enabled = False
|
|
app.payments.paypal.enabled = True
|
|
|
|
# MPS-22: feature kill switches — ON in tests so feature tests keep working.
|
|
# Production / development.ini default both to False (broken in prod until
|
|
# MPS-18 + MPS-19 land). TestKillSwitches builds a fresh app with both off.
|
|
app.features.karaoke.enabled = True
|
|
app.features.torrent.enabled = True
|
|
# Manual tag UI ON in tests so existing tag tests keep working;
|
|
# prod/dev default it False (tags derived from title+desc). A dedicated
|
|
# test builds a fresh app with it False to verify the hidden path.
|
|
app.features.manual_tags.enabled = True
|
|
|
|
# Bounded SSE (offer/auction live feeds) — tiny windows so the streaming
|
|
# endpoints return almost immediately under webtest instead of holding for
|
|
# ~25s. Production / development use the code defaults (25s hold, 1.5s poll).
|
|
app.sse.hold_seconds = 0.05
|
|
app.sse.poll_interval_seconds = 0.02
|
|
|
|
# PayPal sandbox mode for testing
|
|
app.paypal.sandbox_mode = True
|
|
|
|
# Monero RPC Configuration for tests
|
|
monero.rpc_url = http://127.0.0.1:18083/json_rpc
|
|
monero.rpc_user =
|
|
monero.rpc_pass =
|
|
monero.account_index = 0
|
|
monero.quote_expiry_seconds = 900
|
|
monero.rate_source_url = https://api.coingecko.com/api/v3/simple/price?ids=monero&vs_currencies=usd
|
|
|
|
# Monero confirmation requirements by amount tier
|
|
# Note: Payment thresholds are now per-shop settings (default $10 and $100)
|
|
monero.confirmations.petty = 2
|
|
monero.confirmations.mid = 10
|
|
monero.confirmations.high = 20
|
|
|
|
[pshell]
|
|
setup = make_post_sell.scripts.pshell.setup
|
|
|
|
[alembic]
|
|
# path to migration scripts
|
|
script_location = make_post_sell:scripts/alembic
|
|
sqlalchemy.url = sqlite:///%(here)s/${TEST_DATABASE_PATH:-test_make_post_sell.sqlite}
|
|
|
|
[server:main]
|
|
use = egg:waitress#main
|
|
listen = localhost:6502
|
|
|
|
[loggers]
|
|
keys = root, make_post_sell, sqlalchemy
|
|
|
|
[handlers]
|
|
keys = console
|
|
|
|
[formatters]
|
|
keys = generic
|
|
|
|
[logger_root]
|
|
level = INFO
|
|
handlers = console
|
|
|
|
[logger_make_post_sell]
|
|
level = DEBUG
|
|
handlers =
|
|
qualname = make_post_sell
|
|
|
|
[logger_sqlalchemy]
|
|
level = DEBUG
|
|
handlers =
|
|
qualname = sqlalchemy.engine
|
|
|
|
[handler_console]
|
|
class = StreamHandler
|
|
args = (sys.stderr,)
|
|
level = NOTSET
|
|
formatter = generic
|
|
|
|
[formatter_generic]
|
|
format = %(asctime)s %(levelname)-5.5s [%(name)s:%(lineno)s][%(threadName)s] %(message)s
|