A port over to another registration system in python
Find a file
Cara Salter 60953074e7
registration: Basic password reset
I think expiration should be pending on a proper way to do recurring
tasks -- I'm personally in favor of a CLI command that can be run from a
cronjob or systemd timer that will do things like auto-expire password
reset requests and send the daily registration reports.

Now that I'm thinking about it, this does need at least a rudimentary
system to make sure that it actually expires. If the expiration is
invalid at the time of reset, then the request can just be invalidated
and deleted. There's no pressing need for automatic removal until it's
implemented.

Thoughts @willhockey20?
2023-01-03 17:43:17 -05:00
contrib README 2022-12-06 15:23:58 -05:00
goathacks registration: Basic password reset 2023-01-03 17:43:17 -05:00
migrations registration: Basic password reset 2023-01-03 17:43:17 -05:00
.gitignore Add example .env 2022-12-06 15:05:40 -05:00
.gitmodules Update static site 2022-12-09 16:09:55 -05:00
LICENSE re-add license 2022-12-07 08:58:17 -05:00
Makefile meta: Make Makefile platform-agnostic 2022-12-09 15:48:35 -05:00
README.md README 2022-12-06 15:23:58 -05:00
requirements.txt meta: Add ulid dependency 2022-12-30 14:38:01 -05:00
wsgi.py cli: Command-line user management 2022-12-06 17:59:49 -05:00

GoatHacks Registration Management

This is a rewrite of the original (commit 198f56f2c4) management system for Flask 2.1 and Postgres. The focus was on maintainability in the future and easy modifications for future years.

Setting up a development environment

The Makefile should have a bunch of useful recipes for you. Once you clone the repo for the first time, run make init_env, which will set up the virtual environment for development. If the dependencies ever change, you can run make upgrade_env to install the new packages.

To test your code, run make daemon, which will start a development server. It will automatically reload after your changes.

Setting up for production

You can use your choice of WSGI server. Instructions are provided below for uWSGI. Please ensure a current (3.x) version of Python and Pip.

  1. pip install uwsgi # or the equivalent for your distribution's package manager
  2. mkdir -p /etc/uwsgi/apps-available
  3. mkdir -p /var/log/uwsgi
  4. sudo chown -R nginx:nginx /var/log/uwsgi
  5. mkdir -p /var/app
  6. git clone https://github.com/WPI-ACM/Hack-WPI-Python /var/app/goathacks
  7. cd /var/app/goathacks && make init_env
  8. cp /var/app/goathacks/contrib/goathacks.ini /etc/uwsgi/apps-available/goathacks.ini
  9. cp /var/app/goathacks/contrib/goathacks.service /etc/systemd/system/goathacks.service
  10. cp /var/app/goathacks/goathacks/config.py.example /var/app/goathacks/goathacks/config.py
  11. $EDITOR /var/app/goathacks/goathacks/config.py