Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
200 commits
Select commit Hold shift + click to select a range
b00d51f
Updated CHANGELOG for 8.3.3 release
Iso5786 Dec 2, 2025
503f94d
Fix for MA7QDbnn
oharsta Dec 19, 2025
9834428
Remove setlocale usage and localize email dates in templates
ThomasKalverda Jan 8, 2026
e357bea
Fix naive datetime defaults in legacy migrations
ThomasKalverda Jan 8, 2026
5acea26
Suppress cssutils CSS validation errors in test environment
ThomasKalverda Jan 8, 2026
4a40535
Add dedicated settings for testing
ThomasKalverda Jan 8, 2026
a53679b
Disable auth signals and logging in tests
ThomasKalverda Jan 8, 2026
f3c1f42
Fix broken test helpers for enrollment setup
ThomasKalverda Jan 8, 2026
f56e713
Fix staff permission in test to show issuers
ThomasKalverda Jan 8, 2026
3a00733
Assert correct type
ThomasKalverda Jan 8, 2026
72c1e0e
Remove edit directaward functionality from tests
ThomasKalverda Jan 12, 2026
94790ad
Fix urls and expected response code in institution test
ThomasKalverda Jan 12, 2026
abf0655
Fix assertion for showing archived badges in issuer response
ThomasKalverda Jan 12, 2026
3e6c9cd
Disable extension validation in tests
ThomasKalverda Jan 12, 2026
aa7b04b
Add required badgeclass type to request data
ThomasKalverda Jan 12, 2026
5138a0d
Fix request data that was no valid json
ThomasKalverda Jan 12, 2026
4e46cf3
Fix tests for removed constraint for badgeclass
ThomasKalverda Jan 12, 2026
fe33131
Merge pull request #240 from edubadges/chore/fix-tests
oharsta Jan 12, 2026
9e9e4a5
Add workflow to run django tests
ThomasKalverda Jan 12, 2026
8bd3c8e
Grant privileges to test db user
ThomasKalverda Jan 12, 2026
310f475
Bump urllib3 from 1.26.19 to 2.6.3
dependabot[bot] Jan 13, 2026
574dace
Update import of urllib
ThomasKalverda Jan 13, 2026
b4997cb
Merge pull request #241 from edubadges/chore/run-django-tests-in-ci-cd
oharsta Jan 13, 2026
d312ec4
Merge pull request #239 from edubadges/dependabot/pip/urllib3-2.6.3
ThomasKalverda Jan 14, 2026
02ca798
Merge branch 'develop' for release 8.4
Iso5786 Jan 14, 2026
bc97941
Add linkedin_url field to badge instance detail serializer
ThomasKalverda Jan 14, 2026
001e3c0
Retrieve faculty directly fro badgeclass issuer
ThomasKalverda Jan 15, 2026
8347ae2
Merge pull request #242 from edubadges/feature/add-linkedin-url-to-mo…
Iso5786 Jan 15, 2026
411937b
Updated CHANGELOG for release 8.4
Iso5786 Jan 16, 2026
7eb4834
Added grade_achieved to mobile seerializer
oharsta Jan 19, 2026
14ce28a
Added stackable to the badgeclass serializer
oharsta Jan 19, 2026
001673f
Refactor charfields to foreign key relationships
ThomasKalverda Jan 19, 2026
82503d7
Refactor audit trail api view into a ListAPIView
ThomasKalverda Jan 19, 2026
ebee67d
Improve performance with select_related and extra filter
ThomasKalverda Jan 19, 2026
e724192
Update audit trail signal receiver to set fk relations properly
ThomasKalverda Jan 19, 2026
489d893
Merge pull request #243 from edubadges/feature/improve-performance-of…
Iso5786 Jan 20, 2026
e900377
Fix migration to filter on actual ids
ThomasKalverda Jan 20, 2026
f0ff521
Select related institution through issuer and faculty
ThomasKalverda Jan 20, 2026
4318e30
Add a one-off management command to backfill badgeclass ids
ThomasKalverda Jan 20, 2026
d0d686e
Merge pull request #244 from edubadges/bugfix/fix-audittrail-errors
Iso5786 Jan 21, 2026
e836805
Added badge_class_type in mobile API
oharsta Jan 26, 2026
ffe9846
Feat: improve mobile api swagger, initial commit
Iso5786 Jan 16, 2026
32d22a4
Adding .zed to gitignore
Iso5786 Jan 16, 2026
7df7af9
fix: mobile API auth to return 401 instead of 403
Iso5786 Jan 23, 2026
1e178d3
fix: return entity_id's instead of id's of badgeinstances within coll…
Iso5786 Jan 23, 2026
4600b68
chore: improved the swagger doc by adding full models of badge instan…
Iso5786 Jan 23, 2026
4c5b622
fix: use for badge-instances/entity_id path one view
Iso5786 Jan 23, 2026
ad7b577
fix: have badge instance PUT method only allow acceptance and public
Iso5786 Jan 23, 2026
6f3616e
Use slug related field instead of serializer method field
ThomasKalverda Jan 27, 2026
f595116
Prefetch related badge instances to minimize queries
ThomasKalverda Jan 27, 2026
b5ec35e
Merge pull request #247 from edubadges/improve_mobile_api_swagger
Iso5786 Jan 27, 2026
ba62d49
Add catalog list view with pagination
ThomasKalverda Jan 26, 2026
b0ed25a
Add filter class so endpoint can be filtered with query params
ThomasKalverda Jan 26, 2026
7437740
Add schema example
ThomasKalverda Jan 26, 2026
751b44b
Merge pull request #248 from edubadges/feature/mobile-catalog-endpoin…
Iso5786 Jan 27, 2026
a4741c5
Replace profile api view with custom one for mobile api
ThomasKalverda Jan 26, 2026
2bf5c59
Add registration and consent data to user profile
ThomasKalverda Jan 26, 2026
8c30831
Merge pull request #249 from edubadges/feature/mobile-profile-add-ext…
Iso5786 Jan 27, 2026
a722c5f
Remove source from terms_agreed
ThomasKalverda Jan 27, 2026
7a8804a
Annotate correct related objects
ThomasKalverda Jan 27, 2026
f03041a
Annotate correct related objects (badgeinstances) #2
Iso5786 Jan 27, 2026
8d675d2
Add filter backend globally and locally
ThomasKalverda Jan 28, 2026
1b88a4a
Merge pull request #250 from edubadges/bugfix/fix-swagger-ui-for-filt…
Iso5786 Jan 28, 2026
4b74969
Updated CHANGELOG for 8.3.3 release
Iso5786 Dec 2, 2025
ad4798a
Updated CHANGELOG for release 8.4
Iso5786 Jan 16, 2026
4beeef7
Remove q filter and replace is_micro with institution_type filter
ThomasKalverda Jan 28, 2026
3c2c4b8
Added grade_achieved in the BadgeInstanceDetailSerializer
oharsta Jan 28, 2026
8fad553
Find direct award and badgeclass on id and not entity_id
ThomasKalverda Jan 28, 2026
318183f
Merge pull request #251 from edubadges/feature/update-filters-for-mob…
Iso5786 Jan 28, 2026
8108e72
Merge pull request #252 from edubadges/bugfix/fix-creation-of-audit-t…
Iso5786 Jan 28, 2026
14c1e6f
Use entity id for direct awards
ThomasKalverda Jan 28, 2026
2db0dd9
Merge pull request #253 from edubadges/bugfix/fix-entity-id-for-direc…
Iso5786 Jan 29, 2026
62f5dd0
Added endpoint to make a badge instance public
oharsta Jan 29, 2026
fb02215
Add terms to catalog badge class serializer
ThomasKalverda Feb 2, 2026
ff4faa4
Add boolean for whether user has accepted the terms
ThomasKalverda Feb 2, 2026
46669fe
Merge pull request #254 from edubadges/feature/add-terms-to-mobile-ca…
Iso5786 Feb 3, 2026
c73b8c4
Add mobile api endpoint for badge class detail
ThomasKalverda Feb 3, 2026
122f4b4
Merge pull request #256 from edubadges/feature/add-mobile-api-endpoin…
Iso5786 Feb 3, 2026
2049380
Add mobile institution api endpoint
ThomasKalverda Feb 3, 2026
3c216af
Merge pull request #255 from edubadges/feature/add-mobile-institution…
Iso5786 Feb 3, 2026
f490ca8
Bump django from 4.2.27 to 4.2.28
dependabot[bot] Feb 3, 2026
f421531
Merge pull request #257 from edubadges/dependabot/pip/django-4.2.28
Iso5786 Feb 4, 2026
84cf1ee
Add datamigration to populate institution email
ThomasKalverda Feb 4, 2026
30c250b
Use correct related name for badgeclass issuer FK
ThomasKalverda Feb 4, 2026
49f8e44
Merge pull request #259 from edubadges/bugfix/institution-mobile-endp…
Iso5786 Feb 4, 2026
53e951e
Flip filtering logic around to make query faster
ThomasKalverda Feb 4, 2026
a130b5d
Merge pull request #260 from edubadges/bugfix/fix-institution-mobile-…
Iso5786 Feb 4, 2026
f835625
Merge pull request #258 from edubadges/feature/populate-institution-e…
Iso5786 Feb 4, 2026
8b4bf04
Add required terms to direct award detail view
ThomasKalverda Feb 5, 2026
7e66b45
Merge pull request #261 from edubadges/feature/add-terms-to-direct-aw…
Iso5786 Feb 5, 2026
ed92cea
Install fcm-django and configure in settings
ThomasKalverda Feb 5, 2026
0b83bc9
Add system check to warn if env variables are missing
ThomasKalverda Feb 5, 2026
8e2130a
Merge branch 'develop'
Iso5786 Feb 5, 2026
eb143af
Add register device endpoint for mobile push notifications
ThomasKalverda Feb 5, 2026
8a1c3eb
Filter the direct awards on entity id because that is currently stored
ThomasKalverda Feb 5, 2026
41821bc
Merge pull request #262 from edubadges/bugfix/fix-filter-for-audittra…
Iso5786 Feb 5, 2026
c4af65a
Added changelog for 8.4.1
Iso5786 Feb 5, 2026
1199d1b
Merge branch 'develop'
Iso5786 Feb 5, 2026
25b1bea
Add merge migrations that were generated on production server
ThomasKalverda Feb 5, 2026
eca12a1
Fix populate institution email data migration
ThomasKalverda Feb 5, 2026
55c724a
Merge pull request #263 from edubadges/bugfix/fix-migration-leaf-node…
Iso5786 Feb 5, 2026
2f633b5
Merge branch 'develop'
Iso5786 Feb 5, 2026
64b2b79
Merge pull request #264 from edubadges/feature/add-register-device-en…
Iso5786 Feb 6, 2026
a837bd7
Add missing migrations
ThomasKalverda Feb 9, 2026
288e434
Rename image_url to image in badge class serializer
ThomasKalverda Feb 9, 2026
fc78d27
Add agreed_at date to terms agreement model
ThomasKalverda Feb 9, 2026
fdd488c
Add data migration to backfill historical agreed terms
ThomasKalverda Feb 9, 2026
fc75c98
Add agreed_at to terms agreement serializer
ThomasKalverda Feb 9, 2026
2a88718
Update students enrolled serializer fields to match direct awards
ThomasKalverda Feb 9, 2026
e5ceaba
Add comment to clarify logic
ThomasKalverda Feb 10, 2026
c6ddfae
Replace badge collection views with viewset and unified serializer
ThomasKalverda Feb 10, 2026
e808011
Merge pull request #265 from edubadges/chore/add-missing-migrations
Iso5786 Feb 10, 2026
eda79af
Merge pull request #266 from edubadges/feature/add-agreed-at-date-to-…
Iso5786 Feb 10, 2026
b889f24
Bump cryptography from 44.0.1 to 46.0.5
dependabot[bot] Feb 11, 2026
7cba71f
Merge pull request #267 from edubadges/feature/fix-inconsistencies-in…
Iso5786 Feb 11, 2026
eeb87b4
Add sorting to mobile api badge instances and catalog endpoints
ThomasKalverda Feb 11, 2026
317f569
Add source for related badge class serializers
ThomasKalverda Feb 12, 2026
acff2f2
Merge pull request #271 from edubadges/bugfix/add-correct-source-for-…
Iso5786 Feb 12, 2026
952b33a
Add helper function for sending push notifications
ThomasKalverda Feb 12, 2026
dea6c90
Add logging for debugging purposes
ThomasKalverda Feb 12, 2026
fb13c43
Send push notifications when edubadge received
ThomasKalverda Feb 12, 2026
fb3e7e3
Merge pull request #269 from edubadges/feature/add-sorting-to-mobile-…
ThomasKalverda Feb 12, 2026
ea4d415
Add narrative to badge instance detail endpoint for mobile api
ThomasKalverda Feb 12, 2026
4b41cca
Merge pull request #272 from edubadges/feature/send-push-notification…
Iso5786 Feb 13, 2026
28cd36e
Merge pull request #274 from edubadges/feature/add-narrative-to-badge…
Iso5786 Feb 13, 2026
33aafc4
Bump sqlparse from 0.5.0 to 0.5.4
dependabot[bot] Feb 13, 2026
49afb8a
Replace firebase env variables with json file configuration
ThomasKalverda Feb 12, 2026
8d38338
Make push notification sending fail gracefully
ThomasKalverda Feb 12, 2026
05d71a4
Only set google env variable if json file env variable is set
ThomasKalverda Feb 16, 2026
772fbbc
Merge pull request #277 from edubadges/feature/refactor-firebase-conf…
ThomasKalverda Feb 16, 2026
fd8813e
Remove trailing slashes from badge collections endpoints
ThomasKalverda Feb 16, 2026
744b671
Merge pull request #278 from edubadges/feature/remove-trailing-slash-…
ThomasKalverda Feb 16, 2026
dd366a4
Merge branch 'master' into develop
oharsta Feb 16, 2026
e2a1871
Prevent crash when there is no user to send push notification to
ThomasKalverda Feb 17, 2026
9a18dbd
Merge pull request #279 from edubadges/bugfix/fix-push-notifications-…
Iso5786 Feb 17, 2026
b811053
Add recipient name to direct award and badge instance models
ThomasKalverda Feb 17, 2026
4e4af22
Handle recipient names in the serializer for direct awards
ThomasKalverda Feb 17, 2026
8cffe2f
Pass recipient name along in the award method to issue
ThomasKalverda Feb 17, 2026
4707382
Update get recipient name to return recipient name when it exists
ThomasKalverda Feb 17, 2026
3974d60
Update direct award serializer to allow null for first and last names
ThomasKalverda Feb 17, 2026
cf58c95
Add test for direct award creation with recipient name
ThomasKalverda Feb 19, 2026
645a630
Remove validation for validated name on award and issue
ThomasKalverda Feb 19, 2026
8446e1f
Fix validation on bundle type
ThomasKalverda Feb 19, 2026
29bec1d
Add tests for direct award on email and wrong eppn
ThomasKalverda Feb 19, 2026
c738d64
Merge pull request #280 from edubadges/feature/add-recipient-name-to-…
ThomasKalverda Feb 19, 2026
4d23e77
Update sample csv file for bulk upload for email only
ThomasKalverda Feb 17, 2026
6c1c326
Add validated name and recipient name to identity endpoint
ThomasKalverda Feb 18, 2026
678fb64
Update badge instance recipient name methods to be more concise
ThomasKalverda Feb 18, 2026
c762294
Add datamigration to populate recipient names for badge instances
ThomasKalverda Feb 19, 2026
f61dbbb
Merge pull request #284 from edubadges/feature/update-csv-example-fil…
ThomasKalverda Feb 19, 2026
14c8fe3
Merge pull request #282 from edubadges/feature/update-identity-endpoi…
ThomasKalverda Feb 19, 2026
df7cbe2
Remove redirect to allow login without validated name
ThomasKalverda Feb 19, 2026
aab54ed
Merge pull request #283 from edubadges/feature/add-datamigration-to-p…
ThomasKalverda Feb 19, 2026
d1953d9
Merge pull request #285 from edubadges/feature/allow-login-without-va…
ThomasKalverda Feb 19, 2026
cf236b2
Refactor mobile api endpoints for terms agreements
ThomasKalverda Feb 24, 2026
9080681
Merge pull request #286 from edubadges/feature/refactor-mobile-endpoi…
ThomasKalverda Feb 24, 2026
30117e8
Add user_may_enroll method to badgeclass
ThomasKalverda Feb 26, 2026
f5649bb
Add self enrollment enabled field to serializer
ThomasKalverda Feb 26, 2026
df37f93
Add user may enroll boolean to serializer
ThomasKalverda Feb 26, 2026
90b5374
Merge pull request #288 from edubadges/feature/add-enrollment-permiss…
ThomasKalverda Feb 26, 2026
b53e3ba
Show the enrollment enabled and user may enroll as booleans in swagger
ThomasKalverda Feb 26, 2026
c7a00b7
Merge pull request #289 from edubadges/bugfix/show-new-fields-as-bool…
ThomasKalverda Feb 26, 2026
db29496
Bugfix for AttributeError: 'BadgeClass' object has no attribute 'may_…
oharsta Mar 4, 2026
d66ea84
Fix for AttributeError: 'BadgeClass' object has no attribute 'may_enr…
oharsta Mar 4, 2026
c0c7815
Bump django from 4.2.28 to 4.2.29
dependabot[bot] Mar 4, 2026
e68b680
Bump markdown from 2.6.8 to 3.8.1
dependabot[bot] Mar 5, 2026
6f39340
Add detail endpoint for retrieving registered devices for mobile api
ThomasKalverda Mar 9, 2026
0a71478
Merge pull request #300 from edubadges/feature/add-retrieve-endpoint-…
oharsta Mar 9, 2026
3a4db0e
Pass recipient names to badge instance for direct awards on email
ThomasKalverda Mar 10, 2026
9451634
Merge pull request #301 from edubadges/feature/pass-direct-award-reci…
ThomasKalverda Mar 10, 2026
ab3b09b
Wrap saving of direct award in try except to avoid crash
ThomasKalverda Mar 10, 2026
e42bd1b
Merge pull request #294 from edubadges/dependabot/pip/django-4.2.29
Iso5786 Mar 10, 2026
d33329a
Create trivy.yml
Iso5786 Mar 10, 2026
3d64854
Merge pull request #302 from edubadges/feature/wrap-saving-direct-awa…
Iso5786 Mar 10, 2026
eaea3f5
Bump aquasecurity/trivy-action in /.github/workflows
dependabot[bot] Mar 10, 2026
3451acb
Update trivy.yml to upload sarif_file
Iso5786 Mar 10, 2026
a54281e
feat: updated cffi to 2.0.0
Iso5786 Mar 10, 2026
030cf7d
Merge pull request #303 from edubadges/dependabot/github_actions/dot-…
Iso5786 Mar 10, 2026
09edda4
Merge pull request #268 from edubadges/dependabot/pip/cryptography-46…
Iso5786 Mar 10, 2026
6d2e4be
Merge pull request #275 from edubadges/dependabot/pip/sqlparse-0.5.4
Iso5786 Mar 10, 2026
c8c1dbc
Merge pull request #297 from edubadges/dependabot/pip/markdown-3.8.1
Iso5786 Mar 10, 2026
58b4e55
Refactor management query for issuer members
ThomasKalverda Mar 12, 2026
4f42601
Add request to context of badge instance serializer
ThomasKalverda Mar 16, 2026
ce48f17
Merge pull request #306 from edubadges/bugfix/fix-linkedin-url-for-ba…
oharsta Mar 16, 2026
b05fcf0
Merge pull request #304 from edubadges/feature/add-management-query-f…
ThomasKalverda Mar 17, 2026
6c650ac
Refactor login view to remove restrictions on link account and revali…
ThomasKalverda Mar 18, 2026
c5126bb
Update open api examples
ThomasKalverda Mar 18, 2026
f7f301d
Merge pull request #308 from edubadges/feature/refactor-mobile-login-…
oharsta Mar 18, 2026
d484af1
Order fields more logically
ThomasKalverda Mar 19, 2026
4ddf5a2
Add alignments
ThomasKalverda Mar 19, 2026
1e9956d
Add evidences
ThomasKalverda Mar 19, 2026
27f2034
Add quality assurance fields
ThomasKalverda Mar 19, 2026
1ea7061
Add criteria text
ThomasKalverda Mar 19, 2026
96d5f62
Add eqf nlqf level verified
ThomasKalverda Mar 19, 2026
17dda64
Add grade achieved to direct award serializer
ThomasKalverda Mar 19, 2026
0996051
Merge pull request #309 from edubadges/feature/add-missing-data-field…
oharsta Mar 19, 2026
8f03665
Use UI_URL from settings for the cert url in the linkedin url
ThomasKalverda Mar 19, 2026
f655456
Add filter to badge instances endpoint to remove revoked badges
ThomasKalverda Mar 19, 2026
e288905
Merge pull request #311 from edubadges/feature/remove-revoked-badges-…
ThomasKalverda Mar 19, 2026
2a0a2a7
Merge pull request #310 from edubadges/bugfix/use-correct-cert-url-in…
ThomasKalverda Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
name: Django Tests

