Skip to main content

Throat

https://phuks.co/

A phoxy link and discussion aggregator with snek (python3)

Dependencies:

  • A database server, MySQL, MariaDB and Postres have been tested. Sqlite should work for messing locally
  • Redis
  • Python >= 3.7
  • A recent node/npm
  • libmagic and gobject

Setup:

We recommend using a virtualenv or Pyenv

  1. Install Python dependencies with pip install -r requirements.txt
  2. Install Node dependencies with npm install
  3. Build the bundles with npm run build
  4. Copy example.config.yml to config.yml and edit it
  5. Set up the database by executing ./scripts/migrate.py

And you're done! You can run a test server by executing ./throat.py. For production instances we recommend setting up gunicorn

Develop on Docker

If you prefer to develop on docker

  • The provided Docker resources only support Postgres
  • You still must copy example.config.yaml to config.yaml and make any changes you want
  • In addition, configs are overridden by environment variables set in docker-compose.yml which reference the redis and postgres services created by docker-compose.

make up will bring the containerized site up and mount your current working directory inside the container for dev. It also runs the migrations on start-up. make down will spin down the containerized services.

To add an admin user to a running docker-compose application: docker exec throat_throat_1 python3 scripts/admins.py --add {{username}}

If Wheezy templates are not automatically reloading in docker between changes, try docker restart throat_throat_1.

Docker Deployments

Gunicorn

CMD [ "gunicorn", \
      "-w", "4", \
      "-k", "geventwebsocket.gunicorn.workers.GeventWebSocketWorker", \
      "-b", "0.0.0.0:5000", \
      "throat:app" ]

Authenticating with a Keycloak server

Optionally, user authentication can be done using a Keycloak server. You will need to create a realm for the users on the server, as well as Keycloak clients with appropriate permissions. See doc/keycloak.org for instructions.

Tests

Python tests

  1. Python, redis, libmagic and gobject are required, but node and postgres are not.
  2. Install dependencies with pip install -r requirements.txt
  3. Install the test dependencies with pip install -r requirements-test.txt
  4. Run the tests with python -m pytest
  5. The tests are not affected by your configuration in config.yaml. If you wish to run the tests against production database or authentication servers (instead of the defaults, which are sqlite and local authentication), you may put configuration settings in test_config.yaml and run the tests with TEST_CONFIG=test_config.yaml python -m pytest

Chat

If you have any questions, you can reach us on #throat:phuks.co on Matrix


You can manage default subs by using

  • $ ./scripts/defaults.py

To add/remove administrators use

  • $ ./scripts/admins.py

Release files for throat 0.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for throat 0.0.0
File Size Uploaded
throat-0.0.0.tar.gz 86.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for throat 0.0.0
File Interpreter ABI Platform
throat-0.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 183.6 kB

Release files / throat-0.0.0.tar.gz

Download URL throat-0.0.0.tar.gz
Size 86.2 kB
Tags Source
SHA-256 checksum
How to use checksums
35f52a78294c931d27745975665f740ef1de737d4b20be03e2b9ddc33dedc8c3
BLAKE2b-256 checksum
How to use checksums
10b403f71d3c0a25e80bcb03d139150ccda4d3e85fe412659411446398566449
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2

Release files / throat-0.0.0-py3-none-any.whl

Download URL throat-0.0.0-py3-none-any.whl
Size 97.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd6ff14a821d92ba30c3b006afe7794e1c682147e46c95091b3b88fecb0f1f2b
BLAKE2b-256 checksum
How to use checksums
fb4e2ce0478a0a1ae16ea45ea270a299cb3681d02419889fbb6a207c3f436ad6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.2

Release history Release notifications | RSS feed

This release

0.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page