Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
397 commits
Select commit Hold shift + click to select a range
521523a
Chore(deps): bump docker/metadata-action from 5.5.1 to 5.6.1 (#293)
dependabot[bot] Jan 7, 2025
22eabd6
Chore(deps): bump actions/checkout from 4.2.0 to 4.2.2 (#271)
dependabot[bot] Jan 7, 2025
2561267
Chore(deps): bump docker/build-push-action from 6.10.0 to 6.11.0 (#317)
dependabot[bot] Jan 14, 2025
28d197c
Feat/store access token in cookie (#310)
timber-they Jan 20, 2025
3de90a0
feat: add generating docs to entrypoint (#301)
jona159 Jan 21, 2025
5b077f9
Feat/deployment (#305)
timber-they Jan 21, 2025
4f08ac7
use default nginx image and mount configuration (#300)
mpfeil Jan 21, 2025
8974b58
Feat/qr enhancement (#318)
YouQam Jan 22, 2025
10aa674
Chore(deps): bump docker/build-push-action from 6.11.0 to 6.12.0 (#322)
dependabot[bot] Jan 27, 2025
e43ba18
Fix/netlify previews stopped working (#327)
timber-they Jan 28, 2025
75305a7
Fix/user new email typo (#331)
jona159 Jan 29, 2025
d4bfa56
Feat/improve err msg add staff (#326)
jona159 Jan 29, 2025
669f522
Fix/svg issuer images in pdf (#330)
jona159 Jan 29, 2025
2d3e53f
Chore(deps): bump docker/build-push-action from 6.12.0 to 6.13.0 (#325)
dependabot[bot] Jan 30, 2025
f17699d
Fix/catch issuer without logo pdf (#334)
jona159 Feb 2, 2025
2ee5a1a
feat: add badgeclass slug to badgeinstance request for better queryin…
jona159 Feb 3, 2025
2b17cac
Fix/dont throw for nonexisting user (#332)
jona159 Feb 5, 2025
200394e
fix: force refresh data as a temporary workaround (#314)
YouQam Feb 6, 2025
7baaa6e
feat: show esco info at bottom of pdf certificate (#340)
YouQam Feb 7, 2025
678c377
fix: mime types (#344)
jona159 Feb 7, 2025
4650bf7
Feat/increase uwsgi/ nginx timeout settings (#337)
jona159 Feb 7, 2025
58cc743
fix: only remove token if present (#348)
timber-they Feb 12, 2025
f6a84a0
Feat/learningpath automation (#320)
strautvetter Feb 12, 2025
20aad6e
fix(auth): fix oauth tokens for older clients (#349)
strautvetter Feb 12, 2025
4a7cb8f
feat: switch off badge request emails (#356)
jona159 Feb 20, 2025
f7f37cf
feat: migrate existing lp participation badges to new lp category (#353)
jona159 Feb 21, 2025
f39c564
fix(oauth): allow insecure login cookie in develop context (#352)
strautvetter Feb 25, 2025
e48d53d
Feat/ai skills keywords endpoint (#358)
strautvetter Feb 27, 2025
3729f94
Feat/altcha perf and spam protection (#361)
jona159 Feb 28, 2025
3875fd1
feat: micro degree pdf (#354)
jona159 Mar 3, 2025
f61556a
fix: use exact font name (#368)
jona159 Mar 11, 2025
1ffdda7
fix: double default buffer size (#370)
jona159 Mar 12, 2025
72c7fb9
fix: exclude revoked lp instances from serializer representation (#372)
jona159 Mar 13, 2025
8d9907a
Feat/api documentation (#364)
timber-they Mar 18, 2025
bc67e48
fix(import): fix unverified created issuer not being able to create b…
strautvetter Mar 19, 2025
8820e40
Feat/micro degree earner email (#355)
jona159 Mar 21, 2025
6e99872
feat: run actions also on PRs to develop (#375)
timber-they Mar 21, 2025
452fea2
feat: document branches (#377)
timber-they Mar 21, 2025
8022f02
Fix/remove old blocks in email (#379)
jona159 Mar 24, 2025
b2668a1
fix: dont underline whitespace (#380)
jona159 Mar 25, 2025
b94a9da
feat: add copy_permissions field to badgeclass (#366)
strautvetter Mar 27, 2025
91e86c6
feat: add migration for hour and minutes fields on competency extensi…
jona159 Apr 3, 2025
73dbbe0
Chore(deps): bump docker/login-action from 3.3.0 to 3.4.0 (#376)
dependabot[bot] Apr 3, 2025
68908d0
Update README to include some findings during initial setup (#385)
scheidtdav Apr 4, 2025
ed5aff0
Feat/new issuer staff flow (#383)
jona159 Apr 4, 2025
7a4c8d0
feat: include slug in json response for badge assertions (#389)
scheidtdav Apr 4, 2025
d2861cc
fix: split up copy and issuer staff request migration (#390)
jona159 Apr 4, 2025
b6f0cfb
fix: merge conflicts (#391)
jona159 Apr 7, 2025
6854199
Fix/issuer staff flow (#394)
jona159 Apr 10, 2025
95bee8e
Fix/issuer staff flow (#394) (#398)
scheidtdav Apr 10, 2025
d8c0fa9
fix: send back status ok if request had already been revoked (#400)
jona159 Apr 11, 2025
51d559e
feat: add badge request email and cronjob (#392)
scheidtdav Apr 11, 2025
f00f989
fix: send staff request email to owner only (#403)
jona159 Apr 11, 2025
2eee043
#396 feat: add a mixin to hide certain fields via the context (#399)
scheidtdav Apr 14, 2025
faa6b91
Fix/competency time email display old badges (#402)
jona159 Apr 14, 2025
36fd5cf
feat: add copy permissions to badge json (#401)
jona159 Apr 14, 2025
ea30a27
Feat/release cherry picks (#404)
jona159 Apr 14, 2025
a2dd91c
fix: comment out code that was falsly cherrypicked (#405)
jona159 Apr 15, 2025
826756c
feat(badgeinstance): add field to save json to db and only generate o…
strautvetter Apr 22, 2025
b387523
feat: merge branch main into develop
jona159 Apr 22, 2025
7f70f96
Deploy to staging (#409)
jona159 Apr 22, 2025
3b061cc
Feat/uv package manager (#382)
strautvetter Apr 22, 2025
bfc32d8
fix: only update if it badgeinstance already exists (#410)
jona159 Apr 24, 2025
012d76b
Merge branch 'main' into fix/squash-conflicts
jona159 Apr 24, 2025
5660923
fix: whitespace in email template (#417)
jona159 Apr 25, 2025
11d482b
feat(admin): add info columns to backend models and view (#407)
strautvetter Apr 30, 2025
656a2d8
Chore(deps): bump docker/build-push-action from 6.13.0 to 6.16.0 (#419)
dependabot[bot] Apr 30, 2025
d9831cc
fix: link directly to staff page (#421)
jona159 May 1, 2025
829819b
Feat/badge import (#406)
jona159 May 12, 2025
685664e
Feat/new badge criteria (#416)
jona159 May 12, 2025
49ab081
fix: add criteria migration (#425)
jona159 May 13, 2025
7f87d6c
feat: add criteria to pdf (#420)
jona159 May 13, 2025
2fe76f0
fix(criteria): correctly handle missing category extension (#426)
strautvetter May 13, 2025
e91e165
fix: create logfile for qrcode badgerequests in dockerfile (#432)
jona159 May 20, 2025
b0d0156
Chore(deps): bump docker/build-push-action from 6.16.0 to 6.17.0 (#433)
dependabot[bot] May 20, 2025
51670c6
fix(pdfs): allow non square issuer images to be placed correctly (#434)
scheidtdav May 23, 2025
00391e2
feat/collection pdf (#436)
jona159 May 23, 2025
b48ca42
Feat/async polling batch assertions (#423)
jona159 May 28, 2025
d7c944f
fix(pdfs): use origin instead of hardcoded openbadges.education (#437)
scheidtdav May 30, 2025
697b3b4
feat: increase memcached memory (#438)
jona159 May 30, 2025
2ea52c6
fix: allow null for criteria ,dont put json in criteria_text (#442)
jona159 Jun 3, 2025
9b6dca6
feat: update deployment.md (#445)
jona159 Jun 6, 2025
57e161d
Chore(deps): bump docker/build-push-action from 6.17.0 to 6.18.0 (#441)
dependabot[bot] Jun 6, 2025
f388be5
fix: restart redis when container exits (#446)
jona159 Jun 11, 2025
5db1841
feat: redirect private collections to badgrapp (#449)
scheidtdav Jun 11, 2025
2e8e8a0
Feat/openbadges 30 (#431)
strautvetter Jun 12, 2025
9aa368d
fix: geocode on issuer creation (#448)
jona159 Jun 12, 2025
08d0b23
feat: verify issuer automatically when new email matches" (#447)
jona159 Jun 12, 2025
3bbffc6
fix: add pulled in packages to dockerfiles (#451)
jona159 Jun 13, 2025
05e5d33
feat: add mysql config, adjust docker compose and init command (#444)
jona159 Jun 16, 2025
4d8264e
feat(aiskills): set endpoints to only acccept post requests (#452)
strautvetter Jun 16, 2025
5738d66
Fix/verify institutions email trigger (#453)
jona159 Jun 17, 2025
883f074
fix: make sure csrf cookie is set when requesting auth token (#454)
strautvetter Jun 17, 2025
9aede92
Fix/csrf cookie domain (#455)
jona159 Jun 18, 2025
a321a03
fix: typo in notification mail (#458)
scheidtdav Jun 20, 2025
c1a0ecb
feat: access control allow origin header based on environment (#457)
jona159 Jun 20, 2025
e7ca4dc
fix: use rubik (#460)
jona159 Jun 20, 2025
f8370f1
Chore(deps): bump docker/metadata-action from 5.6.1 to 5.7.0 (#363)
dependabot[bot] Jun 20, 2025
d027c53
Use ruff to format and lint everything and fix upcoming issues (#430)
scheidtdav Jun 23, 2025
9e4554b
apply fix for ulimits on some linux distros (#384)
scheidtdav Jun 23, 2025
7e94878
chore(deps): bump cairo svg and make sure all relevant files are upda…
scheidtdav Jun 23, 2025
44ef2e8
fix: restart celery container when redis dies (#465)
jona159 Jun 24, 2025
c2a15c5
feat: add learner skills endpoint (#466)
strautvetter Jun 30, 2025
b73749d
Display timestamp in imprint (#472)
timber-they Jul 1, 2025
acfd0d7
Fix: add timezone (#473)
timber-they Jul 1, 2025
c02b61e
Feat/gitlab flow (#475)
timber-they Jul 3, 2025
9627bbf
fix: don't build release
Jul 3, 2025
5652de9
feat: add permanent collection hash (#482)
jona159 Jul 11, 2025
f323a53
Feat/institution verification mail (#477)
jona159 Jul 11, 2025
9a725f2
fix(ci): replace debian buster based image with bookworm (#486)
scheidtdav Jul 14, 2025
c4e64fd
feat: learningpath activation and required badges (#480)
jona159 Jul 14, 2025
c0a0f5e
fix: uppercase as in dockerfile per convention (#485)
jona159 Jul 14, 2025
9a13916
Feat/api v3 (#479)
scheidtdav Jul 14, 2025
cf2dd19
fix: email template format (#490)
jona159 Jul 14, 2025
adb10d5
feat: add slug (#483)
jona159 Jul 15, 2025
377ab6a
fix: add celery to debug compose file (#489)
scheidtdav Jul 15, 2025
94915d3
Fix/mediafiles lost issue (#484)
scheidtdav Jul 15, 2025
2b2f1bd
feat(tools): add vscode recommended settings and launch configs (#469)
scheidtdav Jul 15, 2025
e77f8bc
Fix/test findings july15 (#495)
jona159 Jul 17, 2025
e8bcd78
Feat/remove badgr events logs (#497)
timber-they Jul 21, 2025
7187f77
Feat/python10 (#498)
jona159 Jul 21, 2025
d3d6749
feat(v3): implement plain array tags endpoint (#492)
scheidtdav Jul 21, 2025
3336c41
Timezone (#501)
timber-they Jul 24, 2025
209a264
feat: cache contexts in jsonld loader (#506)
jona159 Jul 25, 2025
7edc08d
Feat/cms contents (#440)
strautvetter Jul 25, 2025
55a94d8
fix: tags max length in serializer does not match db constraint (#474)
jona159 Jul 25, 2025
efe33f6
feat: management command to regenerate keys and rebake (#499)
jona159 Jul 25, 2025
18b4398
fix: update celery documentation (#504)
jona159 Jul 25, 2025
fde9b2f
fix: add missing library volumes for celery (#503)
jona159 Jul 25, 2025
dc79357
feat/unit testing (#505)
scheidtdav Jul 29, 2025
2396d36
Feat/enforce stronger passwords (#507)
jona159 Jul 29, 2025
c4d5f3e
fix: model default should be true for new users (#516)
jona159 Jul 31, 2025
33b2e45
fix: compare dev and debug docker for parity (#518)
scheidtdav Jul 31, 2025
2cd7609
feat: create release (notes) on merge to production (#517)
timber-they Aug 1, 2025
994e315
fix: force recreate to get new json (#522)
jona159 Aug 4, 2025
a98b8ee
build(ci): move test workflow into its own file and run for prod prs …
scheidtdav Aug 4, 2025
ce2eed5
Fix/debug configuration (#521)
timber-they Aug 4, 2025
0c6e849
lint in ci (#526)
scheidtdav Aug 4, 2025
927a294
Chore(deps): bump juliangruber/sleep-action from 2.0.0 to 2.0.3 (#528)
dependabot[bot] Aug 5, 2025
b258e16
Chore(deps): bump docker/metadata-action from 5.7.0 to 5.8.0 (#529)
dependabot[bot] Aug 5, 2025
a00d7bd
Chore(deps): bump docker/login-action from 3.4.0 to 3.5.0 (#530)
dependabot[bot] Aug 5, 2025
6f0643e
feat: add cleanup altcha to crontab (#373)
jona159 Aug 7, 2025
dfe264d
fix: add missing migrations (#531)
jona159 Aug 11, 2025
847e1ec
build(ci): add actions to prs added to merge queue (#536)
scheidtdav Aug 11, 2025
b06050e
Chore(deps): bump actions/checkout from 4 to 5 (#537)
dependabot[bot] Aug 12, 2025
184342c
fix: attach directory in rebaking (#535)
timber-they Aug 12, 2025
3c94057
fix: use cairosvg instead of renderPM for svg conversion (#540)
jona159 Aug 14, 2025
91e264b
feat/lti-iframe-webcomponents (#527)
strautvetter Aug 14, 2025
058745d
fix: non-svg issuer images (#542)
jona159 Aug 14, 2025
2bab5ad
fix: use our schema (#545)
jona159 Aug 19, 2025
a5267ab
feat: add more special characters (#547)
jona159 Aug 19, 2025
1a5e15d
fix: add recipient profile extension json (#546)
scheidtdav Aug 19, 2025
a4c5f15
fix(api-v3): remove privacy related fields from public v3 endpoint (#…
strautvetter Aug 20, 2025
8e7810b
feat: add command to count badges and assertions (#550)
jona159 Aug 21, 2025
4f50634
feat: remove email from public issuer (#553)
scheidtdav Aug 22, 2025
6818050
feat: move image creation to server (#532)
jona159 Aug 22, 2025
899d547
feat: log exceptions in middleware (#554)
timber-they Aug 23, 2025
69cd920
feat: wip network models, serializer, manager etc. (#552)
jona159 Aug 26, 2025
090f78e
Feat/avoid nominatim rate limit (#557)
timber-they Aug 27, 2025
47ec351
feat: remove externaltools and references (#555)
jona159 Aug 29, 2025
f91f87b
fix: save badge and resize img (#559)
jona159 Sep 1, 2025
5c3b18f
feat: migrate to official memcached image (#560)
jona159 Sep 1, 2025
cbbeafe
feat/mjml email templates (#562)
scheidtdav Sep 2, 2025
6c18de8
fix: include xz-utils to unpack node for mjml install (#566)
scheidtdav Sep 2, 2025
ec9f506
Fix/mjml install (#567)
scheidtdav Sep 2, 2025
26b2fe8
fix: add missing mjml install to main Dockerfile (#568)
scheidtdav Sep 2, 2025
bb7e8d6
Fix/bootstrap index key length limit (#569)
jona159 Sep 5, 2025
ef310f2
Feat/mysql8 (#509)
jona159 Sep 5, 2025
7e491f1
Fix/mail findings (#571)
scheidtdav Sep 5, 2025
6015cd9
Fix/mail findings (#573)
scheidtdav Sep 5, 2025
b0b316d
Fix/mail findings (#574)
scheidtdav Sep 8, 2025
6b3a4cb
fix: check for custom image (#575)
jona159 Sep 8, 2025
f3b35a0
Fix/mail findings (#580)
scheidtdav Sep 9, 2025
a92d02d
feat(api-v3): add admin endpoints for users and issuers (#582)
strautvetter Sep 11, 2025
db4cae4
fix(admin): fix wrong values in issuer admin table (#585)
strautvetter Sep 11, 2025
0535362
fix: redirect to login (#586)
jona159 Sep 11, 2025
8c3d89e
fix: replace outdated share hash implementation with entity_id (#570)
jona159 Sep 12, 2025
e70117e
feat: improve updating expiry dates for qrcodes (#572)
jona159 Sep 12, 2025
c2fea2c
revert: timeout settings (#576)
jona159 Sep 12, 2025
6567b61
Feat/admin institutions csv export (#592)
jona159 Sep 16, 2025
0df7507
fix: style issues (#590)
scheidtdav Sep 19, 2025
d2b37aa
Fix/link styling in mails (#595)
scheidtdav Sep 19, 2025
85286de
feat: add linkedin id to issuer (#591)
scheidtdav Sep 22, 2025
83123ad
fix: change nginx to server static files with Vary header (#589)
scheidtdav Sep 22, 2025
ca5cc31
Chore(deps): bump docker/login-action from 3.5.0 to 3.6.0 (#600)
dependabot[bot] Oct 2, 2025
91fbdef
fix: use validation error name know to the ui (#601)
scheidtdav Oct 2, 2025
5b04e7b
feat: add backups folder to debug config (#603)
scheidtdav Oct 6, 2025
a6c30ad
Chore(deps): bump hoverkraft-tech/compose-action from 2.3.0 to 2.4.0 …
dependabot[bot] Oct 7, 2025
48bd2da
Feat/network badges (#596)
jona159 Oct 7, 2025
a0d0516
Fix/async batch award (#606)
jona159 Oct 9, 2025
fc4c4c1
fix: add activated (#610)
jona159 Oct 17, 2025
7e7f81d
fix: include badgeinstance in duplicate check (#613)
jona159 Oct 17, 2025
9c888f2
feat: add total count mixin (#615)
jona159 Oct 17, 2025
deb2644
Fix/qrcode expiration (#612)
jona159 Oct 17, 2025
0805aaf
Fix/networks dev findings (#608)
jona159 Oct 17, 2025
40208d2
fix: mail template format (#616)
scheidtdav Oct 20, 2025
9e90a7b
Chore(deps): bump hoverkraft-tech/compose-action from 2.4.0 to 2.4.1 …
dependabot[bot] Oct 21, 2025
7554a24
Fix/lps public vs private (#619)
scheidtdav Oct 23, 2025
7554021
Fix/more network findings (#621)
jona159 Oct 27, 2025
5e7e2dc
fix: hide lps whose badges are revoked (#625)
scheidtdav Oct 28, 2025
6d8e85b
Feat/course date (#620)
jona159 Oct 28, 2025
1ae9df5
Fix/network findings 3 (#624)
jona159 Oct 30, 2025
64b7a7d
Fix/network findings 4 (#626)
jona159 Oct 31, 2025
39180a2
Feat/lti step 2 (#614)
scheidtdav Oct 31, 2025
8867272
feat: dont generate composed image for network issuer in learningpath…
jona159 Nov 3, 2025
fe9422f
Add optional zip_code field to BadgeUsers (#630)
scheidtdav Nov 5, 2025
bdf708a
Fix/test findings nov 3 (#629)
jona159 Nov 5, 2025
358f19a
Chore(deps): bump docker/metadata-action from 5.8.0 to 5.9.0 (#633)
dependabot[bot] Nov 11, 2025
bb98f9c
Fix/test findings sprint 20 (#636)
jona159 Nov 11, 2025
5e8a0f2
Feat/activity place (#632)
jona159 Nov 11, 2025
71bcdd2
Fix/add apispec annotations (#634)
jona159 Nov 13, 2025
4807d74
fix: install pinned version of mjml js (#640)
scheidtdav Nov 14, 2025
61e08a9
Add issuer and badge selection for lti usecases (#635)
scheidtdav Nov 14, 2025
aa78d3d
fix: add missing mjml version to dockerfile (#641)
scheidtdav Nov 14, 2025
85b5b75
Fix/validate qrcode expiration (#643)
jona159 Nov 17, 2025
37cd779
fix: use correct model (#642)
jona159 Nov 17, 2025
f50bb10
Feat/rework badge expiration (#638)
jona159 Nov 18, 2025
94e651e
Feat/drf spectacular documentation (#646)
jona159 Nov 19, 2025
2c007bb
feat: bump mjml to fixed version 4.17.1 (#647)
scheidtdav Nov 20, 2025
1a67001
Fix/svg upload (#648)
jona159 Nov 24, 2025
89917f6
Chore(deps): bump actions/checkout from 5 to 6 (#651)
dependabot[bot] Nov 25, 2025
4bb7d52
feat: allow iframes from cms (#652)
scheidtdav Nov 25, 2025
c5298d2
Fix/network custom images (#653)
jona159 Nov 25, 2025
cbfa1a4
fix: dont apply padding 2nd time when sharing badge (#656)
jona159 Nov 25, 2025
0b41287
Feat/lti step 3 (#658)
scheidtdav Nov 28, 2025
4812a3f
fix: just return image as is for custom images (#660)
jona159 Nov 28, 2025
5d27cf8
feat: add missing direct get of network# (#661)
scheidtdav Dec 1, 2025
e4b7086
fix: allow two lined badge titles in pdf certificates (#662)
scheidtdav Dec 1, 2025
6024bcc
fix: restrict pdf title to be in two lines max (#663)
scheidtdav Dec 1, 2025
2d33cfa
fix: order of mixin and view (#665)
scheidtdav Dec 2, 2025
48259a5
fix: set cellspacing to 0 since its not supported (#668)
scheidtdav Dec 2, 2025
c78c613
Feat/migrate django 4 (#639)
jona159 Dec 2, 2025
3b5dfdf
fix: replace outdated keys_map in cache (#670)
scheidtdav Dec 2, 2025
817ce03
Feat/use json for iframe requests (#671)
scheidtdav Dec 5, 2025
9362ec0
Chore(deps): bump docker/metadata-action from 5.9.0 to 5.10.0 (#664)
dependabot[bot] Dec 8, 2025
5e501d7
feat: add missing csrf trusted origins var (#675)
scheidtdav Dec 8, 2025
2214656
Chore(deps): bump hoverkraft-tech/compose-action from 2.4.1 to 2.4.2 …
dependabot[bot] Dec 8, 2025
e7aaba7
feat: edit network tag to "NETWORK PARTNER" (#674)
scheidtdav Dec 8, 2025
1e4ac5c
fix: use svg conversion for badge images and issuer images (#672)
scheidtdav Dec 9, 2025
64edbc9
Feat/v3 badgeinstances (#659)
jona159 Dec 9, 2025
0576a06
fix: pop related data and append after saving (#678)
jona159 Dec 9, 2025
91445e5
fix: Send client_secret in cleartext when app is created (#682)
scheidtdav Dec 15, 2025
c92462a
feat: properly format pdf when activity start and end are the same (#…
scheidtdav Dec 16, 2025
d695d01
Allow creators to edit networks (#673)
scheidtdav Dec 18, 2025
b2a61cf
Fix/json validation (#679)
jona159 Dec 19, 2025
a33dada
badge details course url (#681)
scheidtdav Dec 19, 2025
e8494b7
Feat/optional details evidence (#688)
jona159 Dec 19, 2025
31feaa3
feat: add filter for v3 issuer route (#689)
jona159 Dec 19, 2025
2a746cd
feat: add issuer name to subject and email (#691)
jona159 Jan 9, 2026
d904a66
feat: add Area field to the skills badge
abdulrhman186883 Jan 12, 2026
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
  •  
  •  
  •  
53 changes: 53 additions & 0 deletions .docker/Dockerfile.debug.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
FROM python:3.10-slim-bookworm

RUN mkdir /badgr_server
WORKDIR /badgr_server

RUN apt-get clean all && apt-get update && apt-get upgrade -y
RUN apt-get install -y default-libmysqlclient-dev \
python3-dev \
python3-cairo \
build-essential \
xmlsec1 \
libxmlsec1-dev \
pkg-config \
default-mysql-client \
curl \
xz-utils

RUN pip install uwsgi

COPY requirements.txt /badgr_server

COPY crontab /etc/cron.d/crontab

RUN touch /var/log/cron_cleartokens.log && chmod 644 /var/log/cron_cleartokens.log
RUN touch /var/log/cron_qr_badgerequests.log && chmod 644 /var/log/cron_qr_badgerequests.log
RUN touch /var/log/cron_clear_altcha.log && chmod 644 /var/log/cron_clear_altcha.log
RUN touch /var/log/cron_clear_iframe_urls.log && chmod 644 /var/log/cron_clear_iframe_urls.log

ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.30/supercronic-linux-amd64 \
SUPERCRONIC=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=9f27ad28c5c57cd133325b2a66bba69ba2235799
ENV TZ="Europe/Berlin"

RUN curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
&& chmod +x "$SUPERCRONIC" \
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
&& ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic

# Get node and install mjml for email templates
ARG NODE_VERSION=v24.6.0
ARG MJML_VERSION=4.17.1
RUN curl -fsSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.xz -o node.tar.xz \
&& tar -xf node.tar.xz -C /usr/local --strip-components=1 \
&& rm node.tar.xz
ENV PATH="/usr/local/bin:${PATH}"
RUN npm install -g mjml@${MJML_VERSION}

# Add timestamp
RUN date +"%d.%m.%y %T" > timestamp

RUN pip --timeout=1000 install --no-dependencies -r requirements.txt
RUN pip --timeout=1000 install debugpy
62 changes: 53 additions & 9 deletions .docker/Dockerfile.dev.api
Original file line number Diff line number Diff line change
@@ -1,18 +1,62 @@
FROM python:3.8-slim
FROM python:3.10-slim-bookworm

RUN mkdir /badgr_server
WORKDIR /badgr_server

RUN apt-get update && apt-get upgrade -y
RUN apt-get clean all && apt-get update && apt-get upgrade -y
RUN apt-get install -y default-libmysqlclient-dev \
python3-dev \
python3-cairo \
build-essential \
xmlsec1 \
libxmlsec1-dev \
pkg-config
python3-dev \
python3-cairo \
build-essential \
xmlsec1 \
libxmlsec1-dev \
pkg-config \
default-mysql-client \
curl \
xz-utils

RUN pip install uwsgi

COPY requirements.txt /badgr_server
RUN pip install -r requirements.txt

COPY entrypoint.dev.sh /badgr_server

COPY crontab /etc/cron.d/crontab

COPY openbadges /badgr_server

COPY openbadges_bakery /badgr_server

RUN chmod +x entrypoint.dev.sh

RUN touch /var/log/cron_cleartokens.log && chmod 644 /var/log/cron_cleartokens.log
RUN touch /var/log/cron_qr_badgerequests.log && chmod 644 /var/log/cron_qr_badgerequests.log
RUN touch /var/log/cron_clear_altcha.log && chmod 644 /var/log/cron_clear_altcha.log
RUN touch /var/log/cron_clear_iframe_urls.log && chmod 644 /var/log/cron_clear_iframe_urls.log

ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.30/supercronic-linux-amd64 \
SUPERCRONIC=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=9f27ad28c5c57cd133325b2a66bba69ba2235799
ENV TZ="Europe/Berlin"

RUN curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
&& chmod +x "$SUPERCRONIC" \
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
&& ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic

# Get node and install mjml for email templates
ARG NODE_VERSION=v24.6.0
ARG MJML_VERSION=4.17.1
RUN curl -fsSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.xz -o node.tar.xz \
&& tar -xf node.tar.xz -C /usr/local --strip-components=1 \
&& rm node.tar.xz
ENV PATH="/usr/local/bin:${PATH}"
RUN npm install -g mjml@${MJML_VERSION}

# Add timestamp
RUN date +"%d.%m.%y %T" > timestamp

RUN pip --timeout=1000 install --no-dependencies -r requirements.txt

ENTRYPOINT ["/badgr_server/entrypoint.dev.sh"]
9 changes: 0 additions & 9 deletions .docker/Dockerfile.nginx

This file was deleted.

103 changes: 85 additions & 18 deletions .docker/Dockerfile.prod.api
Original file line number Diff line number Diff line change
@@ -1,23 +1,90 @@
FROM python:3.8-slim
# Best practies taken from here: https://snyk.io/blog/best-practices-containerizing-python-docker/

# ------------------------------> Build image
FROM python:3.10-slim-bookworm AS build
RUN apt-get update
RUN apt-get install -y default-libmysqlclient-dev \
python3-dev \
python3-cairo \
build-essential \
xmlsec1 \
libxmlsec1-dev \
pkg-config \
cron

RUN mkdir /badgr_server
WORKDIR /badgr_server
RUN python -m venv /badgr_server/venv
ENV PATH="/badgr_server/venv/bin:$PATH"

COPY requirements.txt .
RUN pip install --no-dependencies -r requirements.txt

RUN apt-get update && apt-get upgrade -y
# ------------------------------> Final image
FROM python:3.10-slim-bookworm
RUN apt-get clean all && apt-get update
RUN apt-get install -y default-libmysqlclient-dev \
python3-dev \
python3-cairo \
build-essential \
xmlsec1 \
libxmlsec1-dev \
pkg-config

COPY requirements.txt /badgr_server
COPY manage.py /badgr_server
COPY .docker/etc/uwsgi.ini /badgr_server
COPY .docker/etc/wsgi.py /badgr_server
COPY apps /badgr_server/apps
COPY .docker/etc/settings_local.py /badgr_server/apps/mainsite/

RUN pip install uwsgi
RUN pip install -r requirements.txt
python3-cairo \
libxml2 \
default-mysql-client \
cron \
curl \
xz-utils

RUN groupadd -g 999 python && \
useradd -r -u 999 -g python python

RUN mkdir /badgr_server && chown python:python /badgr_server
RUN mkdir /backups && chown python:python /backups

WORKDIR /badgr_server

# Copy installed dependencies
COPY --chown=python:python --from=build /badgr_server/venv /badgr_server/venv

# Copy everything related Django stuff
COPY --chown=python:python manage.py .
COPY --chown=python:python .docker/etc/uwsgi.ini .
COPY --chown=python:python .docker/etc/wsgi.py .
COPY --chown=python:python apps ./apps
COPY --chown=python:python openbadges ./openbadges
COPY --chown=python:python openbadges_bakery ./openbadges_bakery
COPY --chown=python:python .docker/etc/settings_local.py ./apps/mainsite/
COPY --chown=python:python entrypoint.sh .

RUN chmod +x entrypoint.sh

# Latest releases available at https://github.com/aptible/supercronic/releases
ENV SUPERCRONIC_URL=https://github.com/aptible/supercronic/releases/download/v0.2.30/supercronic-linux-amd64 \
SUPERCRONIC=supercronic-linux-amd64 \
SUPERCRONIC_SHA1SUM=9f27ad28c5c57cd133325b2a66bba69ba2235799
ENV TZ="Europe/Berlin"

RUN curl -fsSLO "$SUPERCRONIC_URL" \
&& echo "${SUPERCRONIC_SHA1SUM} ${SUPERCRONIC}" | sha1sum -c - \
&& chmod +x "$SUPERCRONIC" \
&& mv "$SUPERCRONIC" "/usr/local/bin/${SUPERCRONIC}" \
&& ln -s "/usr/local/bin/${SUPERCRONIC}" /usr/local/bin/supercronic

# Get node and install mjml for email templates
ARG NODE_VERSION=v24.6.0
ARG MJML_VERSION=4.17.1
RUN curl -fsSL https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.xz -o node.tar.xz \
&& tar -xf node.tar.xz -C /usr/local --strip-components=1 \
&& rm node.tar.xz
ENV PATH="/usr/local/bin:${PATH}"
RUN npm install -g mjml@${MJML_VERSION}

# Add timestamp
RUN date +"%d.%m.%y %T" > timestamp && chown python:python timestamp

USER 999

# Create necessary log files as user
RUN touch /var/log/cron_cleartokens.log && chmod 644 /var/log/cron_cleartokens.log
RUN touch /var/log/cron_qr_badgerequests.log && chmod 644 /var/log/cron_qr_badgerequests.log
RUN touch /var/log/cron_clear_altcha.log && chmod 644 /var/log/cron_clear_altcha.log
RUN touch /var/log/cron_clear_iframe_urls.log && chmod 644 /var/log/cron_clear_iframe_urls.log

ENV PATH="/badgr_server/venv/bin:$PATH"
ENTRYPOINT ["./entrypoint.sh"]
8 changes: 8 additions & 0 deletions .docker/etc/nginx.conf → .docker/config/nginx/nginx.conf
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,19 @@ http {
sendfile on;

keepalive_timeout 65;
client_max_body_size 10M;

gzip on;
gzip_types text/plain application/xml;
gzip_proxied expired no-cache no-store private auth;
gzip_vary on;

map $http_origin $allowed_origin {
default "";
"https://develop.openbadges.education" "https://develop.openbadges.education";
"https://staging.openbadges.education" "https://staging.openbadges.education";
"https://openbadges.education" "https://openbadges.education";
}

include /etc/nginx/sites-available/*;
}
31 changes: 31 additions & 0 deletions .docker/config/nginx/sites-available/site.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
upstream uwsgi {
server unix:/sock/app.sock;
}

server {
listen 80;
charset utf-8;

location /media {
alias /mediafiles;
add_header Access-Control-Allow-Origin $allowed_origin always;
add_header Vary Origin;
}

location /static {
alias /staticfiles;
add_header Access-Control-Allow-Origin *;
}

location / {
uwsgi_pass uwsgi;

uwsgi_param HTTP_HOST $http_host;
uwsgi_param HTTP_REFERER $http_referer;
uwsgi_param HTTP_X_FORWARDED_FOR $proxy_add_x_forwarded_for;
uwsgi_param HTTP_X_FORWARDED_PROTO $scheme;

include /etc/nginx/uwsgi_params;
}

}
2 changes: 1 addition & 1 deletion .docker/etc/init.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
CREATE DATABASE IF NOT EXISTS badgr;
CREATE DATABASE IF NOT EXISTS badgr CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Loading