on:
pull_request:
branches: [ develop ]
push:
branches: [ develop ]

jobs:
test:
runs-on: ubuntu-latest

services:
mysql:
image: mysql:8.0
env:
MYSQL_DATABASE: badgr
MYSQL_USER: badgr
MYSQL_PASSWORD: badgr
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
options: >-
--health-cmd="mysqladmin ping -h localhost"
--health-interval=10s
--health-timeout=5s
--health-retries=5

memcached:
image: memcached:1.6
ports:
- 11211:11211

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.9"

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Wait for MySQL
run: |
until mysqladmin ping -h "127.0.0.1" --silent; do
echo "Waiting for MySQL..."
sleep 2
done

- name: Grant MySQL test database privileges
run: |
mysql -h 127.0.0.1 -u root -proot <<'EOF'
GRANT ALL PRIVILEGES ON test_badgr.* TO 'badgr'@'%';
FLUSH PRIVILEGES;
EOF

- name: Run Django tests
env:
DJANGO_SETTINGS_MODULE: apps.mainsite.settings_tests
DOMAIN: 0.0.0.0:8000
DEFAULT_DOMAIN: http://0.0.0.0:8000
SITE_ID: "1"
ACCOUNT_SALT: test
ROOT_INFO_SECRET_KEY: test
UNSUBSCRIBE_SECRET_KEY: test
EXTENSIONS_ROOT_URL: http://localhost/static
TIME_STAMPED_OPEN_BADGES_BASE_URL: http://localhost/
UI_URL: http://localhost:8080
DEFAULT_FROM_EMAIL: test@example.com
EMAIL_BACKEND: django.core.mail.backends.locmem.EmailBackend
EMAIL_HOST: localhost
EMAIL_PORT: "1025"
EMAIL_USE_TLS: "0"
BADGR_DB_HOST: 127.0.0.1
BADGR_DB_PORT: "3306"
BADGR_DB_NAME: badgr
BADGR_DB_USER: badgr
BADGR_DB_PASSWORD: badgr
DISABLE_EXTENSION_VALIDATION: "true"
EDUID_PROVIDER_URL: https://connect.test.surfconext.nl/oidc
EDUID_REGISTRATION_URL: https://login.test.eduid.nl/register
EDU_ID_CLIENT: edubadges
EDU_ID_SECRET: supersecret
SURF_CONEXT_CLIENT: test.edubadges.nl
SURF_CONEXT_SECRET: supersecret
OIDC_RS_ENTITY_ID: test.edubadges.rs.nl
OIDC_RS_SECRET: supersecret
run: |
python manage.py test --noinput
45 changes: 45 additions & 0 deletions .github/workflows/trivy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: trivy

