* build: move frontend assets to Bootstrap 5.3 and Tom Select
* feat: migrate templates and scripts to Bootstrap 5, dropping jQuery
Templates
- Rename Bootstrap 4 classes and data attributes (data-bs-*, ms-/me-/ps-/pe-,
text-start/end, form-group -> mb-3, input-group wrappers removed, badges,
custom controls -> form-check/form-select, media -> d-flex, btn-close, ...)
- Dark mode now uses Bootstrap 5.3 colour modes (data-bs-theme on <html>),
set from <head> to avoid a flash of the light theme
- Remove the Bootstrap 4 /bootstrap/ demo page
- Contextual table classes (table-success etc.) still work as plain
backgrounds for the rigboard key
JavaScript
- Remove jQuery: src.js/interaction.js and every inline template script are
rewritten in plain JS on top of small helpers (helpers.js, bundled with
Bootstrap into jpop.js so inline scripts can use them)
- Replace bootstrap-select/ajax-bootstrap-select with Tom Select. The remote
search now sends the `q` parameter and reads `text`, which is what the
API actually uses (the old picker sent `term` and read `label`)
- HTML fragments are fetched with an X-Requested-With header so views keep
rendering their modal variants, and fetched scripts are re-executed
- Remove the Bootstrap 4 plugin script includes
* fix: stop rigboard header buttons stretching to full width under Bootstrap 5
* fix: restore dark-mode brand colours and contextual table colours under Bootstrap 5
* fix: brighten dark-mode links and make coloured card outlines visible
* fix: calendar layout and grid borders, navbar search button width, guard missing modal links
* fix: readable text in dark-mode Tom Select inputs and placeholders, restore form-control column widths
* build: split the Dockerfile into cached stages with prod and dev targets
* deploy: make compose.yml development-only with live reload, and document it
* fix: keep badge text colour for links inside badges
* fix: restore table-bordered grid lines in dark mode
* fix: include Bootstrap's progress styles and keep progress labels readable
* Port to Django 5.2
* Pin pluggy to 1.2.0
Any newer and the mystery importlib metadata error appears. Weird! >_>
* Update for premailer changed default
* Update view logic for is_ajax being changed to a template context processor
* Port a few more tests to pytest proper
Having two distinct test flavours is giving me a headache
* Version 1 dockerfile
Makes a VERY big image, I suspect we can optimise this a lot...
* Optimise dockerfile a little lot a bit
* fix(users): change logout link to POST request
* fix(tests): fix some syntax errors in test code
still got lots of failed tests :(
* fix: replace deprecated Django APIs
* ci: update Dockerfile
* ci: update Dockerfile
* fix(dependencies+tests): update EoL/vulnerable dependencies and improve test stability
* Upgrade Python from 3.10 to 3.12
* Update frontend dependencies, replace node-sass with sass
* chore(logging): ignore dangling obj reference warning from pypdf
* ci: update compose.yml for prod deployment
- Add Nginx as a reverse proxy
- Add cert-selfsign.sh for generating self-signed certificates
- Add certbot-issue.sh for Let's Encrypt certificate issuance and renewal
- Add cron-install.sh and cron-uninstall.sh for system cron management
- Add .env.example as an environment variable template
* style: reformat code
* ci: add more sleep trying to pass tests
* ci: ignore browser-based tests during ci testing
* fix: create home for the new user during Dockerfile building
* chore: remove heroku conf file
* fix: RIGS not franken anymore
* fix: restore is_ajax as a boolean and split out the context processor
* test: remove Selenium interaction tests and their CI workarounds
* fix: harden production settings (CSRF origins, env casts, ADMINS) and drop dead debug toolbar code
* deploy: serve static files from nginx, pin PGDATA, and make cert scripts loud on failure
* build: switch .dockerignore to an allowlist
* build: drop unused dependencies, soft-pin the rest and target Python 3.14
* build: move image to Python 3.14 / Node 24 and force DEBUG off
* ci: add dependabot config for uv, npm, docker and actions
* build: narrow Sass deprecation silencing to @import and require Node 24
* build: provide placeholder env for collectstatic now that DEBUG is off in the image
* deploy: add plain-HTTP nginx config for local development and use it in compose
* deploy: remove self-signed cert script
* build: make the image multi-arch with official node and python base images
* ci: lint and test on PRs, build the image on PRs and push it to GHCR on master
* docs: add local running and sample data instructions
* fix: report a form error instead of crashing when big power has no Power MIC
* fix: upgrade pypdf and urllib3 to patched releases
* fix: apply non-breaking npm audit fixes
* fix: strip whitespace in ALLOWED_HOSTS and drop misleading HSTS preload
* deploy: add a pyrigs healthcheck and make nginx wait for it
* build: pin the uv image version
* fix: correct the check-in person picker condition and use BeautifulSoup's string argument
* refactor: replace unique_together with UniqueConstraint
* build: replace pycodestyle with ruff and fix what it found
Removes unused imports and variables, and fixes a few real problems it
surfaced:
- EventCheckIn.active() referenced an undefined name and raised NameError;
it now returns whether the check-in has no end time
- RIGS.admin defined EventChecklistAdmin twice; the second is now
PowerTestRecordAdmin
- RIGS/tests/conftest.py used date/timedelta without importing them
- the signal-registering imports in apps.py are kept with noqa
pycodestyle config in setup.cfg is dropped.
* style: format the codebase with ruff
* style: normalise line endings, trailing whitespace and end-of-file newlines
* ci: run ruff and file hygiene through prek, and document it
---------
Co-authored-by: Hang <me@hangxu.me>
Co-authored-by: Joe Banks <joe@jb3.dev>
* Add absolute URL to power tests
* Update to target Python 3.10
* Return user to current page when clicking 'mark reviewed'
* Add units to power test record detail and form
I'm a bad scientist (coz I'm an engineer)
* Allow a higher value in PSSC fields
* Default venue to event venue in EC/PT
* Fix population of initial venue values for EC/PT
* Add link to create power test from EC detail
* Do not set power plan field to required on RA
"This might be a problem if the risk assessment is being done by one person and the power plan by another."
* Default power MIC to MIC
* Implement some suggestions from the Doctor
* Prevent checking in to cancelled events and dry hires
Will close#539
* Exclude dry hires from H&S overview list
* Add "ex VAT" tooltips to asset purchase price and replacement cost
* Automagically clear and focus ID field when audit modal closes
Closes#533
* Delete unused things
* Allow two decimal places in cable length, show training item IDs in selectpicker
Will close#540
* Fix#524 500 Error when viewing qualification list for items nobody is qualified in
* Update README.md
* Add a guard against nulls in recent changes
Maybe fixes#537 I'm unable to replicate locally
* Turn down verbosity of CI tests, fix tests, potential speedup
* Squash migration
* Add encoding to open
* Update to v3 upload-artifact
Resolves a deprecation warning
* Add 'description' field to TrainingItems
Renamed existing field to name, removed the dummy property.
* Initial version of training item export view
* Fix line length issue and better spacing on exported PDF
* Added export button to item list
* pep8
* Implement code doctor tweaks
* Attempt to fix odd deployment issue
* Pad headers slightly
* Fix page numbering
* Add basic markdown support site wide
* Improved MD support.
Add some styling for images in MD
Add support for the bastardisation of the MD html for RML.
* Add processing for <ul> in RML
* Add OL processing to RML
* Fix a bug with squares appearing around the last page number
* Remove rml formatting in event_detail
* Improve handling of code blocks in RML
* Add MD to rigboard
Reduce MD title sizes as they were offensively large
* Add parsing of markdown when editing event items
* Improved list handling in RML
* Add tests for markdown support.
Focuses mainly on RML as that's where it will break
* Add indications of where MD support is enabled as per comment by @samozzy in #178.
Isn't quite a full description, but for the most part this should be enough for the people who know how to use it see where they can use it.
* Add failing test for markdown processing none
* Fix for failing test in e0d56e
* Add failing test for using single line breaks as per comment on #214
* Enable line break extension for single breaks in paragraphs by new lines.
Pass tests in ef3de607c3
* Enable GH flavour linebreaks in JS rendered markdown
* Made RML bullets pretty :)
* Added WYSIWYG editor. Works for notes & description, fails miserably for items :(
* Fixed for event items. Will probably fail tests because selenium can't type in simpleMDE :(
* FIX: Re-enable markdown on paperwork
Strikethrough is broken in all sorts of places for whatever reason
* FEAT: Markdown support on asset comments
* FIX: Prevent js injection through markdown fields
* Initial fixes
* Basic dark theme for simplemde
* Swap to locally delivered SimpleMDE
* Region for selenium testing of SimpleMDE
Bleh, Javascript all around
* Tests passing!
Fixed not using region for item modal, and overflow error on paperwork with really long description. Looks junk but I'm not really bothered
* Pep8 fixes
* Fallback for null HCapatcha sitekey
I.e. when we're on a branch
* Fix item description print being broken
* Actually fix sitekey problem
* Fixes for using markdown in asset comments
* Properly initialise markdown on asset comments
Co-authored-by: David Taylor <david@taylorhq.com>
Co-authored-by: FreneticScribbler <aj@aronajones.com>