* 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
* Split power related parts of event checklist into a seperate form
* Revamp H&S overview, remove individual lists.
They were not a good thing.
* Remove old 'vehicle/crew' stuff
* Very initial version of checkin form
* Further work on checkin, add role field etc
* Fix tests after form split
* Add ability to edit checkins, more validation
* Basic checkin/out logic complete
* Add homepage checkin for events happening now
* Minor improvement to homepage UI
* Checkin button turns into checkout button where applicable
* UI work
* Clicking check out does not redirect the user
* Register check in model with the admin site
* Add power record status chip, checklist status chip displays number of checklists
* Minor fixes
* Implement codedoctor suggestions
* pep8
* Add data migration for crew/vehicles
* Checkin only requires login (no perms) and block users from editing other checkins at Django level
* 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>
* Upgrade to heroku-20 stack
* Move some gulp deps to dev rather than prod
* npm upgrade
* Fix audit time check in asset audit test
* Attempt at parallelising tests where possible
* Add basic calendar button test
Mainly to pickup on FullCalendar loading errors
* Upgrade python deps
* Tends to help if I push valid yaml
* You valid now?
* Fix whoops in requirements.txt
* Change python ver
* Define service in coveralls task
* Run parallelised RIGS tests as one matrix job
* Update python version in tests
* Cache python dependencies
Should majorly speedup parallelillelelised testing
* Purge old vagrant config
* No Ruby compass bodge, no need for rubocop!
* Purge old .idea config
* Switch to gh-a artifact uploading instead of imgur 'hack'
For test failure screenshots. Happy now @mattysmith22? ;p
* Oops, remove unused import
* Exclude tests from the coverage stats
Seems to be artifically deflating our stats
* Refactor asset audit tests with better selectors
Also fixed a silly title error with the modal
* Add title checking to the slightly insane assets test
* Fix unauth test to not just immediately pass out
* Upload failure screenshots as individual artifacts not a zip
Turns out I can't unzip things from my phone, which is a pain
* Should fix asset test on CI
* What about this?
* What about this?
Swear I spend my life jiggerypokerying the damn test suite...
* Does this help the coverage be less weird?
* Revert "Does this help the coverage be less weird?"
This reverts commit 39ab9df836.
* Use pytest as our test runner for better parallelism
Also rewrote some asset tests to be in the pytest style. May do some more. Some warnings cleaned up in the process.
* Bah, codestyle
* Oops, remove obsolete if check
* Fix screenshot uploading on CI (again)
* Try this way of parallel coverage
* Add codeclimate maintainability badge
* Remove some unused gulp dependencies
* Run asset building serverside
* Still helps if I commit valid YAML
* See below
* Different approach to CI dependencies
* Exclude node_modules from codestyle
* Does this work?
* Parallel parallel builds were giving me a headache, try this
* Update codeclimate settings, purge some config files
* Well the YAML was *syntactically* valid....
* Switch back to old coveralls method
* Fix codeclimate config, mark 2
* Attempt to bodge asset test
* Oops, again
Probably bedtime..
* Might fix heroku building
* Attempt #2 at fixing heroku
* Belt and braces approach to coverage
* Github, you need a Actions YAML validator!
* Might fix actions?
* Try ignoring some third party deprecation warnings
* Another go at making coverage show up
* Some template cleanup
* Minor python cleanup
* Import optimisation
* Revert "Minor python cleanup"
This reverts commit 6a4620a2e5.
* Add format arg to coverage command
* Ignore test directories from Heroku slug
* Maybe this works to purge deps postbuild
* Bunch of test refactoring
* Restore signals import, screw you import optimisation
* Further template refactoring
* Add support for running tests with geckodriver, do this on CI
* Screw you codestyle
* Disable firefox tests for now
That was way more errors than I expected
* Run cleanup script from the right location
* Plausibly fix tests
* Helps if I don't delete the pipeline folder prior to collectstatic
* Enable whitenoise
* Can I delete pipeline here?
* Allow seconds difference in assert_times_equal
* Disable codeclimate
* Remove not working rm command
* Maybe this fixes coverage?
* Try different coverage reporter
* Fix search_help to need login
* Made versioning magic a bit less expansive
We have more apps than I thought...
* Fix IDI0T error in Assets URLS
* Refactor 'no access to unauthed' test to cover all of PyRIGS
* Add RAs/Checklists to sample data generator
* Fix some HTML errors in templates
Which apparently only Django's HTML parser cares about, browsers DGAF...
* Port title test to project level
* Fix more HTML
* Fix cable type detail