on:
push:
branches: [ "develop" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ "develop" ]

permissions:
contents: read

jobs:
build:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for github/codeql-action/upload-sarif to upload SARIF results
actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Run Trivy vulnerability scanner in repo mode
uses: aquasecurity/trivy-action@0.34.0
with:
version: 'v0.69.2'
scan-type: 'fs'
ignore-unfixed: true
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
exit-code: '0'

- name: Upload Trivy scan results to GitHub Security tab
uses: github/codeql-action/upload-sarif@v4
with:
sarif_file: 'trivy-results.sarif'

5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,8 @@ pyrightconfig.json
start.fish
sourceandcharm.sh
.serena
.zed

# secrets
/secrets
!/secrets/.keep
138 changes: 138 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,144 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [8.4.1] - 2026-02-05

#### Full GitHub changelogs:

Backend: https://github.com/edubadges/edubadges-server/compare/v8.4...v8.4.1</br>

- Merge branch 'develop'
- Merge pull request #261 from edubadges/feature/add-terms-to-direct-award-endpoint
- Add required terms to direct award detail view
- Merge pull request #258 from edubadges/feature/populate-institution-email
- Merge pull request #260 from edubadges/bugfix/fix-institution-mobile-endpoint-filtering
- Flip filtering logic around to make query faster
- Merge pull request #259 from edubadges/bugfix/institution-mobile-endpoint-use-correct-related-name
- Use correct related name for badgeclass issuer FK
- Add datamigration to populate institution email
- Merge pull request #257 from edubadges/dependabot/pip/django-4.2.28
- Bump django from 4.2.27 to 4.2.28
- Merge pull request #255 from edubadges/feature/add-mobile-institution-api-endpoint
- Add mobile institution api endpoint
- Merge pull request #256 from edubadges/feature/add-mobile-api-endpoint-for-badge-class-detail
- Add mobile api endpoint for badge class detail
- Merge pull request #254 from edubadges/feature/add-terms-to-mobile-catalog
- Add boolean for whether user has accepted the terms
- Add terms to catalog badge class serializer
- Added endpoint to make a badge instance public
- Merge pull request #253 from edubadges/bugfix/fix-entity-id-for-direct-award
- Use entity id for direct awards
- Merge pull request #252 from edubadges/bugfix/fix-creation-of-audit-trail-objects-in-signal
- Merge pull request #251 from edubadges/feature/update-filters-for-mobile-api-catalog-endpoint
- Find direct award and badgeclass on id and not entity_id
- Added grade_achieved in the BadgeInstanceDetailSerializer
- Remove q filter and replace is_micro with institution_type filter
- Updated CHANGELOG for release 8.4
- Updated CHANGELOG for 8.3.3 release
- Merge pull request #250 from edubadges/bugfix/fix-swagger-ui-for-filterable-fields
- Add filter backend globally and locally
- Annotate correct related objects (badgeinstances) #2
- Annotate correct related objects
- Remove source from terms_agreed
- Merge pull request #249 from edubadges/feature/mobile-profile-add-extra-metadata
- Add registration and consent data to user profile
- Replace profile api view with custom one for mobile api
- Merge pull request #248 from edubadges/feature/mobile-catalog-endpoint-with-filtering-and-pagination
- Add schema example
- Add filter class so endpoint can be filtered with query params
- Add catalog list view with pagination
- Merge pull request #247 from edubadges/improve_mobile_api_swagger
- Prefetch related badge instances to minimize queries
- Use slug related field instead of serializer method field
- fix: have badge instance PUT method only allow acceptance and public field
- fix: use for badge-instances/entity_id path one view (BadgeInstanceDetail) and add logic to support PUT method in BadgeInstanceDetail
- chore: improved the swagger doc by adding full models of badge instances, direct award, and collections
- fix: return entity_id's instead of id's of badgeinstances within collections
- fix: mobile API auth to return 401 instead of 403
- Adding .zed to gitignore
- Feat: improve mobile api swagger, initial commit
- Added badge_class_type in mobile API
- Merge pull request #244 from edubadges/bugfix/fix-audittrail-errors
- Add a one-off management command to backfill badgeclass ids
- Select related institution through issuer and faculty
- Fix migration to filter on actual ids
- Merge pull request #243 from edubadges/feature/improve-performance-of-direct-award-audit-trail-endpoint
- Update audit trail signal receiver to set fk relations properly
- Improve performance with select_related and extra filter
- Refactor audit trail api view into a ListAPIView
- Refactor charfields to foreign key relationships
- Added stackable to the badgeclass serializer
- Added grade_achieved to mobile seerializer
- Updated CHANGELOG for release 8.4
- Merge pull request #242 from edubadges/feature/add-linkedin-url-to-mobile-badgeinstance-api-endpoint
- Retrieve faculty directly fro badgeclass issuer
- Add linkedin_url field to badge instance detail serializer

