Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
215 commits
Select commit Hold shift + click to select a range
5194a15
Fixed allocation bug in views.py
QuanMPhm Jan 16, 2024
1e59faa
docs: Add note about django ldap auth and certs to config.md
Feb 21, 2025
ec98385
Fixes ubccr#647
matthew-kusz Feb 24, 2025
79e9f10
Added a signal for when allocation change requests are created
QuanMPhm Mar 7, 2025
ed62660
Merge pull request #651 from ds-04/ldap.py-docs
aebruno Mar 7, 2025
8af400e
OIDC config: set MOKEY_OIDC_PI_GROUP from env var
s-sajid-ali Jan 15, 2025
a2d73d3
Merge pull request #645 from NYU-RTS/oidc_pi_fix
aebruno Mar 7, 2025
06fc716
Merge pull request #652 from matthew-kusz/renewal_date_fix
aebruno Mar 12, 2025
fefbb7b
Update mkdocs and fix broken links.
aebruno Mar 18, 2025
7aeded9
Merge pull request #658 from ubccr/doc-updates
aebruno Mar 18, 2025
253fa95
Added ProjectCreationForm and changed associated view class.
co505 Mar 24, 2025
622dcfc
Adds allocation limits for a resource
matthew-kusz Mar 27, 2025
e077daa
Merge pull request #667 from matthew-kusz/allocation_limits
aebruno Apr 19, 2025
d9e44d6
Merge pull request #656 from QuanMPhm/add_change_requested_created_si…
aebruno Apr 19, 2025
d7a0e12
Merge pull request #596 from QuanMPhm/main
aebruno Apr 19, 2025
d25acb8
Merge pull request #665 from co505/project_form
aebruno Apr 19, 2025
59dac17
Use email sender for account upgrade notifications.
aebruno Apr 20, 2025
59a27e6
Merge pull request #678 from ubccr/fix-599-user-upgrade-email
aebruno Apr 20, 2025
0703f0d
Add project signals to core/project views.py , signals.py
Mar 24, 2025
3119793
Merge pull request #664 from ds-04/project_signals
aebruno Apr 22, 2025
15ebb47
add api
claire-peters Nov 6, 2024
3beb4a2
Implemented project code feature. Project view, model, utils, admin, …
co505 Dec 6, 2024
8e555c1
Merge pull request #646 from co505/project_code
aebruno Apr 24, 2025
527d1cd
Squashed commit of the following:
jrlagrone Apr 24, 2025
c51c8c2
Merge pull request #632 from claire-peters/cp_api
aebruno Apr 29, 2025
0a5a917
Reposition project_new signal (to end) in core/views.py
May 1, 2025
c766ee4
Merge pull request #681 from ds-04/reposition-project_new-signal
aebruno May 2, 2025
aeaaa8d
Updates to support TLS in ldap_user_search plugin
payerle May 2, 2025
ccf475f
Merge pull request #683 from payerle/TLS-ldap-fix2
aebruno Jun 1, 2025
1889d70
Migrate to uv
aebruno Apr 7, 2025
50c0ac7
Merge pull request #677 from ubccr/uv-pyproject
aebruno Jun 1, 2025
c50f216
Remove setup.py
aebruno Jun 1, 2025
da04c23
Merge pull request #671 from SouthernMethodistUniversity/rebased_add_…
aebruno Jun 1, 2025
d5a92cf
Fix linting, formatting, reuse compliant.
aebruno Jun 1, 2025
bccc653
Merge pull request #689 from ubccr/linting-fixes
aebruno Jun 2, 2025
4a304cd
Add reuse lint to workflow
aebruno Jun 2, 2025
83c7baa
Merge pull request #690 from ubccr/add-reuse-check
aebruno Jun 2, 2025
f9273ac
Wrote CONTRIBUTING.md
Eric-Butcher Jun 2, 2025
0523b3d
Changed the version to type: input
Eric-Butcher Jun 3, 2025
99a4441
Fixed phrasing and passive voice
Eric-Butcher Jun 3, 2025
c761899
Added SECURITY.md
Eric-Butcher Jun 4, 2025
6435e82
Merge pull request #692 from Eric-Butcher/chore/contributing-md
aebruno Jun 6, 2025
2f05f75
Merge pull request #693 from Eric-Butcher/chore/issue-691-issue-templ…
aebruno Jun 6, 2025
dda5c29
Merge pull request #695 from Eric-Butcher/chore/security-md
aebruno Jun 6, 2025
0bedaa0
Adds auto_compute_allocation plugin
Jun 9, 2025
30eb7a1
Tests for the Allocation model clean method.
Eric-Butcher Jun 11, 2025
e1c274c
Replaced all occurences of logging.WARN with logging.WARNING and log…
Eric-Butcher Jun 30, 2025
c5784ca
Update dockerfile to use uv
aebruno Jul 2, 2025
e9f2314
Merge pull request #715 from ubccr/dockerfile-update
aebruno Jul 2, 2025
a23e951
Merge pull request #698 from ds-04/auto_compute_allocation_iii
aebruno Jul 2, 2025
73e2020
Adds project_openldap plugin
Jun 6, 2025
9df349d
Merge pull request #696 from ds-04/project_openldap
aebruno Jul 2, 2025
36a46f7
Implemented institution feature.
co505 Mar 21, 2025
783db50
Merge pull request #670 from co505/institutions_refactor
aebruno Jul 2, 2025
96f1c90
Merge pull request #703 from Eric-Butcher/feature/allocation-model-cl…
aebruno Jul 2, 2025
1fe30db
Merge pull request #711 from Eric-Butcher/feature/refactor-logging-warn
aebruno Jul 2, 2025
12f4af7
Update README.md
Jul 3, 2025
c504d0f
minor improvements to project_openldap README.md
Jul 3, 2025
549ffb1
Refactored django management commands to use self.stdout.write() inst…
Eric-Butcher Jun 30, 2025
a5abae7
Tests for the Allocation __str__ method.
Eric-Butcher Jul 3, 2025
26e18a7
Merge pull request #713 from Eric-Butcher/feature/refactor-management…
aebruno Jul 3, 2025
11b6a10
Reorganized the tests into seperate directories for each core app.
Eric-Butcher Jul 3, 2025
5523ef0
Update doc theme and branding
aebruno Jul 15, 2025
d2dc2e3
Merge pull request #726 from ubccr/doc-brand-updates
aebruno Jul 15, 2025
aa9eedb
Created containers.md docs.
Eric-Butcher Jul 14, 2025
62f0a6c
Merge pull request #725 from Eric-Butcher/chore/container-docs
aebruno Jul 15, 2025
763515b
Patched Dockerfile to work with podman. This was minimally tested.
Eric-Butcher Jul 17, 2025
421871c
Merge pull request #720 from Eric-Butcher/chore/reorganize-test-dirs
aebruno Jul 18, 2025
147c95e
Merge pull request #719 from Eric-Butcher/feature/allocation-model-str
aebruno Jul 18, 2025
41619d5
Tests for the expires_in property of the Allocation model.
Eric-Butcher Jun 11, 2025
dbab3ea
Merge pull request #705 from Eric-Butcher/feature/allocation-model-ex…
aebruno Jul 21, 2025
f3d7265
Remediated mark_safe calls to prevent XSS attacks.
Eric-Butcher Jun 18, 2025
3f40289
Bump version
aebruno Jul 22, 2025
50c7577
Merge pull request #735 from ubccr/bump-version
aebruno Jul 22, 2025
ed76d6a
Add allocation attribute edit page
cecilialau6776 Jul 15, 2025
2433844
Removed '| safe' usages in templates.
Eric-Butcher Aug 7, 2025
94a7eae
Update deploy docs to list Redis requirement
cecilialau6776 Aug 18, 2025
eec0687
Merge pull request #717 from ds-04/improve_project_openldap_readme
aebruno Aug 19, 2025
0657a07
Merge pull request #716 from ds-04/improve_auto_compute_alloc_readme
aebruno Aug 19, 2025
19ef4e5
add project_openldap to docs
simonLeary42 Aug 21, 2025
6c9468b
show how to find project root
simonLeary42 Aug 22, 2025
4a1b49c
document project_code max length
simonLeary42 Aug 28, 2025
109215f
hide invoice from navbar when not INVOICE_ENABLED
simonLeary42 Sep 11, 2025
aa7be52
Merge pull request #734 from Eric-Butcher/feature/allocation-xss-reme…
aebruno Sep 18, 2025
97f085e
Merge pull request #675 from cecilialau6776/edit_alloc_attrs_3.12
aebruno Sep 18, 2025
cdac751
Merge pull request #772 from simonLeary42/patch-2
aebruno Sep 18, 2025
f72d52e
Merge pull request #766 from cecilialau6776/deploy_docs
aebruno Sep 18, 2025
acfb6d2
Merge pull request #779 from simonLeary42/project-root
aebruno Sep 18, 2025
9d1f9eb
Merge pull request #781 from simonLeary42/patch-3
aebruno Sep 18, 2025
ec73baf
Merge pull request #789 from simonLeary42/patch-4
aebruno Sep 18, 2025
ec56d25
don't display project review link when project review is disabled
simonLeary42 Sep 11, 2025
c1bb57d
Adjust add project user to allocation form and create a formset to di…
matthew-kusz Sep 26, 2025
c39d8a1
Merge pull request #790 from simonLeary42/patch-5
aebruno Oct 1, 2025
35f2c8a
Merge pull request #751 from Eric-Butcher/bugfix/script-template-safe
aebruno Oct 1, 2025
72dbd32
Merge pull request #733 from Eric-Butcher/bugfix/podman-python-user-b…
aebruno Oct 1, 2025
eaab236
add local_urls to match local_settings
simonLeary42 Sep 5, 2025
250a1f0
cast "total_amount_awarded" to FloatField before Sum applied
csbarnet Sep 15, 2025
2e76b9e
Fix exception handling in OpenLDAP sync command
simonLeary42 Oct 2, 2025
81a61bb
Adds accelerator hours, slurm attrs, slurm account and fairshare nami…
Sep 8, 2025
6f09a38
remove "Inactive (Renewed)" status
simonLeary42 Oct 7, 2025
627e9ea
Merge pull request #821 from simonLeary42/remove-inactive-renewed-status
aebruno Oct 7, 2025
9f2a9ff
project_openldap: fix log message
simonLeary42 Oct 7, 2025
4613f8e
Merge pull request #786 from simonLeary42/local-urls
aebruno Oct 9, 2025
57d0cd5
Merge pull request #794 from Tufts-Technology-Services/bug-fix-grant-…
aebruno Oct 9, 2025
cefa1bd
Merge pull request #803 from IUResearchApplications/better-allocation…
aebruno Oct 9, 2025
75d7927
rename functions
simonLeary42 Oct 2, 2025
961ac5d
use SETTINGS_EXPORT
simonLeary42 Oct 10, 2025
fc4aa72
Merge pull request #806 from simonLeary42/patch-6
aebruno Oct 14, 2025
5d1cf59
Merge pull request #807 from simonLeary42/project-openldap-rename
aebruno Oct 14, 2025
86d6603
Add PI to posixgroup on creation of project
Oct 10, 2025
4ce8fb4
resource description in form
simonLeary42 Oct 16, 2025
34edfd3
remove unnecessary connection in project_openldap utils.py
Oct 3, 2025
f286f3f
Fix project note permission wording
matthew-kusz Oct 20, 2025
345363e
Fix when the allocation activate user signal is sent
matthew-kusz Oct 20, 2025
2b90777
Fix #831
matthew-kusz Oct 20, 2025
e03f3f0
Merge pull request #787 from ds-04/auto_compute_allocation_september_…
aebruno Oct 20, 2025
8cac93e
Merge pull request #836 from IUResearchApplications/fix-wording
aebruno Oct 21, 2025
9518c43
Merge pull request #837 from IUResearchApplications/fix-allocation-ac…
aebruno Oct 21, 2025
53a4b3d
Merge pull request #839 from IUResearchApplications/fix-is-unique-error
aebruno Oct 21, 2025
e40db00
Merge pull request #826 from ds-04/project_openldap_add_pi_to_new_pro…
aebruno Oct 21, 2025
860fe96
Merge pull request #823 from simonLeary42/patch-10
aebruno Oct 21, 2025
146c9e6
Merge pull request #810 from ds-04/project_openldap_fix_connection_i
aebruno Oct 21, 2025
55364cb
Fix Tests
cecilialau6776 Oct 9, 2025
a4b6b4c
Merge pull request #808 from cecilialau6776/test_fixes
aebruno Oct 21, 2025
99fcd60
update new_project_review email
cecilialau6776 Oct 21, 2025
9b8f075
allow for allocation/project attributes to be queried
cecilialau6776 Oct 6, 2025
83a396f
add tests
cecilialau6776 Oct 7, 2025
f9f3163
add more to allocation attribute type admin list display
simonLeary42 Oct 23, 2025
4225b62
bugfix: replaces outdated request.is_ajax with header test
csbarnet Sep 12, 2025
9a80fe2
add workflow_dispatch to CI action so that it can be easily run on ot…
csbarnet Oct 23, 2025
4d40b27
Merge pull request #833 from simonLeary42/resource-description-in-form
aebruno Oct 24, 2025
309e582
catch SyntaxError from literal_eval
simonLeary42 Oct 23, 2025
6dcb241
Merge pull request #792 from Tufts-Technology-Services/bug-fix-alloca…
aebruno Oct 25, 2025
916346e
Merge pull request #842 from simonLeary42/allocation-type-admin-list-…
aebruno Oct 25, 2025
8a138c3
Merge pull request #822 from cecilialau6776/rest_api_attributes
aebruno Oct 25, 2025
425fc12
Merge pull request #845 from simonLeary42/literal-eval-syntax-error
aebruno Oct 25, 2025
38c1558
Merge pull request #841 from cecilialau6776/project_review_email
aebruno Oct 25, 2025
46d0eba
Merge pull request #828 from simonLeary42/settings-export
aebruno Oct 25, 2025
3136749
bugfix
simonLeary42 Oct 26, 2025
5af86e0
Merge pull request #847 from simonLeary42/bugfix-allocation-pk
aebruno Nov 5, 2025
3344d00
run tests on all supported python versions
simonLeary42 Oct 12, 2025
692b9d7
Merge pull request #829 from simonLeary42/patch-11
aebruno Nov 5, 2025
a5caea6
remove bad django_get_or_create
simonLeary42 Nov 6, 2025
9aa84ce
Merge pull request #866 from simonLeary42/fix-flaky-tests
aebruno Nov 6, 2025
156ed7f
history migrations
simonLeary42 Oct 17, 2025
ebac7e6
add more properties to the allocation type defaults
simonLeary42 Oct 24, 2025
7c9b662
check status.name instead of status_id PK
simonLeary42 Oct 24, 2025
90b6c43
add tests, improve tests
simonLeary42 Oct 26, 2025
f9552c4
Update github repo url
aebruno Nov 12, 2025
5d866d4
Merge pull request #870 from coldfront/update-docs
aebruno Nov 12, 2025
9b0d542
show allocation in allocation change request
simonLeary42 Nov 12, 2025
02c73b7
Reduce database queries on various pages
matthew-kusz Nov 12, 2025
126b81e
fix plural of "match"
simonLeary42 Nov 19, 2025
41aa10d
Add additional access checks for existing project tests and fix comments
matthew-kusz Nov 20, 2025
825be7c
add missing allocation statuses
simonLeary42 Nov 26, 2025
ce51c2e
Merge pull request #834 from simonLeary42/history-migrations
aebruno Nov 27, 2025
c1a2575
Merge pull request #849 from simonLeary42/add-more-properties-allocat…
aebruno Nov 27, 2025
0cc6c8e
Merge pull request #850 from simonLeary42/project-sync-status-prettier
aebruno Nov 27, 2025
6140de2
Merge pull request #875 from IUResearchApplications/db-query-reductions
aebruno Nov 27, 2025
6a9d5a8
Merge pull request #891 from simonLeary42/patch-14
aebruno Nov 27, 2025
dfe9267
Merge pull request #881 from simonLeary42/patch-13
aebruno Nov 27, 2025
e3dd25c
Merge pull request #873 from simonLeary42/show-alloc-in-alloc-change-…
aebruno Nov 27, 2025
93bc471
Merge pull request #855 from simonLeary42/allocation-tests
aebruno Nov 27, 2025
2836daf
Add add_user(), remove_user(), and get_absolute_url() to models
cecilialau6776 Nov 27, 2025
2f179f7
Merge pull request #883 from cecilialau6776/allocation_model_funcs
aebruno Nov 28, 2025
44a8ceb
make use of AttributeValidator class
simonLeary42 Oct 31, 2025
0e23f94
Upgrade uv.lock, deps, and pin packages.
aebruno Nov 28, 2025
a24f637
Merge pull request #893 from coldfront/uv-upgrade-deps
aebruno Dec 1, 2025
81a1cd3
Add slurm help text on the home page and allocation page
matthew-kusz Dec 2, 2025
5da5387
Use ModelForm for AllocationForm and CreateView for AllocationCreateView
cecilialau6776 Dec 2, 2025
d450fa7
Fix incorrect values being saved to edited allocation attributes
matthew-kusz Dec 3, 2025
bf7d54e
bump django version
simonLeary42 Dec 4, 2025
7e9661b
Merge pull request #896 from IUResearchApplications/fix-allocation-at…
aebruno Dec 4, 2025
de92f18
add migration check to CI
simonLeary42 Dec 1, 2025
a09a9ed
Merge pull request #894 from simonLeary42/migration-ci
aebruno Dec 4, 2025
4c726db
Merge pull request #897 from simonLeary42/bump-django
aebruno Dec 4, 2025
eaf47e6
Fix invalid operand types
cecilialau6776 Dec 5, 2025
ee48772
Use django's aggregations
cecilialau6776 Dec 5, 2025
d62fa26
Merge pull request #902 from cecilialau6776/center_summary_bugfix
aebruno Dec 8, 2025
3d64020
Fix deprecation warnings for Django5.
aebruno Dec 5, 2025
ce006aa
Merge pull request #901 from coldfront/fix-deprecation-warnings
aebruno Dec 8, 2025
136ff86
document undocumented options
simonLeary42 Oct 5, 2025
bcf999b
Merge pull request #818 from simonLeary42/config-missing-docs
aebruno Dec 8, 2025
473ca2c
Batch commands when syncing FreeIPA.
aebruno Dec 5, 2025
bc47f02
Fix aggregation to be compatible with postgres.
aebruno Dec 10, 2025
4be1cf1
Merge pull request #910 from coldfront/fix-center-summary
aebruno Dec 10, 2025
23c9b16
Upgrade to Django 5.2
aebruno Dec 8, 2025
5d03595
Merge pull request #903 from coldfront/django5-upgrade
aebruno Dec 10, 2025
3ddafc0
Merge pull request #907 from coldfront/freeipa-batch
aebruno Dec 10, 2025
4616b2c
add coldfront core setting for PROJECT_UPDATE_FIELDS
cecilialau6776 Jul 23, 2025
d714149
Merge pull request #737 from cecilialau6776/proj_update_fields_setting
aebruno Dec 11, 2025
907885b
UI Fixes
cecilialau6776 Dec 12, 2025
13be14a
Add more email notifications and cleanup email code
cecilialau6776 Dec 12, 2025
fa201ed
Merge pull request #743 from cecilialau6776/ui_fixes
aebruno Dec 13, 2025
f4d09df
Merge pull request #895 from IUResearchApplications/expand-project-ac…
aebruno Dec 13, 2025
3e27ee9
Merge pull request #878 from IUResearchApplications/slurm-help-text
aebruno Dec 13, 2025
2270c0a
fix HTML
simonLeary42 Nov 12, 2025
f440bf1
make use of f-strings
simonLeary42 Dec 13, 2025
4111c2e
Merge pull request #877 from simonLeary42/template-linter-fixes
aebruno Dec 13, 2025
c462bd2
Add new Slurm config options to documentation
matthew-kusz Dec 16, 2025
149c145
Merge pull request #912 from simonLeary42/fstrings
aebruno Dec 17, 2025
ba1afff
Merge pull request #914 from IUResearchApplications/update-slurm-doc
aebruno Dec 18, 2025
f48278d
Merge pull request #860 from cecilialau6776/new_email_notifications
aebruno Dec 18, 2025
8fda40a
Merge pull request #892 from cecilialau6776/allocationform_modelform
aebruno Dec 18, 2025
4bcfa57
Merge pull request #863 from simonLeary42/attribute-validator-boilerp…
aebruno Dec 18, 2025
e799065
Merge pull request #846 from Tufts-Technology-Services/feature-run-ci…
aebruno Dec 18, 2025
1046620
project managers should be able to see allocations &
s-sajid-ali Dec 15, 2025
c6f8832
Merge pull request #913 from s-sajid-ali/manager-view-allocs
aebruno Dec 20, 2025
1d8290f
Refactor frontend css/javascript assets.
aebruno Dec 12, 2025
4538fbf
Merge pull request #911 from coldfront/webui-bundle-vite
aebruno Dec 20, 2025
6921edd
Refactor center summary and update charting libs.
aebruno Dec 20, 2025
d549814
Merge pull request #916 from coldfront/refactor-charts
aebruno Dec 21, 2025
1e2e92e
Fixes #917.
aebruno Dec 23, 2025
e8eeb3d
Merge pull request #918 from coldfront/fix-gauge-chart
aebruno Dec 23, 2025
e836190
Upgrade to bootstrap5
aebruno Dec 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
31 changes: 31 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
**/.DS_Store
**/__pycache__
**/.venv
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/bin
**/charts
**/docker-compose*
**/compose.y*ml
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
*/.*_cache
**/.github
*/docs
.readthedocs.y*ml
**/*.db
10 changes: 2 additions & 8 deletions .github/ISSUE_TEMPLATE/bug-fix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,12 @@ body:
value: "A bug happened!"
validations:
required: true
- type: dropdown
- type: input
id: version
attributes:
label: Version
description: What version of our software are you running?
options:
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0 or before
placeholder: 1.X.X
- type: dropdown
id: component
attributes:
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: CI

on:
workflow_dispatch:
pull_request:
branches:
- main

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
node-version: ["24.x"]
env:
PLUGIN_API: true
DJANGO_VITE_DEV_MODE: true

steps:
- uses: actions/checkout@v4

- name: Install uv and set the python version
uses: astral-sh/setup-uv@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install the project
run: uv sync --locked --dev

- name: Install frontend packages
run: npm --prefix coldfront/static install

- name: Check for lint violations
run: uv run ruff check

- name: Check formatting
run: uv run ruff format --check

- name: Check frontend with eslint and prettier
run: npm --prefix coldfront/static run check

- name: Compile and bundle frontend static assets
run: npm --prefix coldfront/static run build

- name: Check bundled frontend static assets have been commited
run: |
if [[ `git status --porcelain` ]]; then
echo "Error: pre-compiled bundled frontend static assets have not been committed"
git status
exit 1
else
echo "Bundled frontend static assets check passed."
fi

- name: Check licence with reuse
run: uv run reuse lint

- name: Run tests
run: uv run coldfront test

- name: Check for migrations
run: uv run coldfront makemigrations --check
Comment on lines +11 to +68

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}

Copilot Autofix

AI 28 days ago

In general, you fix this by explicitly defining a permissions block in the workflow (root level, applying to all jobs) or on the specific job, setting it to the least privilege necessary. For a typical CI job that only checks out and reads code, contents: read is sufficient.

For this specific workflow in .github/workflows/ci.yml, the simplest, non‑breaking fix is to add a root‑level permissions block directly under the workflow name: (before on:). This will apply to all jobs (here: build) that do not define their own permissions. Set it to:

permissions:
  contents: read

No other changes are required: all existing steps (checkout, installs, tests, builds, git status) work with read-only contents permissions because they do not attempt to write to the repository or modify GitHub resources.

Suggested changeset 1
.github/workflows/ci.yml

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,5 +1,8 @@
 name: CI
 
+permissions:
+  contents: read
+
 on:
   workflow_dispatch:
   pull_request:
EOF
@@ -1,5 +1,8 @@
name: CI

permissions:
contents: read

on:
workflow_dispatch:
pull_request:
Copilot is powered by AI and may make mistakes. Always verify output.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
coldfront.egg-info
dist
build
.zed/
*._*
*.DS_Store
*.swp
Expand All @@ -21,3 +22,4 @@ db.json
.env
.devcontainer/*
.bin/*
node_modules
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.12
27 changes: 15 additions & 12 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,20 @@ version: 2

# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
os: ubuntu-24.04
tools:
python: "3.9"
python: "3.12"

# Build documentation with MkDocs
mkdocs:
configuration: docs/mkdocs.yml

# Optionally set the version of Python and requirements required to build your docs
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .
jobs:
# See: https://docs.readthedocs.io/en/stable/build-customization.html#install-dependencies-with-uv
pre_create_environment:
- asdf plugin add uv
- asdf install uv latest
- asdf global uv latest
create_environment:
- uv venv
install:
- uv sync --group docs
build:
html:
- NO_COLOR=1 uv run mkdocs build --clean --config-file docs/mkdocs.yml --site-dir $READTHEDOCS_OUTPUT/html
4 changes: 4 additions & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,3 +31,7 @@
- Cecilia Lau
- Ria Gupta
- Shreyas Sridhar
- David Simpson
- Eric Butcher
- Matthew Kusz
- John LaGrone
177 changes: 96 additions & 81 deletions CHANGELOG.md

Large diffs are not rendered by default.

67 changes: 67 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Contributing to ColdFront

Before we start, thank you for considering contributing to ColdFront!

Every contribution no matter how small is welcome here! Whether you are adding a whole new feature, improving the aesthetics of the webpage, adding some tests cases, or just fixing a typo your contributions are appreciated.

In this document you will find a set a guidelines for contributing to the ColdFront project, not hard rules. However, sticking to the advice contained in this document will help you to make better contributions, save time, and increase the chances of your contributions getting accepted.

This project abides by a [Code of Conduct](CODE_OF_CONDUCT.md) that all contributors are required to uphold. Please read this document before interacting with the project.

In addition, you must sign off on all commits using `git commit -s`, acknowledging you agree to the Developer Certificate of Origin.

## Contributor's Agreement

You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to the project, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form.

## Contribution Workflow

For most contributions, you will start by opening up an issue, discussing changes with maintainers and the community, and then opening a pull request. It is perfectly acceptable to provide a pull request without opening an issue first. However, we recommend you open an issue if the changes you suggest are significant to ensure your changes can be successfully merged.

### Issues

We track requested changes using GitHub issues. These include bugs, feature requests, and general concerns.

Before making an issue, please look at current and previous issues to make sure that your concern has not already been raised by someone else. It is also advised to read through the [current documentation](https://coldfront.readthedocs.io/en/stable/). If an issue with your concern is already opened you are encouraged to comment further on it. The `Search Issues` feature is great to check to see if someone has already raised your issue before.

If, after searching pre-existing issues, your concern has not been raised (or you are unsure if a previous issue covers your concern) please open a new issue with any labels you believe are relevant. Please include any relevant images, links, and syntax-highlighted text snippets to help maintainers understand your concerns better. It is also helpful to include any debugging steps you have attempted or ideas on how to fix your issue.

### Pull Requests

To create a pull request:

1. Fork this repository.
2. Create a branch off the `main` branch.
3. Make commits to your branch. Make sure your additions include [testing](#testing) for any new functionality. Make sure that you run the full test suite on your PR before submitting. If your changes necessitate removing or changing previous tests, please state this explicitly in your PR. Also ensure that your changes pass the [linter and formatter](#formatting-and-linting).
4. Create a pull request back to this main repository.
5. Wait for a maintainer to review your code and request any changes. Don't worry if the maintainer asks for changes! This feedback is perfectly normal and ensures a more maintainable project for everyone.

## Conventions and Style Guide

#### Spelling and Naming

Please use a spell-checker when modifying the codebase to reduce the prevalence of typos. You should avoid writing names in code that use jargon or abbreviations that are not directly relevant to ColdFront or tools used in its development.

#### Annotations

You are encouraged to use Python's type annotations to improve code readability and maintainability. Whenever possible, use the most recent annotation syntax available for the minimum version of Python supported by ColdFront.

> The minimum Python version supported can be found in the `pyproject.toml` file.

#### Testing

All new and changed features must include unit tests to verify that they work correctly. Every non-trivial function should have at least as many test cases as its cyclomatic complexity to verify all independent code paths in the function operate correctly.

When using [uv](https://docs.astral.sh/uv/), the full test suite can be run using the command `uv run coldfront test`.

#### Formatting and Linting

This project is formatted and linted using [ruff](https://docs.astral.sh/ruff/).

You can use Ruff to check for any linting errors in proposed Python code using `uv run ruff check`. Ruff can also fix many linting errors automatically with `uv run ruff check --fix` when using [uv](https://docs.astral.sh/uv/).

If your code is failing linting checks but you you have a valid reason to leave it unchanged, you can suppress warnings using a `# noqa: <warning-error-code>` comment on the line(s) in question

You can also use Ruff to check formatting using `uv run ruff format --check` and automatically fix formatting errors with `uv run ruff format`.

If your code is failing formatting checks but you have a valid reason to leave it unchanged, you can suppress warnings for a specific block of code by enclosing it with the comments `# fmt: off` and `# fmt: on`. These comments work at the statement level so placing them inside of expressions will not have any effect.
80 changes: 68 additions & 12 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,74 @@
FROM python:3.8
FROM ubuntu:24.04 AS base

RUN apt-get update \
&& apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
FROM base AS cfimage

WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip3 install -r requirements.txt
COPY . .
RUN apt update && DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
sqlite3 \
freeipa-client \
mariadb-client \
postgresql-client

RUN python3 ./manage.py initial_setup
RUN python3 ./manage.py load_test_data
FROM cfimage AS builder

ENV DEBUG=True
RUN DEBIAN_FRONTEND=noninteractive apt install -y \
gcc \
cmake \
pkg-config \
build-essential \
libmariadb-dev \
libpq-dev \
libssl-dev \
libdbus-1-dev \
libldap2-dev \
libkrb5-dev \
libglib2.0-dev \
libsasl2-dev

COPY --from=ghcr.io/astral-sh/uv:0.7 /uv /bin/uv
ENV UV_COMPILE_BYTECODE=1
ENV UV_LINK_MODE=copy
ENV UV_PYTHON_INSTALL_DIR=/python
ENV UV_PYTHON_PREFERENCE=only-managed

WORKDIR /app

# Install Python before the project for caching
RUN --mount=type=bind,source=.python-version,target=.python-version \
uv python install

RUN --mount=type=cache,target=/root/.cache/uv \
--mount=type=bind,source=uv.lock,target=uv.lock \
--mount=type=bind,source=.python-version,target=.python-version \
--mount=type=bind,source=pyproject.toml,target=pyproject.toml \
uv sync \
--locked \
--no-install-project \
--no-dev \
--extra ldap \
--extra freeipa \
--extra iquota \
--extra oidc \
--extra mysql \
--extra pg
COPY . /app
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync \
--locked \
--no-dev \
--extra ldap \
--extra freeipa \
--extra iquota \
--extra oidc \
--extra mysql \
--extra pg


FROM cfimage

RUN apt-get clean && rm -rf /var/lib/apt/lists/*
RUN groupadd -r python && useradd -r -g python python
COPY --from=builder --chown=python:python /python /python
COPY --from=builder /app /app
ENV PATH="/app/.venv/bin:$PATH"
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
CMD ["gunicorn", "--workers", "3", "--bind", ":8000", "coldfront.config.wsgi"]
Loading
Loading