## [8.4] - 2026-01-14

#### Full GitHub changelogs:

Backend: https://github.com/edubadges/edubadges-server/compare/v8.3.3...v8.4</br>

- Merge pull request #239 from edubadges/dependabot/pip/urllib3-2.6.3
- Merge pull request #241 from edubadges/chore/run-django-tests-in-ci-cd
- Update import of urllib
- Bump urllib3 from 1.26.19 to 2.6.3
- Grant privileges to test db user
- Add workflow to run django tests
- Merge pull request #240 from edubadges/chore/fix-tests
- Fix tests for removed constraint for badgeclass
- Fix request data that was no valid json
- Add required badgeclass type to request data
- Disable extension validation in tests
- Fix assertion for showing archived badges in issuer response
- Fix urls and expected response code in institution test
- Remove edit directaward functionality from tests
- Assert correct type
- Fix staff permission in test to show issuers
- Fix broken test helpers for enrollment setup
- Disable auth signals and logging in tests
- Add dedicated settings for testing
- Suppress cssutils CSS validation errors in test environment
- Fix naive datetime defaults in legacy migrations
- Remove setlocale usage and localize email dates in templates
- Fix for MA7QDbnn Added expiration date based on the badgeclass when a user claims a DA See https://trello.com/c/MA7QDbnn/1143-vervallen-edubadge-werkt-niet
- WIP for https://trello.com/c/tsJHRy6A/ After the user is created, the correct staffs can be added as super-user
- Added delete account endpoint for mobile API https://trello.com/c/WYW0JiGA/1105-changes-needed-for-making-apis-mobile-app-ready
- Merge pull request #226 from edubadges/feature/remove-imported-badge-functionality
- Fixes remove-imported-badge-functionality See https://trello.com/c/W4o0VLeC/1132-remove-imported-badge-functionality
- Not needed anymore to increase MAX_URL_LENGTH as Django 4.2.27 fixes this.
- Merge pull request #220 from edubadges/dependabot/pip/django-4.2.27
- Ignore .serena directory
- DA audit traiL: action instead of method
- Filter DA audit trail with method CREATE
- Merge pull request #224 from edubadges/feature/da_audittrail_view
- feat: adding direct award audit trail API used by super users
- Bump django from 4.2.26 to 4.2.27
- Updated CHANGELOG for 8.3.3 release

## [8.3.3] - 2025-12-02

#### Full GitHub changelogs:

Backend: https://github.com/edubadges/edubadges-server/compare/v8.3.2...v8.3.3</br>

- Update to Django 4.2.26
- Updating swagger annotations
- Remove referer header requirement from auth provider views
- Merge pull request #215 from edubadges/feature/reduce_error_logs
- Only allow for super-users to perform impersonation
- Added extra logging to MobileAPIAuthentication
- Slug fields were removed in 2020 from all models
- Catch TypeError when trying to load JSON from imported badge
- Adding DIRS var to TEMPLATES object
- Return 404 in case badgr app is none
- Added is_authenticated checks
- Increase MAX_URL_LENGTH even more, to 16384
- Increased MAX_URL_LENGTH times 4 to be able to exceed 2048 chars which is to low for our use-cases
- Quick fix for Unsafe redirect exceeding 2048 characters
- Do not use SIS authentication for mobile flow

## [8.3.2] - 2025-11-14

#### Full GitHub changelogs:
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ COPY . /app
# Set execute permissions on entrypoint script
RUN chmod +x /app/docker/entrypoint.sh

RUN pip install --upgrade pip setuptools wheel
# Install any needed packages specified in requirements.txt
RUN pip install --no-cache-dir -r requirements.txt

Expand Down
5 changes: 3 additions & 2 deletions apps/badgeuser/migrations/0068_auto_20200820_1138.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
from django.utils import timezone


class Migration(migrations.Migration):
Expand All @@ -16,7 +17,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='termsagreement',
name='created_at',
field=models.DateTimeField(default=datetime.datetime.now),
field=models.DateTimeField(default=timezone.now),
),
migrations.AddField(
model_name='termsagreement',
Expand All @@ -26,7 +27,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='termsagreement',
name='updated_at',
field=models.DateTimeField(default=datetime.datetime.now),
field=models.DateTimeField(default=timezone.now),
),
migrations.AddField(
model_name='termsagreement',
Expand Down
16 changes: 16 additions & 0 deletions apps/badgeuser/migrations/0079_delete_importbadgeallowedurl.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Generated by Django 4.2.28 on 2026-02-05 15:10

from django.db import migrations


class Migration(migrations.Migration):

dependencies = [
('badgeuser', '0078_importbadgeallowedurl'),
]

operations = [
migrations.DeleteModel(
name='ImportBadgeAllowedUrl',
),
]
18 changes: 18 additions & 0 deletions apps/badgeuser/migrations/0080_termsagreement_agreed_at.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 4.2.28 on 2026-02-09 10:05

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('badgeuser', '0079_delete_importbadgeallowedurl'),
]

operations = [
migrations.AddField(
model_name='termsagreement',
name='agreed_at',
field=models.DateTimeField(blank=True, null=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 4.2.28 on 2026-02-09 10:06

from django.db import migrations
from django.db.models import F


def populate_termsagreement_agreed_add(apps, schema_editor):
TermsAgreement = apps.get_model('badgeuser', 'TermsAgreement')
TermsAgreement.objects.filter(
agreed=True,
agreed_at__isnull=True
).update(agreed_at=F("updated_at"))


class Migration(migrations.Migration):

dependencies = [
('badgeuser', '0080_termsagreement_agreed_at'),
]

operations = [
migrations.RunPython(populate_termsagreement_agreed_add, migrations.RunPython.noop),
]
Loading
Loading