Compare commits

...

2912 Commits

Author SHA1 Message Date
64df38f2a9 fix(build): minor haskell typos/errors
The code was written without having a working compiler, hence some accidental code kinks remained.
2025-03-28 08:58:35 +01:00
3c6a580808 chore(git): add ghci history to gitignore 2025-03-28 08:52:58 +01:00
a3762ce938 Merge branch 'master' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive 2025-03-28 08:33:22 +01:00
573abcf43f refactor(lms): fix hlint suggestions 2025-03-28 08:32:30 +01:00
89d2462974 Merged PR 18750: refactor haskell build container 2025-03-27 12:09:47 +00:00
599d2c1c7a build(backend/Dockerfile): switch to custom-built haskell/stack Dockerfile to supply missing LLVM 2025-03-27 12:52:49 +01:00
d2105c8894 build(backend/Dockerfile): prevent chown of backend files by allow-different-user in stack config 2025-03-27 12:52:07 +01:00
7b486702f4 Add map creating utility after merge confligt 2025-03-27 11:33:06 +00:00
bf88b19f1c Merged PR 18721: chore(tutorial): granting qualification automatically picks better expiry date
chore(tutorial): granting qualification automatically picks better expiry date

Previously, the form for granting tutorial users a qualification suggested the minimum of all expiry dates, if there where several course qualficiations. This lead to some users being granted driving licences being valid for only one month.

The expiry date can now be left blank, using the validDuration of the selected qualification instead.

The default is blank, if there are more than one course qualification having disagreeing qualification dates.
2025-03-27 11:29:18 +00:00
5fd52768bc build(Makefile): add list-projects target 2025-03-27 11:35:01 +01:00
123e9eb057 build(Makefile): fix shell and ghci targets for entrypoint 2025-03-27 11:30:54 +01:00
5ab47c6c4f chore: update gitignore [skip ci] 2025-03-27 11:30:05 +01:00
fd6ba5b0c5 build(backend/Dockerfile): add ENTRYPOINT to support launching ghci with given SRC, etc. 2025-03-27 11:07:14 +01:00
f784f645a6 docs(Makefile): add missing help entries for shell and ghci 2025-03-27 11:06:15 +01:00
92ff99a36e chore(tutorial): granting qualification automatically picks better expiry date
Previously, the form for granting tutorial users a qualification suggested the minimum of all expiry dates, if there where several course qualficiations. This lead to some users being granted driving licences being valid for only one month.

The expiry date can now be left blank, using the validDuration of the selected qualification instead.

The default is blank, if there are more than one course qualification having disagreeing qualification dates.
2025-03-26 16:58:07 +01:00
5a5e4886b7 fix(build): merge from 145-build-system-rewrite neglected newer files
some directories were moved, which ignored files added later on
2025-03-25 18:23:00 +01:00
506b26ddd5 Merged PR 18679: build(Makefile): hard-kill containers before cleaning images
build(Makefile): hard-kill containers before cleaning images
2025-03-25 16:46:14 +00:00
aa664a5822 build(Makefile): hard-kill containers before cleaning images 2025-03-25 17:45:54 +01:00
487069b29e Merged PR 18678: build(Makefile): start: exec instead of run
build(Makefile): start: exec instead of run
2025-03-25 16:41:23 +00:00
f5d701a871 build(Makefile): start: exec instead of run 2025-03-25 17:41:07 +01:00
579ea86503 Merged PR 18677: build(Makefile): launch bash in shell-$SERVICE; add ghci target
build(Makefile): launch bash in shell-$SERVICE; add ghci target
2025-03-25 16:27:50 +00:00
9c1b074adf build(Makefile): launch bash in shell-$SERVICE; add ghci target 2025-03-25 17:27:21 +01:00
a01398f1db Merged PR 18675: add shell-service 2025-03-25 16:16:51 +00:00
020486819f build(Makefile): add shell-$SERVICE target 2025-03-25 17:15:31 +01:00
cd8a7a8322 build(compose.yaml): fix backend binary path bind; add bin path to PATH 2025-03-25 16:52:32 +01:00
79e0d5a642 Merged PR 18666: Update to docker compose 2025-03-25 15:21:18 +00:00
27c5f61299 build(compose.yaml): restrict help service permissions 2025-03-25 15:51:41 +01:00
69b5818427 build(Makefile): remove images too on clean-all 2025-03-25 15:46:39 +01:00
e5e7612e9b build(Makefile): Clean containers on clean-all 2025-03-25 15:44:00 +01:00
ebf71b7135 build(compose.yaml): fix help command 2025-03-25 15:34:14 +01:00
e7c7ec7a82 docs(Makefile): add help messages 2025-03-25 15:33:45 +01:00
d55efd77f7 build(Makefile): rework help and clean 2025-03-25 15:20:21 +01:00
72f5a9fb37 build: move backend-related files into backend dir; implement and connect services via docker-compose
TODOs left: reimplement clean and help, sync static,well-known and assets between services
2025-03-23 04:52:49 +01:00
f1ec60a5b6 build: start to rewrite containerized-Makefile logic for docker-compose; restructure frontend build 2025-03-23 01:44:38 +01:00
5c01ea36c1 chore(release): 27.4.59-0.0.20+145-build-system-rewrite 2025-03-19 02:19:27 +01:00
26b34eee15 build(docker/backend): disable tlmgr for now, to be fixed elsewhere 2025-03-19 02:19:17 +01:00
efa55c8f72 Merged PR 18403: Static ports for development
Commit babee7af: build(Makefile): use static port and dir settings for memcached, minio and maildev
2025-03-18 13:57:20 +00:00
babee7afa2 build(Makefile): use static port and dir settings for memcached, minio and maildev 2025-03-18 14:02:46 +01:00
0cee6f01e8 build(Makefile): fortify PROD var 2025-03-18 14:02:09 +01:00
fdd4283b0d Merged PR 18302: Various Container Fixes
- SET_IMAGE problem fixed
- Static files via memcached
2025-03-17 12:03:42 +00:00
0ac972bf22 chore(release): 27.4.59-0.0.19+145-build-system-rewrite 2025-03-17 10:18:25 +01:00
f40818c1cc build(docker/backend): tlmgr init-usertree 2025-03-17 10:18:06 +01:00
d33a792045 build(Makefile): remove SET_IMAGE in favour of LOCAL_CONTAINERFILE; use non-local postgres with launch args 2025-03-17 10:15:16 +01:00
9ce3b5d146 chore(release): 27.4.59-0.0.18+145-build-system-rewrite 2025-03-17 09:41:54 +01:00
570cfc238b fix(static): fix addStaticContent by using memcached again to supply static files 2025-03-14 20:19:26 +01:00
4fb7a71cfc Merged PR 18230: build(frontend): fix frontend manifest generation
build(frontend): fix frontend manifest generation
2025-03-13 14:05:37 +00:00
b8f6581064 build(frontend): fix frontend manifest generation 2025-03-12 01:21:13 +01:00
c9613e2982 fix(docker): add latex packages to backend container 2025-03-11 17:45:04 +01:00
19c64616f0 fix(build): changing tlmgr setup 2025-03-11 17:06:23 +01:00
e403b6bfb2 Merge branch 'master' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive 2025-03-11 16:26:32 +01:00
87da02048c Merged PR 18093: build(docker/backend): install texlive only for use with tlmgr; setup tlmgr
build(docker/backend): install texlive only for use with tlmgr; setup tlmgr
2025-03-11 15:25:19 +00:00
3dc74de68e fix(job): jobworkers not working due to dev-settings 2025-03-11 16:21:13 +01:00
b4f85f155a chore(make): add start maildev to start 2025-03-11 16:20:13 +01:00
a97dc071a3 chore(job): add interface for sleep job adding 2025-03-11 12:28:43 +01:00
ee5a79398f chore(job): add sleep job for testing
also show running job workers
2025-03-10 18:24:17 +01:00
e069d6be46 build(docker/backend): install texlive only for use with tlmgr; setup tlmgr 2025-03-10 17:38:30 +01:00
6b32cddeac Merged PR 18029: merge maildev 2025-03-10 16:01:24 +00:00
553e699b56 build(Makefile): add maildev target for local testing 2025-03-10 16:31:33 +01:00
479e807d6d Merged PR 18025: Mail search function implemented
- searching emails
- show course qualification in separate columns

Related work items: #2978, #2979
2025-03-10 15:16:12 +00:00
9d1a97172e fix(tutorial): fix #2978 by having one column per course qualification 2025-03-10 15:57:06 +01:00
24196cc2cd fix(mail): day filtering working in comms center 2025-03-10 12:01:43 +01:00
9ba7a82449 fix(mail): fix #2979 by completing simple mail resent function 2025-03-10 11:41:48 +01:00
695bd18763 build(Makefile): implement compile-release for local release container builds 2025-03-08 16:13:07 +01:00
7e61e56ae1 chore(mail): towards #2979 by providing simple mail resent function 2025-03-07 18:00:55 +01:00
207a304192 chore(mail): towards #2979 by allowing to filter by content in mail center 2025-03-07 17:54:05 +01:00
1b8c6c33a7 chore(latex): try latex-full
does not work either :(
2025-03-07 15:25:02 +01:00
bee015c1f2 fix(job): reenable full jobworkers for test settings 2025-03-07 15:24:04 +01:00
1521d08355 chroe(latex): adjust dockerfiles to be similar with respect to latex 2025-03-06 18:23:11 +01:00
bb047da360 Merge branch '145-build-system-rewrite' 2025-03-06 16:17:10 +01:00
6f90c04b1b build(Makefile): only call make in containers when appropriate; use SET_IMAGE for postgres 2025-03-06 16:16:26 +01:00
1633c41b1d Merged PR 17901: build(Makefile): add dependencies targets as explicit prerequisite for compil...
build(Makefile): add dependencies targets as explicit prerequisite for compiles and starts
2025-03-06 10:58:34 +00:00
20faec8973 build(Makefile): add dependencies targets as explicit prerequisite for compiles and starts 2025-03-06 11:31:40 +01:00
65cb75921d Merged PR 17873: fix yesod-bin
build(Makefile): move yesod-bin and hpack installs to dependencies-backend for more robustness
2025-03-06 07:41:40 +00:00
8104ce96cc build(Makefile): move yesod-bin and hpack installs to dependencies-backend for more robustness 2025-03-05 18:09:48 +01:00
396b365a31 build(Makefile): make backend compiles/starts dependent on .stack target 2025-03-05 18:07:37 +01:00
ff3d33bbf4 build(docker/backend): switch from Dockerfile-based yesod-bin+hpack install to Makefile-based install 2025-03-05 18:05:37 +01:00
82ea44c63f build(docker/backend): use non-mounted directory as stack root; install yesod-bin and hpack in CI too 2025-03-05 17:07:52 +01:00
926dbae09a Merged PR 17790: build(Makefile): really clean everything on clean-all
build(Makefile): really clean everything on clean-all
2025-03-04 15:41:01 +00:00
eb67136c0c build(Makefile): really clean everything on clean-all 2025-03-04 16:35:58 +01:00
b37954d452 Merged PR 17760: build(docker/backend): try backend build without chmod to avoid filemode diffs
build(docker/backend): try backend build without chmod to avoid filemode diffs
2025-03-04 12:43:40 +00:00
5752b4b8da build(docker/backend): try backend build without chmod to avoid filemode diffs 2025-03-04 13:24:30 +01:00
3929bccd6e Manual copy from branch 145-build-system-rewrite due to botched-merge 2025-03-03 11:56:07 +01:00
aae5a5f997 fix spdx copyright year having 2 digits only 2025-03-03 11:44:03 +01:00
1fc948711a Manual copy from branch merge-rewrite-jost due to botched-merge 2025-03-03 11:32:14 +01:00
088587549d chore(profile): show examiners in profile data, towards #2347 2025-03-03 10:47:59 +01:00
bc63324ddf chore(profile): towards exam table in profile data (WIP)
towards #2347
2025-03-03 10:46:53 +01:00
9a12e00f7f refactor(i18n): make SomeMessages more flexible to distinguish it from UniWorXMessages, deprecated the latter 2025-02-28 19:02:28 +01:00
06cd87f360 fix(umlaut): renamee files with german umlaut for ease of use 2025-02-28 18:47:52 +01:00
095002637f chore(qualification): prepare stub for edit handler
also fix some minor navigation issues
2025-02-28 17:29:23 +01:00
ffae8553d5 fix(day): fix #2347 by adding repeated examiner check to day consistency check for day exam occurrences 2025-02-28 17:26:33 +01:00
2ad61c73f1 fix(day): fix #2347 by adding repeated examiner check to day consistency check for day exam occurrences 2025-02-28 17:12:48 +01:00
7dcd0b7297 chore(profile): show examiners in profile data, towards #2347 2025-02-28 17:12:48 +01:00
5881973906 chore(exams): allow email for exam result entry as well 2025-02-28 17:12:48 +01:00
d7dcf0acf5 fix(widgets): fix erroneous whitespace in name widget 2025-02-28 17:12:48 +01:00
1f484f7781 chore(profile): towards exam table in profile data (WIP)
towards #2347
2025-02-28 17:12:48 +01:00
9fbab25ecc chore(tutorial): assigning exam occurrences may check duplicate examiners
towards #2347
2025-02-28 17:12:48 +01:00
be18af08c6 chore(tutorial): user view warns against duplicate examiners
towards #2347
2025-02-28 17:12:48 +01:00
b12de8be15 refactor(admin): problem caching indicator made human readable 2025-02-28 17:12:48 +01:00
4156b3b553 chore(avs): add debug log info after not finding an error in company supervision switching after avs update 2025-02-28 17:09:03 +01:00
7b7c0d4053 fix(linter): disable unnecessary linter warning 2025-02-28 17:09:03 +01:00
6441bc5562 chore(firm): finalize supervision discrepancy view 2025-02-28 17:09:03 +01:00
2a1cff4cd0 fix(build) 2025-02-28 17:09:03 +01:00
aefafa32d1 chore(firm): filter working on supervision discrepancy view 2025-02-28 17:09:03 +01:00
8e0eb401b5 chore(admin): minor reorder admin problem page 2025-02-28 17:09:03 +01:00
8adcdf69fe refactor(db): widen the type for DBRead for more flexibility also - change some AdminProblemR DB actions to DBRead instead - add insane supervision warning to AdminProblem page 2025-02-28 17:09:03 +01:00
d6b4afe975 chore(firm): add working view for supervision discrepancy by firm
show if a supervisionship-company is unrelated to either supervisor or supervisee
2025-02-28 17:09:03 +01:00
cce4b2b27d chore(lms): fix #2605
- Implement a mechanism that deletes those users after a short while
- Never delete numerical LMS logins
- Allow admins to terminate an E-Learning manually
- Option to terminate E-Learning upon longtime renewal
- Detection of unnecessary E-Learning (i.e. long valid durations)
2025-02-28 17:08:59 +01:00
12e01238c4 fix(lms): do not delete orphans with all numerical idents
lms idents with all numerical idents are used for testing and thus should not be deleted, even if orphaned
2025-02-28 17:08:05 +01:00
130f592491 chore(lms): add longter,m validity filter, towards #2605 2025-02-28 17:08:05 +01:00
d1dcdcfe91 fix(avs): updateReceivers should not re-insert formerly known receivers 2025-02-28 17:08:05 +01:00
5e0df28444 chore(mail): view page for receivers working now and polished 2025-02-28 17:08:05 +01:00
0a4ad611c7 chore(mail): add i18n for mail receivers view 2025-02-28 17:08:05 +01:00
2109996387 Added de-de-formal.hamlet for receivers 2025-02-28 17:08:05 +01:00
4f5c7d56b0 chore(mail): add modal computing actual receivers at postal pref columns 2025-02-28 17:08:05 +01:00
05bc06df47 chore(firm): add company preference for email pin passwords
companies may be set such that their users have no email pin password by default
switching to such a company deletes the pin password
2025-02-28 17:07:51 +01:00
38606949b0 chore(lms): implement lms termination action
also:
- track last LmsSate for orphans
- make note searchable

towards #2605
2025-02-28 17:06:33 +01:00
f3f2f397fc fix(audit): add user id who caused company superior change to audit log 2025-02-28 17:06:12 +01:00
d06bc10408 fix(tutorial): truly fix #2696 template choice respects school, course, term, etc.
Template course names may contain Vorlage or Template and the type in any order somewhere within the name
2025-02-28 17:05:54 +01:00
490b89e174 refactor(lms): use runDBRead and caching for FilterColumnHandler used in LMS Orphans 2025-02-28 17:05:54 +01:00
d5bbec9fa3 chore(lms): complete view for orphaned lms logins
towards #2605
2025-02-28 17:05:54 +01:00
fbd99f2394 chore(lms): add note to orphans and create working filter 2025-02-28 17:05:54 +01:00
593ee2cf76 fix(build): remove erroneous + from settings.yml 2025-02-28 17:05:54 +01:00
2360375385 chore(lms): add route and breadcrumbs for lms oprhan view 2025-02-28 17:05:54 +01:00
56aa06097b chore(lms): create stub for lms oprhan view 2025-02-28 17:05:54 +01:00
e9fefa75bd refactor(lms): ensure days/months in qualification settings are always used correctly and implement settings for orphans
- extensive refactoring for qualification lms settings
- qualificationAuditDuration changed from months to days
- qualificationAuditDuration no longer optional
- qualificationAuditDuration is only used for LMS; clarified
- three new settings:
    + orphan-deletion-days:
    + orphan-deletion-batch:
    + orphan-deletion-repeat-hours:
2025-02-28 17:05:50 +01:00
0ffd594a04 chore(lms): register and display orphaned LMS idents
towards #2605
2025-02-28 17:03:26 +01:00
ab340aa715 chore(avs): test AVSneo problems
AVSneo will no longer have unique AVS CardNo: PersonSearch will return one card per company, all having the same CardNo, but possibly different colors

Test shows that FRADrive will handle this just fine, provided the old AVS workaround firing several requests at once remain in place
2025-02-28 17:02:04 +01:00
5128f9b74c fix(i18n): disambiguate between course-type and type of course both in german and english
- english: course type -> course category = Kursart
- german: Art des Kurses-> Kurstyp = Tutorial-Type
2025-02-28 17:01:03 +01:00
558402ac47 fix(avs): prevent empty contact and status queries 2025-02-28 17:01:03 +01:00
1b35c57660 fix(tutorial): fix #2696 template choice respects school, course, term, etc. 2025-02-28 17:00:55 +01:00
56b8a8de86 refactor(lms): remove now obsolete lms edit stub 2025-02-28 17:00:20 +01:00
48096c6b81 fix(hlint): remove superfluous dollar 2025-02-28 16:59:09 +01:00
e8a21610a4 chore(tutorial): convenience button to show tutorial exam results
required new filter on exam participants page
2025-02-28 16:59:09 +01:00
c1ed89a30b various minor code refactors 2025-02-28 16:59:09 +01:00
cf8fc90db7 chore(qualification): finish qualification edit handler 2025-02-28 16:59:09 +01:00
b26dd285df chore(form): create calendarDiffDaysField 2025-02-28 16:58:46 +01:00
e5cf120af2 refactor(UniWorxMessages): eliminate superfluous whitespace
also: some tutorial code cleaning
2025-02-28 16:56:11 +01:00
ad12b8f927 refactor(tutorial): fix and complete exam occurrence form function 2025-02-28 16:56:11 +01:00
9fe78541d7 refactor(tutorial): exam occurrence form function and appearance 2025-02-28 16:56:11 +01:00
a0604637bd refactor(tutorial): exam occurrence editing received specialised page 2025-02-28 16:56:11 +01:00
5e41c2073f chore(tutorial): add separate exam occurrence edit page (WIP) 2025-02-28 16:56:11 +01:00
50c7d18b53 chore(exam): add convenience function to duplicate exam occurrences to another day 2025-02-28 16:56:11 +01:00
f996976f65 chore(exam): auto name generation for examOccurrences 2025-02-28 16:56:11 +01:00
f04a40c0a3 chore(tutorial): add covenience button to full exam editing 2025-02-28 16:56:11 +01:00
6cc929e377 fix(tutorial): fix exam occurrence form
works better, but still not 100%
some debugging added
2025-02-28 16:56:11 +01:00
11bcef67f8 chore(tutorial): switch relevant exams from registerFrom/To to examStart/End
registering is of users/supervisors, but this page is for admins, so  examStart/examEnd are only relevant for when it is actually happening
2025-02-28 16:56:11 +01:00
7b7ffab109 chore(tutorial): towards #2347 exam occurrence form design finished, but buggy somehow (WIP)
Propably due to multiActionAForm badly interacting with contained massInputForm
2025-02-28 16:56:11 +01:00
afbeb86762 chore(pathpiecel): PathPiece instance for lists of exam occurrence ids
towards #2347
2025-02-28 16:56:11 +01:00
9af4a3a22e chore(tutorial): towards #2347 exam occurrence form mostly working (WIP)
form is completed, but the initial call needs proper arguments from DB about all apropriate exams
2025-02-28 16:56:11 +01:00
4241c75afe chore(tutorial): towards #2347 exam occurrence form added (WIP) 2025-02-28 16:56:11 +01:00
afa2f9bf0e chore(tutorial): towards #2347 add convenience buttons to add exam tutorial (STUB)
This is STUB add a multiform action that is not yet evaluated. Form Handler is to be implemented next.
2025-02-28 16:56:11 +01:00
f44d66cb91 chore(tutorial): assign exam rooms for tutorial users ad hoc 2025-02-28 16:56:11 +01:00
1d68ed9c5e refactor(saltine): fix hlint and ghc warnings 2025-02-28 16:56:07 +01:00
cd84d0a932 refactor(daily): move caching into own submodule
we need those methods in Handler.Tutorial.Users as well
2025-02-28 16:54:19 +01:00
f467f6086e chore(daily): add function to retrieve all exam occurrences for given days
the function uses the memcachedByClass mechanism, which was slightly refined as well to include the class within the memcached keys for added correctness
2025-02-28 16:53:34 +01:00
4f524bd8d2 refactor(form): make all userField variants consistent with each other 2025-02-28 16:53:20 +01:00
aaf72f7255 chore(exam): show exam occurrences in participants views for tutorial and course 2025-02-28 16:53:20 +01:00
36a3b04ad8 chore(exam): add examiner to occurrence options
we intend to use the exam examiner for adding occurrences through tutorials
2025-02-28 16:53:20 +01:00
ae6d3b0fc3 fix(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
6f3dd408bb fix(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
c0c1665ccb refactor(form): knownUserField not working as intended (WIP) 2025-02-28 16:53:20 +01:00
c2e0f6b2b8 chore(form): add knownUserField accepting known users only 2025-02-28 16:53:20 +01:00
a1d7f16427 fix(fill): exam prefill dates work now 2025-02-28 16:53:20 +01:00
5f3d8a88e2 fix(hlint): implement hlint suggestion 2025-02-28 16:53:20 +01:00
b42e93e891 chore(daily): implement left-over todos and i18n 2025-02-28 16:53:17 +01:00
e53be8ddf9 fix(icons): fix some botched icon definitions, for real 2025-02-28 16:52:22 +01:00
6d583fe8c4 fix(icons): fix some botched icon definitions 2025-02-28 16:52:22 +01:00
954e86c95a fix(ghci): ghci works now as expected 2025-02-28 16:52:17 +01:00
f47528c741 chore(daily): fix #2349 completing daily sanity check 2025-02-28 16:51:10 +01:00
ad1d235bea chore(daily): towards #2347 check complete, except i18n
also missing: displaying memcached check results in each line of day view
2025-02-28 16:50:23 +01:00
d4d915bd60 chore(daily): towards #2347 by caching and sorting results 2025-02-28 16:47:46 +01:00
07cfc0adcb fix(hlint): implement some hlint suggestions 2025-02-28 16:42:37 +01:00
f6c82009ee chore(job): disable jobworkers in development in order to reduce log output 2025-02-28 16:42:37 +01:00
c08d6ae0d0 chore(daily): properly implement note suggestion caching and invalidation 2025-02-28 16:42:37 +01:00
6a0876ae55 chore(daily): basic functionality #1939 completed and checked - filters now work as intended - textField suggestions now work as intended 2025-02-28 16:42:37 +01:00
75a4f52a80 fix(icon): add missing icon 2025-02-28 16:42:27 +01:00
1f7e9b6a2f chore(daily): adjust css, improve suggestions 2025-02-28 16:42:03 +01:00
564488d5fa chore(day): attempt to fix participant note suggestions 2025-02-28 16:40:57 +01:00
500c9a749a chore(daily): add suggestions to note fiels (WIP) 2025-02-28 16:40:57 +01:00
ede00deb86 refactor(daily): user company discrepancies 2025-02-28 16:40:16 +01:00
9eb075836f fix(daily): form submit now works as intended 2025-02-28 16:39:33 +01:00
d546e5da0f minor adjustments to routes and icons 2025-02-28 16:39:33 +01:00
162c44a44f fix(msg): minor uni2wok to fradrive message change
Primarly done to the the new build environment start-backend file watcher and see whether a restart enables the website
2025-02-28 16:39:33 +01:00
0a29540089 fix(doc): Update outdated GitLab references to DevOps work items 2025-02-28 16:39:33 +01:00
6f1ad811f7 chore(firm): add action to add non-avs firm associates 2025-02-28 16:39:33 +01:00
d2f69dc023 fix(doc): minor haddock fixes 2025-02-28 16:39:33 +01:00
cd76bdd4e7 chore(day): complete form columns for daily view (untested)
unfortunately `make start` does not enter DEVELOPMENT mode currently, so this is not yet testeted.
2025-02-28 16:39:33 +01:00
e1dca7d6b0 chore(day): make form columns compile eventually 2025-02-28 16:39:33 +01:00
5d46479a33 chore(icons): add instructions on how to add icons 2025-02-28 16:39:28 +01:00
fcf1b6d9d8 fix(icons): add missing icons 2025-02-28 16:38:58 +01:00
7e09636a2b chore(day): add missing form columns 2025-02-28 16:38:42 +01:00
8317f682d8 chore(tutorial): (WIP) towards #90 write form columns 2025-02-28 16:38:41 +01:00
85511091cc fix(test): fix test problem and add tests for UserEyeExam and UserDrivingPermit 2025-02-28 16:38:41 +01:00
02d10006fc fix(build) 2025-02-28 16:38:41 +01:00
2fdb132140 chore(tutorial): show additional columns for #90
columns are distinguished by user and the entities given in parenthesis:
- driving permit (tutorial)
- eye exam (tutrial)
- tutorial note (tutorial)
- attendance (tutorial & day)
- attendance-note (tutorial & day)
- parking permit (day)
2025-02-28 16:38:41 +01:00
fba0b71d50 chore(tutorial): build model for #90 2025-02-28 16:38:41 +01:00
4934f5f89d fix(room): deduplicate room column and fix order 2025-02-28 16:38:41 +01:00
133a8d3739 chore(daily): show rooms for tutorial lessons 2025-02-28 16:38:41 +01:00
e8af2b8da9 refactor(TH): minor code clean up 2025-02-28 16:38:41 +01:00
ac766ea217 refactor(TH): add sqlMIXproj' using reify on TableExpr for more comfort 2025-02-28 16:38:41 +01:00
a113d43089 chore(TH): add sqlMIXproj to improve dbTable usage, also add card-nos to DayTask Table 2025-02-28 16:38:41 +01:00
14140c982b refactor(memcached): checking memcached key security mechanisms
RESULTS:

Keys for memcached use their Binary representation!

This means that the following three are all interchangeable as a key:
      newtype Foo1 = Foo1 { someInt1 :: Int } deriving newtype (Binary)
      data    Foo2 = Foo2 { someInt2 :: Int } deriving         (Binary)
      type    Foo3 = Int
Therefore it is best to use $(memcachedHere) or $(memcachedByHere) if possible or add another type
2025-02-28 16:38:41 +01:00
ce125b6495 chore(daily): show course associated qualifications 2025-02-28 16:38:41 +01:00
0c78996260 fix(avs): fix #225 by skipping firm updates entirely if AVS FirmInfo is unchanged for previously seen values for AVS User to be updated 2025-02-28 16:38:18 +01:00
b78c898ebf fix(avs): fix #224 repeated superior changes no longer occur
furthermore AdminProblems are only inserted if the same problem does not exist unsolved
2025-02-28 16:35:13 +01:00
4bca7580d0 refactor(occurrences): fold RoomReference into Occurrences, completed 2025-02-28 16:32:52 +01:00
46f777740f fix(memcached): using memcachedHere did not compile due to staging problems 2025-02-28 16:32:52 +01:00
a7b08b1ae5 fix(occurrences): room occurrence form works now 2025-02-28 16:32:52 +01:00
452cdf4442 fix(test): add arbitrart instances and adjust argument changes to tests 2025-02-28 16:32:52 +01:00
f6b87a09b0 fix(build): occurrences no longer have a READ instance 2025-02-28 16:32:52 +01:00
0a5b0fceff chore(build): limit max compile cpu cores to 5 2025-02-28 16:32:52 +01:00
3e6717904a chore(occurrences): workaround provide simple room field with least recent suggestions 2025-02-28 16:32:52 +01:00
2059d678ee refactor(memcached): remove ARC cache and LRU logic some more
more leftover dead code was removed, especially cache prewarm options that no longer had an effect on a non-existing ARC cache
2025-02-28 16:32:52 +01:00
225af31943 chore(occurrences): add GIN index for JSONB columns 2025-02-28 16:32:52 +01:00
9d26c1c171 refactor(occurrences): fix migration 2025-02-28 16:32:52 +01:00
22d6cf737e refactor(occurrences): remove RoomReference from model and add migration 2025-02-28 16:32:52 +01:00
35cadda2e8 refactor(occurrences): fold RoomReference into Occurrences (WIP)
Each Occurrence now has its own RoomReference, i.e. Mondays may have a different Room assigned than Tuesdays

WIP Problem: occurrencesAFrom does not work, always insists on Room missing
2025-02-28 16:32:52 +01:00
692350677f fix(build): minor 2025-02-28 16:32:52 +01:00
36b481a548 fix(occurrences): occurringLessons had an erroneously inverted condition 2025-02-28 16:32:52 +01:00
cb58c20ca1 chore(occurrences): add datatype LessonTime for dealing timetable intervals 2025-02-28 16:32:52 +01:00
e757209b80 refactor(memcached): remove ARC cache entirely
NOTE: this was a crude surgery, removing everything ARC related; some dead code artifacts may have remained.

Especially check PrewarmCacheConf

Reason for removall: adding `memcachedInvalidateClass` was difficult to implement with ARC active; ARC was known to be problematic; removal was easier (see #2 2024-09-23)
2025-02-28 16:32:25 +01:00
74c330bd24 chore(memcached): add key classes for easy invalidation 2025-02-28 16:29:45 +01:00
cac0a47d01 refactor(daily): factor our tutorial selection function 2025-02-28 16:25:43 +01:00
5c70b1099c fix(firm): filtering by active supervisor working 2025-02-28 16:25:43 +01:00
26ea39dc67 fix(lpr): print log sorting works now 2025-02-28 16:25:43 +01:00
2385d989a8 fix(build) 2025-02-28 16:25:43 +01:00
0105aa8c3f refactor(model): move JSONB instance to proper module 2025-02-28 16:25:43 +01:00
3bae365b37 chore(lpr): improve lpr log display 2025-02-28 16:25:43 +01:00
1d01897757 chore(daily): make company a property of TutorialParticipant, towards #90 2025-02-28 16:25:43 +01:00
ce62b99d2b chore(daily): add more columns #90 2025-02-28 16:25:43 +01:00
4dbe005709 chore(daily): add page actions #90 2025-02-28 16:25:43 +01:00
11ef856b2b refactor(jsonb): change DB using JSONB, to improve stub #90 2025-02-28 16:25:43 +01:00
5a03d1cabe chore(daily): improve stub #90 change DB to JSONB (WIP) 2025-02-28 16:25:43 +01:00
0264c87510 chore(daily): create stub in preparation for #90 2025-02-28 16:25:43 +01:00
e9a4c838a8 refactor(map): clarify some unnecessarily obfuscated code
also, using Map.fromList is more efficient if the list happens to be ordered
2025-02-28 16:25:43 +01:00
733324a732 chore(config): add config/develop-settings.yml only active if DEVELOPMENT
Ensure that certain settings are NOT seen in production, but automatically active in development without using environment variables.
2025-02-28 16:25:43 +01:00
757d383d33 chore(gitlab-ci): install and decode font ttfs 2025-02-28 15:56:15 +01:00
ee02a50bdd chore(node-deps): add ttf2woff as dev dep 2025-02-28 15:55:40 +01:00
c859974495 chore(gitignore): do not publish font files (for now) 2025-02-28 15:51:59 +01:00
ce35c8efc9 Merge branch '145-build-system-rewrite' 2025-02-28 15:37:36 +01:00
3151be6f41 build(Makefile): add documentation 2025-02-21 12:49:35 +01:00
61fb8b7ea9 build(Makefile): add help text for clean-images 2025-02-20 17:34:50 +01:00
0ecb342e8f build(Makefile): add clean-images target 2025-02-20 17:33:31 +01:00
8198559a94 build(Makefile): fill uniworxdb before starting backend 2025-02-20 16:14:52 +01:00
fbd3c6d7c5 build(release): make release versions compliant with semver-specifications 2025-02-20 13:34:13 +01:00
a8420aaf56 build(release): remove v-prefix from release versions 2025-02-20 12:46:24 +01:00
1bd0225522 chore(release): v27.4.59-test-g0.0.17 2025-02-18 13:28:30 +01:00
71a2a8e76a build(docker/fradrive): fix entrypoint script 2025-02-18 13:28:26 +01:00
bd48469b3c chore(release): v27.4.59-test-f0.0.17 2025-02-17 11:26:31 +01:00
28b94351da build(docker/fradrive): simplify entrypoint 2025-02-17 11:26:12 +01:00
59985d11c2 chore(release): v27.4.59-test-g0.0.16 2025-02-16 23:44:39 +01:00
d7e8adc24d build(docker/fradrive): add libpq-dev runtime dependency 2025-02-16 23:44:36 +01:00
3168f5c49e chore(release): v27.4.59-test-f0.0.16 2025-02-16 15:30:58 +01:00
758f4db9d8 build(docker/fradrive): set DEBIAN_FRONTEND and TZ to avoid user interaction when installing tzdata 2025-02-16 15:30:53 +01:00
c033243038 chore(release): v27.4.59-test-f0.0.15 2025-02-15 18:34:46 +01:00
3dfab76761 build(docker/fradrive): update latex runtime dependency list 2025-02-15 18:34:41 +01:00
497d0355d9 build(docker/fradrive): fix libsodium source package name 2025-02-15 18:31:40 +01:00
4d2ac71f73 chore(release): v27.4.59-test-e0.0.15 2025-02-14 21:32:54 +01:00
2b76d673f8 ci(azure-pipelines): add build-args to release build for network access 2025-02-14 21:32:49 +01:00
81fdec5068 build(docker/fradrive): install release runtime dependencies 2025-02-14 21:25:39 +01:00
2eb423b4a1 chore(release): v27.4.59-test-f0.0.14 2025-02-14 16:56:19 +01:00
f23da55693 build(docker/fradrive): remove path-quoting for settings files 2025-02-14 16:55:40 +01:00
7b2d2bedb7 build(docker/fradrive): chmod /usr/bin contents 2025-02-14 16:11:15 +01:00
167872c332 build(Makefile): git push commits when releasing again 2025-02-14 16:10:01 +01:00
25c880c8ba chore(release): v27.4.59-test-e0.0.14 2025-02-13 15:08:39 +01:00
5d1dc8c3c0 build(docker/fradrive): COPY entrypoint script into release container 2025-02-13 15:08:23 +01:00
640f3bbba5 ci(azure-pipelines): tweak image artifact name/location 2025-02-13 11:10:51 +01:00
760ab5f069 chore(release): v27.4.59-test-e0.0.13 2025-02-12 16:20:14 +01:00
7c1a7e1e9e ci(azure-pipelines): fix release repository 2025-02-12 16:19:48 +01:00
2d80c6e0ab ci(azure-pipelines): fix image version check for build 2025-02-12 15:18:44 +01:00
010fb965d9 ci(azure-pipelines): publish built images as artifacts 2025-02-12 15:15:55 +01:00
32441fc9c7 ci(azure-pipelines): do not use latest images if images have been rebuilt 2025-02-12 15:04:56 +01:00
ea92e17949 ci(azure-pipelines): fix master-branch check for updating latest 2025-02-12 15:02:15 +01:00
a04732b5fb build(Makefile): remove obsolete git push for release [skip ci] 2025-02-12 13:36:16 +01:00
53d9c17fb5 chore(release): v27.4.59-test-e0.0.12 2025-02-12 13:29:19 +01:00
8e1bb82017 ci(azure-pipelines): fix release repository 2025-02-12 13:28:46 +01:00
7ed6b843bf chore(release): v27.4.59-test-d0.0.12 2025-02-11 23:25:03 +01:00
20954b1351 build(Makefile): fix release target using correct template splice 2025-02-11 23:21:58 +01:00
c3399c49b3 chore(release): v27.4.59-test-d0.0.11 2025-02-11 23:21:18 +01:00
88342f7336 chore(release): v27.4.59-test-c0.0.11 2025-02-11 23:20:17 +01:00
3a1b6cf72c chore(release): v27.4.59-test-b0.0.11 [skip ci] 2025-02-11 23:19:29 +01:00
f351c7485e chore(release): v27.4.59-test-c0.0.10 2025-02-11 23:15:42 +01:00
5c65c04ce7 chore(release): v27.4.59-test-b0.0.10 2025-02-11 23:15:01 +01:00
7d621f0e0f build(Makefile): release - wait before tagging [skip ci] 2025-02-11 23:14:53 +01:00
6dda12cc66 chore(release): v27.4.59-test-a0.0.10 2025-02-11 23:14:12 +01:00
965ae3da29 build(Makefile): push commit separately for release 2025-02-11 23:13:57 +01:00
9d16a22fd7 ci(azure-pipelines): add repository for release push 2025-02-11 23:12:54 +01:00
4661eab218 ci(azure-pipelines): contd 2025-02-10 19:30:58 +01:00
db75978dcf ci(azure-pipelines): temporarily disable tests 2025-02-10 19:30:09 +01:00
406c14dd86 ci(azure-pipelines): fix STACK_CORES 2025-02-10 16:50:20 +01:00
7e8d910496 ci(azure-pipelines): restrict number of used cores everywhere to allow for canceling jobs 2025-02-10 15:56:59 +01:00
7a1139807d ci(azure-pipelines): use caches for testing 2025-02-10 15:20:09 +01:00
6b3775b9b9 ci(azure-pipelines): run tests in correct service containers 2025-02-10 15:18:28 +01:00
0821b74fb7 ci(azure-pipelines): make tests dependent on build instead of setup only 2025-02-10 15:14:48 +01:00
9f49cef214 ci(azure-pipelines): perform registry login/logout for testing 2025-02-10 15:13:02 +01:00
9f411e329d ci(azure-pipelines): remove job-level dependsOn for test 2025-02-10 15:07:41 +01:00
dea9faa055 ci(azure-pipelines): fix test container step 2025-02-10 15:06:43 +01:00
084b9258dd ci(azure-pipelines): start postgres container for tests 2025-02-10 15:04:47 +01:00
258a240a77 chore(release): v27.4.59-test-a0.0.9 2025-02-10 14:09:58 +01:00
ee498be12f revert(azure-pipelines): revert path exclude 2025-02-10 14:09:34 +01:00
5e76a77821 chore(release): v27.4.59-test-a0.0.8 2025-02-10 14:08:56 +01:00
df67718241 ci(azure-pipelines): exclude CHANGELOG changes as trigger [skip ci] 2025-02-10 14:08:46 +01:00
3cd48bdea1 chore(release): v27.4.59-test-a0.0.7 2025-02-10 14:08:04 +01:00
019d6475c5 build(Makefile): fix release target 2025-02-10 14:07:46 +01:00
b9486187d8 ci(azure-pipelines): tweak triggers 2025-02-10 13:55:47 +01:00
6e3286b8a7 ci(azure-pipelines): push releases to registry 2025-02-10 13:47:42 +01:00
586550f2fd build(docker/fradrive): fix uniworxdb binary destination path [skip ci] 2025-02-09 19:10:19 +01:00
043b9344f6 build(docker/fradrive): remove locale-gen [skip ci] 2025-02-09 12:34:38 +01:00
0aeb28088d ci(azure-pipelines): fix release binary download path 2025-02-08 15:40:06 +01:00
235d03d173 chore(release): v27.4.59-test-a0.0.6 2025-02-08 01:03:14 +01:00
fc713fdbd0 ci(azure-pipelines): rename artifact-download yaml 2025-02-08 00:14:59 +01:00
b2a9a3b4b4 ci(azure-pipelines): reuse parameters.service.dependsOn as identifier for required artifacts 2025-02-08 00:14:12 +01:00
0325bb7a63 ci(azure-pipelines): apply pool and timeout params for build jobs 2025-02-07 23:03:56 +01:00
77d737026e chore(release): v27.4.59-test-a0.0.5 2025-02-07 21:38:33 +01:00
f310df9647 ci(azure-pipelines): fix cache param reference 2025-02-07 21:37:52 +01:00
640956df20 ci(azure-pipelines): restore dependency caches for build 2025-02-07 21:37:15 +01:00
248c8ca42e ci(azure-pipelines): templatify caching; use cache template for dependencies 2025-02-07 21:34:13 +01:00
fb2647803b ci(azure-pipelines): fix build artifact reference 2025-02-07 21:27:57 +01:00
00711e42c0 ci(azure-pipelines): tweak triggers 2025-02-07 21:06:28 +01:00
08084b619f chore(release): v27.4.59-test-a0.0.4 2025-02-07 21:03:43 +01:00
dcc4c70ec2 ci(azure-pipelines): fix path typo 2025-02-07 18:07:30 +01:00
8cf41831f0 ci(azure-pipelines): fix cache keys 2025-02-07 17:47:32 +01:00
078f46e5a5 ci(azure-pipelines): fix dependencies caches type 2025-02-07 17:19:14 +01:00
8157746fea ci(azure-pipelines): properly implement multi-entity caches for dependencies 2025-02-07 17:17:25 +01:00
6a279d262f ci(azure-pipelines): use dependency cache instead of artifacts 2025-02-07 16:50:44 +01:00
87e80db4aa ci(azure-pipelines): fix dependenciesArtifacts param 2025-02-07 16:21:49 +01:00
7fe8fcb5f6 ci(azure-pipelines): reintroduce timeout for dependency builds 2025-02-07 16:19:18 +01:00
c62c435638 ci(azure-pipelines): fix and deduplicate condition when to setup images 2025-02-06 18:57:12 +01:00
17c7ed89c5 ci(azure-pipelines): always run dependency build when not on update branch 2025-02-06 18:50:47 +01:00
517144c0cf ci(azure-pipelines): use build container for Build jobs 2025-02-06 18:46:32 +01:00
11b17ab1e2 ci(azure-pipelines): disable Test stage for now 2025-02-06 18:25:37 +01:00
224f55852f ci(azure-pipelines): make stages depend on each other 2025-02-06 18:22:05 +01:00
622ba07b8f ci(azure-pipelines): fix dependsOn contd ? 2025-02-06 18:20:03 +01:00
2a1f114f48 ci(azure-pipelines): fix job dependsOn contd 2025-02-06 18:16:59 +01:00
b77356d73d ci(azure-pipelines): fix job dependsOn 2025-02-06 18:12:28 +01:00
ee244e34a4 ci(azure-pipelines): fix template locations contd 2025-02-06 18:10:46 +01:00
ed8f859c1e ci(azure-pipelines): fix template locations 2025-02-06 18:09:58 +01:00
f969c23bac ci(azure-pipelines): fix param splices 2025-02-06 18:08:28 +01:00
1a3c18a8bd ci(azure-pipelines): fix param name contd 2025-02-06 18:07:20 +01:00
fc13ac7a6d ci(azure-pipelines): fix param name 2025-02-06 18:06:41 +01:00
ef9f4a9345 ci(azure-pipelines): restructure pipeline workflow 2025-02-06 18:04:55 +01:00
ba7b2de4cf ci(azure-pipelines): restructure pipeline workflow - build images [skip ci] 2025-02-06 17:35:18 +01:00
6012286250 ci(azure-pipelines): implement more general make-target pipeline template [skip ci] 2025-02-06 17:33:36 +01:00
cfb48b6a1c ci(azure-pipelines): imageUpstream -> buildImageUpstream [skip ci] 2025-02-06 17:30:27 +01:00
32f449ec12 ci(azure-pipelines): restructure params contd [skip ci] 2025-02-06 17:28:08 +01:00
7b68b128a8 ci(azure-pipelines): remove .stack dir from backend artifacts [skip ci] 2025-02-06 17:00:35 +01:00
6564e8f975 ci(azure-pipelines): refactor params [skip ci] 2025-02-06 17:00:21 +01:00
cb7946b156 ci(azure-pipelines): trigger pipeline on any tag [skip ci] 2025-02-06 16:59:44 +01:00
81203be811 ci(azure-pipelines): set custom triggers; allow tag pipelines [skip ci] 2025-02-06 16:55:03 +01:00
0345f4a5e6 chore(release): v27.4.59-test-a0.0.3 2025-02-06 10:24:26 +01:00
85105cb931 ci(azure-pipelines): fix releaseTag param [skip ci] 2025-02-06 10:24:15 +01:00
51267bfd7c build(release): fix version script (again) [skip ci] 2025-02-05 13:17:39 +01:00
8136d92e48 chore(release): v27.4.59-test-a0.0.2 2025-02-05 13:16:26 +01:00
8e42e4140d docs(Makefile): add TODO [skip ci] 2025-02-05 11:50:29 +01:00
59c49116b5 ci(azure-pipelines): add release tag [skip ci] 2025-02-05 11:46:07 +01:00
3bce50c1fe ci(azure-pipelines): work on release [skip ci] 2025-02-05 11:44:20 +01:00
2c7858139a ci(azure-pipelines): parametrize release endpoint [skip ci] 2025-02-05 11:40:30 +01:00
f48afbca43 ci(azure-pipelines): only run release stage under forceRelease || tag condition [skip ci] 2025-02-05 11:32:00 +01:00
30ad995a40 ci(azure-pipelines): templatify release [skip ci] 2025-02-05 11:31:36 +01:00
871cc72995 chore(release): v27.4.59-test-a0.0.1 2025-02-05 11:04:29 +01:00
a92fd673ab build(docker/fradrive): do not install locales manually [skip ci] 2025-02-05 11:04:15 +01:00
d89e9f6781 build(docker/fradrive): update apt repositories before install [skip ci] 2025-02-05 11:03:47 +01:00
12d8f49a65 build(release): fix version script [skip ci] 2025-02-05 11:02:39 +01:00
bf0642ccb8 build(release): fix release branchversion comparison in release script [skip ci] 2025-02-04 13:42:35 +01:00
eac726f364 ci(azure-pipelines): use cached dependencies when variable is set 2025-02-04 13:33:39 +01:00
c487513116 docs(Makefile): add documentation for shell-ghci target [skip ci] 2025-02-04 13:28:08 +01:00
5761b96282 ci(azure-pipelines): include all binaries in artifact uploads [skip ci] 2025-02-04 11:44:07 +01:00
84a91be87f ci(azure-pipelines): fix bin path for release artifact copy [skip ci] 2025-02-04 11:42:05 +01:00
9e3a16011b build(docker/fradrive): use relative bin path for binary copy [skip ci] 2025-02-04 11:40:53 +01:00
4ec521361d build(Makefile): fix release target [skip ci] 2025-02-03 18:30:58 +01:00
72920caf4c ci(azure-pipelines): fix release artifact patterns 2025-02-03 18:27:49 +01:00
0538142aa8 ci(azure-pipelines): refer to devfra registry in lower-case only [skip ci] 2025-02-03 18:24:46 +01:00
c03fd0c81f chore: move version helper script to utils [skip ci] 2025-02-03 18:22:36 +01:00
252641337a chore: tweak versioning script [skip ci] 2025-02-03 18:20:21 +01:00
3cbeba956e ci(azure-pipelines): fix buildSteps [skip ci] 2025-01-29 17:05:27 +01:00
0a104db666 ci(azure-pipelines): add skipTests logic [skip ci] 2025-01-29 14:22:08 +01:00
311ba5234d ci(azure-pipelines): add condition param to artifacts 2025-01-29 12:15:55 +01:00
b14821e3b4 ci(azure-pipelines): add continueOnError param to artifacts 2025-01-29 12:14:11 +01:00
78d0d9e853 ci(azure-pipelines): hardcode pipeline artifact download project 2025-01-29 11:34:05 +01:00
96059f0a7b ci(azure-pipelines): fix artifact project contd 2025-01-29 11:26:18 +01:00
21ad3f06af ci(azure-pipelines): try yaml-compiletime project def splice 2025-01-29 11:25:37 +01:00
55531ef692 ci(azure-pipelines): use project id for artifact download project 2025-01-29 11:01:53 +01:00
8a22a86399 ci(azure-pipelines): add release stage and image build 2025-01-29 10:24:44 +01:00
ecfc0f7461 build(docker/fradrive): prepare fradrive Dockerfile for release [skip ci] 2025-01-29 10:12:05 +01:00
83a92b05dd ci(azure-pipelines): try collection id as artifacts download project 2025-01-27 19:04:22 +01:00
100422db41 ci(azure-pipelines): fix artifact project contd 2025-01-27 18:08:43 +01:00
0988079b86 ci(azure-pipelines): fix artifact project 2025-01-27 18:02:19 +01:00
9fc8ba2315 ci(azure-pipelines): fix params 2025-01-27 17:42:45 +01:00
2200b85120 ci(azure-pipelines): fix param refs 2025-01-27 17:41:50 +01:00
c7ee91d26b ci(azure-pipelines): distinguish between dependsOn and requiredArtifacts 2025-01-27 17:40:15 +01:00
09ccd12b29 ci(azure-pipelines): add backend-dependencies dep for backend job 2025-01-27 17:36:37 +01:00
422f6bc5b5 ci(azure-pipelines): add more parameters to service dependencies; allow downloading dependencies from previous runs 2025-01-27 17:35:46 +01:00
204d57cb96 ci(azure-pipelines): add more params to dependencies 2025-01-27 17:20:36 +01:00
a2dbb1f5f3 ci(azure-pipelines): add .stack dir contents to backend artifacts for dependency caching 2025-01-27 17:13:00 +01:00
4ea031ed6b refactor(backend): hlint 2025-01-27 13:37:49 +01:00
9e7631deeb ci(azure-pipelines): remove debug print step 2025-01-27 13:11:56 +01:00
2b7412d27e ci(azure-pipelines): add debug print before dependency build 2025-01-27 02:22:46 +01:00
96f735a2f5 ci(azure-pipelines): use DownloadPipelineArtifact task for more granular control 2025-01-27 02:08:19 +01:00
93f968a03b ci(azure-pipelines): copy artifacts from service dependencies 2025-01-26 14:49:35 +01:00
39ab2ce8a1 ci(azure-pipelines): move build timeout to build instead of image build 2025-01-24 19:13:53 +01:00
7e1cddfa46 build(docker/backend): use PROJECT_DIR as build-arg and env [skip ci] 2025-01-24 15:50:38 +01:00
e997616e33 build(Makefile): chown PROJECT_DIR before building backend dependencies [skip ci] 2025-01-24 15:28:00 +01:00
1dd5c5dd79 build(docker/backend): chmod PROJECT_DIR permissions separately [skip ci] 2025-01-24 14:42:59 +01:00
082ce971aa build(docker/backend): allow even more for PROJECT_DIR 2025-01-24 14:39:03 +01:00
b739c66444 build(docker/backend): allow PROJECT_DIR access for everyone [skip ci] 2025-01-24 14:19:30 +01:00
6dc59e5098 build(docker/backend): let stack manage its root dir 2025-01-24 14:04:52 +01:00
e02c66de1a build(docker/backend): fix syntax [skip ci] 2025-01-24 13:42:07 +01:00
e8adb2c27d build(azure-pipelines): do not download redundant stack packages in ci 2025-01-24 13:26:45 +01:00
114bceb57e build(frontend): add karma-esbuild to package lock [skip ci] 2025-01-24 12:37:46 +01:00
e2cb0edec5 ci(azure-pipelines): refine artifacts paths 2025-01-24 12:37:14 +01:00
d5e4e67779 ci(azure-pipelines): download artifacts from dependencies for services 2025-01-24 11:59:27 +01:00
3f9abfdcc2 build(docker/backend): tweak stack root, remove mounts [skip ci] 2025-01-24 11:55:28 +01:00
609e4310da ci(azure-pipelines): add service dependencies 2025-01-24 11:47:24 +01:00
cfa669bda6 ci(azure-pipelines): move pool definition to stage level 2025-01-24 11:35:47 +01:00
3549cd1649 ci(azure-pipelines): separate services into stages 2025-01-24 11:34:22 +01:00
89326ded56 ci(azure-pipelines): use PROJECT_DIR on repository path [skip ci] 2025-01-24 11:08:03 +01:00
2af27e2624 build(docker/backend): refactor backend Dockerfile 2025-01-24 11:04:52 +01:00
c83ed1fc39 build(Makefile): eliminate MOUNT_DIR in favor of PROJECT_DIR [skip ci] 2025-01-24 02:39:28 +01:00
3416942591 ci(azure-pipelines): add job timeout param 2025-01-24 02:26:09 +01:00
53226e6c6f build(Makefile): use 2 cores for backend dependencies [skip ci] 2025-01-24 02:20:07 +01:00
85bea8d12c build(docker/backend): tweak stack root [skip ci] 2025-01-24 00:20:34 +01:00
24046ef0fc build(Makefile): remove explicit uniworx.cabal dependency [skip ci] 2025-01-24 00:20:01 +01:00
325f07feca build(docker/backend): add rw permissions for stack mounts [skip ci] 2025-01-23 17:20:42 +01:00
6895313887 build(docker/backend): replace more COPY with mount [skip ci] 2025-01-23 17:15:45 +01:00
e95ad62436 ci(azure-pipelines): fix debug prints [skip ci] 2025-01-23 17:14:30 +01:00
c0ec8d2a9d build(docker/backend): mount on prebuild to relative location [skip ci] 2025-01-23 17:10:27 +01:00
65ec7f0de5 build(docker/backend): RUN --mount instead of late COPY [skip ci] 2025-01-23 16:51:07 +01:00
073ffb8483 ci(azure-pipelines): add debug prints 2025-01-23 16:42:13 +01:00
be645b8c8b ci(azure-pipelines): make parameter pool available for image build jobs 2025-01-23 15:28:41 +01:00
8906f3d705 ci(azure-pipelines): use DS3 2025-01-23 15:08:15 +01:00
7a44af0a0b build(Makefile): limit dependency build to 3G mem 2025-01-23 12:29:00 +01:00
d030c5d0cc build(Makefile): restrict backend dependency builds to 1 cpu core 2025-01-23 11:00:03 +01:00
56d7fec466 ci(azure-pipelines): add debug print for pool 2025-01-23 10:51:29 +01:00
e67091cb47 ci(azure-pipelines): introduce forcePushLatest variable 2025-01-22 23:09:25 +01:00
acb5dbfb28 ci(azure-pipelines): remove service dependencies contd 2025-01-22 22:58:29 +01:00
78b3a38076 ci(azure-pipelines): remove service dependencies contd 2025-01-22 22:57:53 +01:00
865073a6a1 ci(azure-pipelines): remove dependencies parameter 2025-01-22 22:57:07 +01:00
6112f9f229 ci(azure-pipelines): provide non-empty parameter service values 2025-01-22 22:55:43 +01:00
d35c524f99 ci(azure-pipelines): 2025-01-22 22:54:21 +01:00
7e014c037e ci(azure-pipelines): fix syntax 2025-01-22 22:39:43 +01:00
2cece492e9 revert(azure-pipelines): use pool on job level 2025-01-22 22:39:12 +01:00
e9dc8be826 ci(azure-pipelines): fix service pool 2025-01-22 22:35:40 +01:00
eec396ec98 ci(azure-pipelines): use DS2 pool for backend service 2025-01-22 22:34:28 +01:00
4ef188f2ed ci(azure-pipelines): disable dependsOn for service for now 2025-01-22 22:31:38 +01:00
bcfee0f14f ci(azure-pipelines): simplify service conditions contd 2025-01-22 22:29:19 +01:00
fdaaccb28a ci(azure-pipelines): simplify service conditions contd 2025-01-22 22:27:43 +01:00
53edb0dfeb ci(azure-pipelines): simplify service run conditions 2025-01-22 22:19:35 +01:00
c8a9e5a57d ci(azure-pipelines): fix service build condition contd 2025-01-22 22:14:50 +01:00
66879a4fb0 ci(azure-pipelines): fix service build condition 2025-01-22 22:11:08 +01:00
34fd73e17b ci(azure-pipelines): fix backend dependsOn type 2025-01-22 22:10:24 +01:00
a8e9a59edf ci(azure-pipelines): use reduce for dependsOn service mapping 2025-01-22 22:09:46 +01:00
e0d1777fb9 ci(azure-pipelines): add dependsOn to parameter for services 2025-01-22 21:50:02 +01:00
8c47b51cef ci(azure-pipelines): fix image build dependency contd 2025-01-22 21:41:59 +01:00
0ffbbfdb18 ci(azure-pipelines): fix image build dependency 2025-01-22 21:40:48 +01:00
7c6da61d13 ci(azure-pipelines): Build jobs depend on ImageBuild jobs now 2025-01-22 21:37:10 +01:00
ded2049f33 ci(azure-pipelines): add backend service 2025-01-22 21:13:58 +01:00
14b8406937 build(frontend): add dummy target for test-frontend 2025-01-22 12:02:36 +01:00
453c283438 build(frontend): only lint frontend/src files to avoid ignored ignore-patterns 2025-01-22 11:40:41 +01:00
6168349ed2 build(frontend): dont ignore well-known when linting 2025-01-22 11:26:06 +01:00
57bbc5ba9c build(frontend): ignore static and well-known when linting 2025-01-22 11:14:48 +01:00
ab3b01cbfd build(frontend): ignore webpack config in lint too 2025-01-22 11:13:33 +01:00
e85dfde4d9 chore(frontend): partially disable storage-manager util (broken and currently not used) 2025-01-22 11:01:27 +01:00
fd1edb292c build(frontend): ignore webpack config for eslint 2025-01-22 10:56:08 +01:00
0ad82f6275 refactor(frontend): eslint contd 2025-01-22 10:54:52 +01:00
f9f79b2a42 refactor(frontend): eslint 2025-01-22 10:51:33 +01:00
5c73ee676a build(frontend): frontend audit 2025-01-22 10:50:43 +01:00
be13a64d50 build(frontend): add lintfix npm script 2025-01-22 10:49:23 +01:00
9f8af30e6d build(frontend): ignore .stack folder for eslint 2025-01-22 10:48:42 +01:00
8f9f6ba8e2 build(frontend): add --color flag for eslint color in pipeline output 2025-01-22 10:35:34 +01:00
775ec4c948 ci(azure-pipelines): rename build steps for azure naming scheme 2025-01-21 23:56:12 +01:00
0c808ca393 build(frontend): add eslint 2025-01-21 19:03:33 +01:00
0e45938886 chore(frontend): modernize eslint config 2025-01-21 19:03:13 +01:00
1d357550d6 ci(azure-pipelines): rename build-steps 2025-01-21 18:46:19 +01:00
21d6975ea3 ci(azure-pipelines): parametrize build artifacts 2025-01-21 18:39:17 +01:00
efa14e0301 ci(azure-pipelines): fix template path 2025-01-21 18:37:41 +01:00
dfb97df72b ci(azure-pipelines): parametrize build steps 2025-01-21 18:36:33 +01:00
189205767f ci(azure-pipelines): rename service template 2025-01-21 18:17:43 +01:00
03d85be290 ci(azure-pipelines): reintroduce image-build conditions 2025-01-21 17:28:53 +01:00
5d54275446 ci(azure-pipelines): disable extraBuildOptions for now 2025-01-21 17:18:32 +01:00
e84e7e57d8 ci(azure-pipelines): fix templating contd 2025-01-21 17:14:47 +01:00
b51caba851 ci(azure-pipelines): add targetImage service parameter 2025-01-21 17:03:46 +01:00
e2f6ee4294 ci(azure-pipelines): fix service extraBuildOptions default 2025-01-21 16:56:40 +01:00
50c3134a1b ci(azure-pipelines): fix templating contd 2025-01-21 16:55:50 +01:00
31f670b143 ci(azure-pipelines): fix templating syntax 2025-01-21 16:53:28 +01:00
81c4838e29 ci(azure-pipelines): fix syntax 2025-01-21 16:50:16 +01:00
7717b2ce45 ci(azure-pipelines): temporarily remove image build conditions for refresh 2025-01-21 16:32:38 +01:00
60626cd841 ci(azure-pipelines): move variables decl to main yaml 2025-01-21 16:31:34 +01:00
3122a36ac8 ci(azure-pipelines): parametrize frontend service 2025-01-21 16:28:27 +01:00
12aee272c4 ci(azure-pipelines): add icons to frontend artifacts 2025-01-21 15:45:58 +01:00
5b8edf86ff ci(azure-pipelines): try to remove redundant npm-proxy call 2025-01-21 15:44:09 +01:00
733d6ea218 ci(azure-pipelines): remove debug prints 2025-01-21 15:42:59 +01:00
1d88e98fb4 ci(azure-pipelines): add PROJECT_DIR to env per-task 2025-01-21 15:23:55 +01:00
8e3c82c1e6 build(docker/frontend): remove LC_ALL 2025-01-21 15:18:14 +01:00
5e30ae8b5f ci(azure-pipelines): fix debug info 2025-01-21 15:14:49 +01:00
6c2b57ca4c ci(azure-pipelines): remove dummy backend image build 2025-01-21 15:13:49 +01:00
cfa10a1c16 ci(azure-pipelines): add debug info contd 2025-01-21 15:11:44 +01:00
315e668ff6 ci(azure-pipelines): tweak debug info 2025-01-21 15:05:11 +01:00
b7227f9ce3 ci(azure-pipelines): use Build.Repository.LocalPath as PROJECT_DIR 2025-01-21 14:57:53 +01:00
492a758723 ci(azure-pipelines): only rebuild frontend image on master or update/... branches 2025-01-21 14:46:01 +01:00
1cc140a1cc ci(azure-pipelines): fix push latest 2025-01-21 14:38:42 +01:00
e2ad23ab2b ci(azure-pipelines): temporarily pin frontend image build 2025-01-21 14:27:45 +01:00
956e939f9a ci(azure-pipelines): add more debug info 2025-01-21 14:23:28 +01:00
cd3c327c4c ci(azure-pipelines): add debug info 2025-01-21 14:10:17 +01:00
f463f3d503 ci(azure-pipelines): additionally set env vars for proxy in dependency task 2025-01-21 13:59:59 +01:00
4f7f54424c ci(azure-pipelines): set npm proxy manually 2025-01-21 10:46:13 +01:00
8b37d788a7 ci(azure-pipelines): dont use azure artifacts; fix node ca certs 2025-01-21 10:03:07 +01:00
47a7fe15fd ci(azure-pipelines): try npm login 2025-01-20 16:42:33 +01:00
8532af38a5 ci(azure-pipelines): build frontend dependencies in separate step 2025-01-20 16:15:23 +01:00
f3d0c3e2a8 ci(azure-pipelines): add debug info 2025-01-20 14:41:40 +01:00
44b84e1e83 ci(azure-pipelines): fix syntax contd 2025-01-20 14:17:27 +01:00
7263a19085 ci(azure-pipelines): fix syntax 2025-01-20 14:16:55 +01:00
d7c45dadac ci(azure-pipelines): fix syntax 2025-01-20 14:13:12 +01:00
47678dde2c ci(azure-pipelines): fix master branch check 2025-01-20 14:08:04 +01:00
351421e903 ci(azure-pipelines): fix branch ref 2025-01-20 14:04:19 +01:00
66fff83ff8 ci(azure-pipelines): fix syntax 2025-01-20 13:10:02 +01:00
10a9d8c51d build(Makefile): rename CONTAINER_CMD -> IMAGE; remove unnecessary make calls in Dockerfile 2025-01-20 13:06:00 +01:00
2e526e0cb3 ci(azure-pipelines): update frontend:latest on master 2025-01-20 13:04:12 +01:00
91273e57eb ci(azure-pipelines): parametrize image builds 2025-01-20 13:03:49 +01:00
18585db1aa build(docker/frontend): fix npm registry parametrization 2025-01-20 12:13:26 +01:00
0de102805a ci(azure-pipelines): remove entrypoint def 2025-01-18 04:02:00 +01:00
9bd7459849 ci(azure-pipelines): fix step def 2025-01-18 03:40:56 +01:00
ecd0a443b4 build(docker/backend): envify PROJECT_DIR for runtime access 2025-01-18 03:39:03 +01:00
0ae8eddc5b ci(azure-pipelines): use basic step script for frontend-compile 2025-01-18 03:38:31 +01:00
178bce90c9 build(docker/frontend): temporarily remove chromium install 2025-01-18 03:33:26 +01:00
82655fd4db build(docker/frontend): fix default make-target 2025-01-18 03:27:53 +01:00
9f490d16c3 ci(azure-pipelines): provide frontend image with non-terminating entrypoint on compile 2025-01-18 03:11:12 +01:00
aa44d6fe9c ci(azure-pipelines): add env vars to frontend container 2025-01-18 02:59:17 +01:00
101890ac2a build(docker/frontend): add locale env vars to stop perl from complaining 2025-01-18 02:50:47 +01:00
1406ea9c13 ci(azure-pipelines): add build-arg for custom npm registry 2025-01-18 02:44:51 +01:00
d02024138f ci(azure-pipelines): add PROJECT_DIR to make-call for frontend compile 2025-01-18 02:30:12 +01:00
999724dc85 ci(azure-pipelines): set make target via env for testing 2025-01-17 18:05:07 +01:00
a9fd747469 build(Makefile): avoid unnecessary double-static build for dependencies 2025-01-17 17:50:32 +01:00
2e45db2efa build(Makefile): mount project dir rw 2025-01-17 17:50:06 +01:00
714709894a build(docker/frontend): only preinstall dependencies instead of static 2025-01-17 17:49:41 +01:00
a80088fe66 build(docker/frontend): reintroduce cp with bind mount configured 2025-01-17 17:48:56 +01:00
ba8d39a7c5 build(docker/frontend): remove debris 2025-01-17 17:48:36 +01:00
adf53f07bc ci(azure-pipelines): replace backend image build with dummy script to stop unnecessary load 2025-01-17 17:47:59 +01:00
77c856b842 ci(azure-pipelines): rename jobs/tasks 2025-01-17 17:47:11 +01:00
64a8c0dee0 ci(azure-pipelines): remove npm tasks for frontend compile 2025-01-17 17:43:13 +01:00
42b1a8fcfe ci(azure-pipelines): switch back to DS1 until build for authorisation succeeds 2025-01-17 15:41:33 +01:00
1bd98525fa ci(azure-pipelines): temporarily remove job dependencies 2025-01-17 15:33:06 +01:00
e755b7a2b0 ci(azure-pipelines): use DS2 pool for backend image build 2025-01-17 15:24:11 +01:00
f4c83b3e96 ci(azure-pipelines): add npm tasks 2025-01-17 15:14:23 +01:00
f212d831d1 build(docker/frontend): remove make-entrypoint for more control over exec targets in pipeline 2025-01-16 14:56:55 +01:00
9d85d67ce8 ci(azure-pipelines): use uncontainerized make-targets in CompileFrontend job 2025-01-16 14:39:51 +01:00
fac186f5c7 ci(azure-pipelines): move frontend artifact push to compile job 2025-01-16 14:23:52 +01:00
7250392d5e ci(azure-pipelines): first try at publishing frontend build artifacts 2025-01-16 14:23:07 +01:00
7f7f3c4e9e ci(azure-pipelines): fix frontend image tags 2025-01-16 14:06:50 +01:00
ead1bcfeaa ci(azure-pipelines): exec CompileFrontend only after frontend image build succeeded 2025-01-16 13:58:25 +01:00
af69c8d4a7 ci(azure-pipelines): push frontend image 2025-01-16 13:56:29 +01:00
d0f5abf854 ci(azure-pipelines): fix backend image tags 2025-01-16 13:54:45 +01:00
866cc3d95d ci(azure-pipelines): fix frontend image tags 2025-01-16 13:53:50 +01:00
a9e6496db2 ci(azure-pipelines): list docker images for frontend image build (prepare push) 2025-01-16 13:42:42 +01:00
cd15ddea2f ci(azure-pipelines): add frontend build job 2025-01-16 12:01:07 +01:00
15f6dd9211 build(docker/backend): copy stack yamls before stack-install 2025-01-16 11:59:07 +01:00
88367a9219 chore(frontend): splice PROJECT_DIR into icon import sass 2025-01-16 11:27:59 +01:00
d2c8522ffe ci(azure-pipelines): separate frontend and backend image build into separate jobs 2025-01-16 10:48:11 +01:00
23dec225a9 build(docker/frontend): fix conditional npm proxy conf 2025-01-15 15:18:15 +01:00
7228868f08 ci(azure-pipelines): switch back to npm image for frontend builds with npm proxy 2025-01-15 15:10:46 +01:00
18adf4dfc7 ci(azure-pipelines): switch to npm-v2 for proxy usage 2025-01-15 14:56:40 +01:00
3d86cd3225 build(docker/frontend): configure npm proxy if supported 2025-01-15 14:55:15 +01:00
66b64b818b build(docker/frontend): switch order 2025-01-15 14:37:56 +01:00
e826856bea ci(azure-pipelines): use correct dockerfile for frontend build 2025-01-15 14:23:54 +01:00
318e9752f2 ci(azure-pipelines): add build tags 2025-01-15 13:39:57 +01:00
dac20928d4 ci(azure-pipelines): fix Bash@3 frontend task 2025-01-15 13:39:41 +01:00
1c25f06853 ci(azure-pipelines): switch frontend image build to Bash@3 task 2025-01-15 13:36:47 +01:00
34567311d0 ci(azure-pipelines): fix docker task syntax 2025-01-15 13:28:19 +01:00
d8425ac562 build(docker/backend): prebuild dependencies before COPY, temporarily COPY everything 2025-01-15 13:25:26 +01:00
61bd28a21c ci(azure-pipelines): add frontend image build 2025-01-15 13:22:53 +01:00
fb518ac4ef build(docker/frontend): prepare Dockerfile for pipeline usage 2025-01-14 18:41:03 +01:00
c9999d9b06 ci(azure-pipelines): rename backend task 2025-01-14 17:29:22 +01:00
e729cccf23 ci(azure-pipelines): do docker logout 2025-01-14 17:27:52 +01:00
4766dea3d5 ci(azure-pipelines): cleanup yaml 2025-01-14 17:27:01 +01:00
425804e4b6 build(docker/backend): refine COPY sources 2025-01-14 17:17:42 +01:00
6d0161c598 build(docker/backend): do stack-install before dependency build 2025-01-14 08:41:25 +01:00
3c3cabc909 build(docker/backend): remove debug prints 2025-01-14 08:40:39 +01:00
c3fee55090 build(docker/backend): remove debug prints 2025-01-13 22:25:51 +01:00
6f5cc4da20 ci(azure-pipelines): perform docker-login before any docker calls 2025-01-13 22:16:42 +01:00
f140342e2d ci(azure-pipelines): use Dockerfile in root dir 2025-01-13 19:00:50 +01:00
09a44d13cc ci(azure-pipelines): use Dockerfile with --file 2025-01-13 18:57:37 +01:00
67108a8f84 ci(azure-pipelines): use docker build in Bash@3 2025-01-13 18:55:10 +01:00
5787796eac build(docker/backend): try COPY instead of RUN cp 2025-01-13 18:49:19 +01:00
2149189394 ci(azure-pipelines): add bash debug output; checkout self 2025-01-13 18:43:14 +01:00
d455cb4f71 build(docker/backend): add more debug info 2025-01-13 18:35:39 +01:00
Sarah Vaupel
181b18460e Update azure-pipelines.yaml for Azure Pipelines 2025-01-13 17:27:44 +00:00
e8353f6200 build(docker/backend): add debug info 2025-01-13 18:20:03 +01:00
1dce3ab2b1 build(docker/backend): use cache mounts for apt-installs 2025-01-13 17:50:20 +01:00
1a344feaa3 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2025-01-13 17:17:17 +01:00
55d9097ca8 build(docker/backend): try mount param in RUN for dependency cache 2025-01-13 17:17:14 +01:00
Sarah Vaupel
9a25ae6d63 Update azure-pipelines.yaml for Azure Pipelines 2025-01-13 14:20:30 +00:00
Sarah Vaupel
33f33b1f44 Update azure-pipelines.yaml for Azure Pipelines 2025-01-13 14:12:03 +00:00
Sarah Vaupel
d441ff40ef Update azure-pipelines.yaml for Azure Pipelines 2025-01-13 14:06:32 +00:00
e90d11682b fix(lms): eliminate unlikely possible discrepancy for LMS deletion indicator
It was theoretically possible for LMS Learner deletion tag to be not correctly shown in LMS table.

Also see #2605 for further related issues.
2025-01-10 16:49:53 +01:00
19cc34d21f ci(azure-pipelines): tweak mount dir 2025-01-09 16:29:32 +01:00
9aa1de6a4a ci(azure-pipelines): change mount dir to work dir as reported from previous runs 2025-01-09 16:24:07 +01:00
0b9e55cfea ci(azure-pipelines): use /work/1 as mount-dir; copy repository recursively again 2024-12-20 16:59:26 +01:00
4669a47d9b build(docker/backend): copy complete directory to PROJECT_DIR 2024-12-20 16:28:41 +01:00
6acaa3f796 ci(azure-pipelines): use Pipeline.Workspace instead of Build.Repository.LocalPath 2024-12-20 16:19:58 +01:00
98880f67ee ci(azure-pipelines): use correct local-repository path 2024-12-20 16:07:19 +01:00
4fbf0ba72d build(docker/backend): fix typo 2024-12-20 15:50:30 +01:00
ef669aeb06 ci(azure-pipelines): supply fraport-internal haskell image url as build-arg 2024-12-20 15:42:48 +01:00
5bb77d8b2b chore(docker): remove obsolote image definitions 2024-12-20 15:40:18 +01:00
db9481cffb build(docker/backend): make FROM image and tag configurable by build-arg
use docker.io haskell image per default as build-arg, and later use fraport-internal args for pipeline
2024-12-20 15:39:12 +01:00
82ed04008a ci(docker/haskell): do not use root 2024-12-19 16:03:27 +01:00
6ddfbe959e ci(docker/backend): prepare Dockerfiles for separate image artifact push step 2024-12-19 14:22:22 +01:00
376c88e724 build(docker/backend): use BaseImage; add dependencies 2024-12-19 14:03:49 +01:00
b068e46480 build(Makefile): use YESOD_IP_FROM_HEADER to fix reverse-proxy issues 2024-12-15 01:28:26 +01:00
84a5cb37d9 build(docker/backend): switch to official stack snapshot image 2024-12-15 01:07:52 +01:00
1ab8a93b53 refactor: backport saltine (0.2.0.0->0.1.1.1) for compatibility with proper lts-18.0 stack snapshot image 2024-12-15 01:02:45 +01:00
3b4b1f2fa9 ci(azure-pipelines): tweak PROJECT_DIR and MOUNT_DIR 2024-12-10 16:08:31 +01:00
2b91095391 ci(azure-pipelines): add PROJECT_DIR and MOUNT_DIR build-args 2024-12-10 15:44:37 +01:00
16001df5be build(docker/backend): tmp-remove more deps 2024-12-10 15:33:29 +01:00
a2bdd4bbb8 build(docker/backend): remove unused dependency 2024-12-10 15:27:15 +01:00
13ec339f9b build(docker/backend): tmp-remove deps 2024-12-10 15:22:35 +01:00
ebae2b386e build(docker/backend): remove test-only dependencies temporarily 2024-12-10 15:18:00 +01:00
f47cb17230 build(docker/backend): remove locales (and thus tzdata) installs for testing purposes 2024-12-10 15:12:31 +01:00
d0cd45e60e build(docker/backend): add temporary tools FROM for pipeline test 2024-12-10 15:01:19 +01:00
09f22e52c7 build(docker/backend): remove unused dependency 2024-12-10 15:00:19 +01:00
3946090dab build(docker/backend): add debug print for apt sources info 2024-12-10 14:59:45 +01:00
2033976381 build(docker/backend): add texlive-base and more tex runtime dependencies 2024-12-10 14:40:51 +01:00
d8c88d167f build(Makefile): revisit stop targets 2024-12-06 17:03:50 +01:00
f8681826b2 build(docker/backend): add roboto and lualatex dependencies 2024-12-04 16:32:04 +01:00
ca4eac3af9 build(docker/backend): fix tzdata install requiring confirmation 2024-12-04 16:31:38 +01:00
6c525bc986 build(docker/backend): remove debug output 2024-12-04 16:30:35 +01:00
c3117dbdcd fix(ghci): ghci works now as expected 2024-12-02 17:38:59 +01:00
0e605386cc build(Makefile): add SRC option to ghci target 2024-12-02 16:32:41 +01:00
082dd74bb0 ci(azure-pipelines): proxy vars without parentheses 2024-11-28 14:03:45 +01:00
304c8c2ca9 ci(azure-pipelines): add multiple build-args 2024-11-28 12:01:43 +01:00
a20ade7c52 ci(azure-pipelines): fix newline escaping 2024-11-28 11:58:09 +01:00
dec0f2667d ci(azure-pipelines): add build args via arguments 2024-11-28 11:56:03 +01:00
609adaa960 build(docker/backend): remove debug info 2024-11-28 11:48:45 +01:00
8967837155 ci(azure-pipelines): try http(s) proxy without password 2024-11-28 11:46:48 +01:00
fc68777826 build(docker/backend): remove debug prints 2024-11-28 11:43:19 +01:00
d1126b3acf build(docker/backend): add debug info prints for ci 2024-11-28 11:40:20 +01:00
9df3b18680 ci(azure-pipelines): set http/https proxy env variables 2024-11-28 11:01:30 +01:00
a2bd5c35c8 build(docker/backend): reintroduce apt-get update 2024-11-28 10:57:24 +01:00
Sarah Vaupel
33ccd36a14 ci(docker/backend): remove apt-get update due to missing connection to archive.ubuntu.com 2024-11-26 13:05:34 +00:00
Sarah Vaupel
29427a02c6 chore(docker/backend): switch base image, print version info 2024-11-26 12:58:00 +00:00
Sarah Vaupel
fe9a92fd3f Update azure-pipelines.yaml for Azure Pipelines 2024-11-26 12:23:04 +00:00
cc7fa8333c chore(icons): contribute to #2397 by improving the comment instructions 2024-11-26 09:02:53 +01:00
26831fde6e build(Makefile): do not compile backend before start 2024-11-25 16:19:25 +01:00
ebbf52dd15 build(Makefile): switch back to yesod-devel for start-backend 2024-11-24 02:01:02 +01:00
fbc8271e86 build(Makefile): set PORT env var on start-backend 2024-11-24 02:00:43 +01:00
cbfcd17c77 build(utils/develop-status.pl): Changed output order. 2024-11-21 00:18:23 +01:00
9a281f040e fix(print): apcidents somehow include newlines after DB update; strip these 2024-11-18 12:36:05 +01:00
b844e3028c build(Makefile): ensure frontend compilation is done before starting backend 2024-11-17 01:02:18 +01:00
891a6e7c64 build(Makefile): compile-backend before start-backend for bin 2024-11-17 00:37:39 +01:00
1018e9dac5 build(Makefile): abandon yesod-devel for basic uniworx binary execution in start-backend 2024-11-14 00:31:20 +01:00
d646a03325 build(backend): use localhost with IPv6-enabled pg_hba.conf 2024-11-14 00:02:41 +01:00
81f689cfdf build(Makefile): update documentation 2024-11-13 04:00:52 +01:00
9f862bcfd6 build(Makefile): explicitely execute hpack on missing uniworx.cabal for robustness 2024-11-13 03:48:57 +01:00
cbf167d197 build(Makefile): add/reimplement shell-% and ghci targets 2024-11-13 03:37:46 +01:00
4d19773223 build(Makefile): resort to default .stack-work for all jobs 2024-11-12 01:15:02 +01:00
54ecbe4e7a Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-11 17:33:12 +01:00
Stephan Barth
3008a34b78 build(utils/dirsymlink.pl): Fixed handling of new files. 2024-11-11 17:32:45 +01:00
1f41aa8b37 build(Makefile): fix PHONY def of job-% 2024-11-11 17:28:09 +01:00
f92ae96eb2 build(Makefile): do not compile backend before starting yesod-devel 2024-11-11 16:45:06 +01:00
024d29fba8 build(backend): remove uniworxdev binary 2024-11-11 16:44:15 +01:00
Stephan Barth
7650468b5f build(docker/backend/Dockerfile): Added missing "make .job-start" 2024-11-11 15:04:22 +01:00
c818fcda69 build: implement .job-% dir mechanism for stack project dir with .stack-work 2024-11-11 14:28:27 +01:00
Stephan Barth
845769cdc0 build(utils/dirsymlink.pl): Fixed handling of hidden files. 2024-11-11 13:47:05 +01:00
Stephan Barth
dfea27ad41 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-11 13:45:33 +01:00
Stephan Barth
29d8bd371d build(utils/wrapmakelog.pl): Fix for recursive and dockerized make. 2024-11-11 13:44:38 +01:00
decccaee80 build(Makefile): rename image rebuild 2024-11-11 12:13:49 +01:00
f95b4bf804 build(Makefile): fix DEVELOPMENT var on start; set missing variables 2024-11-11 12:13:03 +01:00
ef7102ef9f ci(azure-pipelines): try docker build 2024-11-10 03:10:56 +01:00
5013bcb8e5 ci(azure-pipelines): use sudo 2024-11-10 03:09:14 +01:00
66c2c0bd18 ci(azure-pipelines): disable HelloWorld job 2024-11-10 03:08:34 +01:00
4519918292 ci(azure-pipelines): add debugging info to buildah install 2024-11-10 03:07:44 +01:00
aac5b0f17f ci(azure-pipelines): add buildah install attempt; disable BuildKit test 2024-11-10 02:54:23 +01:00
a97036ea7b ci(azure-pipelines): disable DockerTaskTest 2024-11-10 02:32:01 +01:00
38efd413d2 ci(azure-pipelines): add BuildKit test job 2024-11-10 02:29:19 +01:00
29edf22079 ci(azure-pipelines): remove yaml anchor 2024-11-10 02:09:00 +01:00
a2bacf8e12 ci(azure-pipelines): create basic Docker@2 task for building test image 2024-11-10 02:07:36 +01:00
8d8d78dc81 build(Makefile): disable buggy custom stack-work locking for now 2024-11-10 01:43:21 +01:00
3699d06c5a build(docker/backend): chmod new stack-work dirs 2024-11-10 01:42:43 +01:00
edf850cb50 build(Makefile): remove DEVELOPMENT flag on uniworxdb exec 2024-11-10 01:39:27 +01:00
0b70036a02 fix(LMS): fix #2235 by notifying LMS user upon reset 2024-11-08 13:47:16 +01:00
2691925557 build(Makefile): cleanup new stack-work dirs 2024-11-08 02:30:47 +01:00
b5e7b970e3 build(Makefile): make uniworxdb a compile- target instead of start- 2024-11-08 02:30:30 +01:00
Stephan Barth
02877e89b5 build(utils/makefilelogger.pl): Debug tools for Makefiles. 2024-11-08 02:15:46 +01:00
Stephan Barth
8a7aa117fa Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-07 18:54:55 +01:00
Stephan Barth
ef69845fc4 build(utils/dockerizedmake.pl): Helper tool to symlink a whole directory content. 2024-11-07 18:52:50 +01:00
70fa1961ca chore: gitignore 2024-11-07 17:44:07 +01:00
c8cb73d366 build(Makefile): CONTAINER_INIT and CONTAINER_CLEANUP for stack-work dir symlinking 2024-11-07 17:42:54 +01:00
e813c72684 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-07 17:40:13 +01:00
Stephan Barth
83249080ac Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-07 17:07:09 +01:00
Stephan Barth
cf0bd0211a build(utils/makehelp.pl): Introduced awareness for Make variables. 2024-11-07 17:03:25 +01:00
54e55fc36b build(Makefile): stop ignoring stack lock files 2024-11-07 16:59:19 +01:00
8bc133f0ed build(Makefile): remove parallelization option of services 2024-11-07 16:53:48 +01:00
365b7024c7 build(Makefile): remove .stack-work differentiation 2024-11-07 16:48:40 +01:00
6cd3cb88af build(Makefile): add start-frontend target 2024-11-07 16:47:12 +01:00
88e984d4e5 build(Makefile): use SET_CONTAINER_CMD to splice CONTAINER_CMD inside podman run 2024-11-07 02:25:58 +01:00
191afbd2c8 build(Makefile): remove some more debug echoes 2024-11-07 02:23:12 +01:00
6e721a55cf build(Makefile): fix CONTAINER_CMD quoting 2024-11-07 02:22:45 +01:00
0af2e452ef build(Makefile): make container name suffix identical to container file; remove some debug echoes 2024-11-07 01:27:45 +01:00
fba71e5e38 build(Makefile): rewrite log-% documentation 2024-11-07 00:56:06 +01:00
402a710fbf build(Makefile): build stack deps on missing stack.yaml.lock 2024-11-07 00:36:43 +01:00
25d1d5d14c build(Makefile): do not warn/error on non-existing current-dev 2024-11-07 00:36:20 +01:00
125b999dd0 build(Makefile): restrict stack builds to half the number of local cpu cores 2024-11-06 16:27:44 +01:00
5e49b73a0a build(Makefile): fix dependencies targets 2024-11-06 16:09:16 +01:00
6ab3983e80 build(Makefile): add frontend dependencies target 2024-11-06 16:08:04 +01:00
b99472288d build(Makefile): implement dependencies-backend target 2024-11-06 15:28:16 +01:00
Stephan Barth
e8d8aafccd build(Makefile): Work on stack-calls. 2024-11-04 18:57:45 +01:00
Stephan Barth
ad8edfd448 build(Makefile): Fixed start postgres 2024-11-04 17:52:56 +01:00
Stephan Barth
ba6a502591 build(Makefile): fix path of containerfile 2024-11-04 17:35:15 +01:00
Stephan Barth
0437537824 build(Makefile): make 'make log' work; mv containerfiles to .exited. 2024-11-04 17:28:01 +01:00
Stephan Barth
bdca968818 build(Makefile): fix typos in date and SERVICE_VARIANT 2024-11-04 16:55:04 +01:00
2efd49f21c Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-04 16:33:59 +01:00
0be36ca82a build(Makefile): fix SET_DEVELOP 2024-11-04 16:33:26 +01:00
Stephan Barth
0016905673 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-04 16:24:22 +01:00
Stephan Barth
7b54499013 build(Makefile): Ignore reattach errors. 2024-11-04 16:23:54 +01:00
de58227725 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-04 15:57:16 +01:00
80849f8c5e build(Makefile): fix shell; introduce enter for launching shells in running containers 2024-11-04 15:57:14 +01:00
Stephan Barth
6066d86670 Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-04 15:34:41 +01:00
Stephan Barth
a5d270ccf4 build(Makefile): Reattach container that are meant to be foreground. 2024-11-04 15:34:00 +01:00
b89ed41b5b build(Makefile): add missing SERVICE_VARIANT def 2024-11-04 15:18:17 +01:00
c9fbfc7e19 build(docker/database): fix postgres file paths 2024-11-04 15:17:47 +01:00
Stephan Barth
da35d404de build(Makefile): change 'make status' to show also dead container 2024-11-04 14:54:56 +01:00
6239978a6a build(Makefile): rework Makefile call structure 2024-11-04 14:46:40 +01:00
Stephan Barth
e38adb42b3 build(Makefile): Rewrite target structured names, continued. 2024-11-03 16:33:18 +01:00
1b5c02fffd Merge branch '145-build-system-rewrite' of https://dev.azure.com/fraport/Fahrerausbildung/_git/FRADrive into 145-build-system-rewrite 2024-11-03 02:12:54 +01:00
47cd2f3b1f build: remove unused debris 2024-11-03 02:12:51 +01:00
Stephan Barth
03dfe31b50 build(Makefile): Rewrite target structured names, continued. 2024-11-03 02:10:00 +01:00
Stephan Barth
efda54ad89 build(Makefile): Rewrite target structured names. 2024-11-01 07:05:29 +01:00
4bbab689cf build(Makefile): switch-develop target for manual develop switching 2024-10-30 14:47:40 +01:00
cd6e98f915 build(Makefile): add uniworx:dev flag to more stack calls 2024-10-30 03:04:43 +01:00
e20aa0139a build(Makefile): restructure icons generation 2024-10-30 03:03:16 +01:00
4d7f6158c9 build(Makefile): ensure develop for compile-backend 2024-10-30 01:09:57 +01:00
9c27263d63 build(Makefile): do not automatically create new develop on start; document for manual usage 2024-10-30 01:09:30 +01:00
90b8af8cc1 build(Makefile): set DEVELOPMENT ghc option based on PROD make var 2024-10-29 15:13:42 +01:00
06f48fe408 build(Makefile): remove deprecated stackopts 2024-10-29 14:56:50 +01:00
1510116083 build(Makefile): add fontawesome-source json as icons dependency 2024-10-29 14:54:19 +01:00
2eac288c25 ci(azure-pipelines): add license copyright identifier 2024-10-28 13:53:19 +01:00
569eab24d5 ci(azure-pipelines): modify test job name 2024-10-28 13:35:30 +01:00
9767070046 ci(azure-pipelines): modify test steps 2024-10-28 13:34:49 +01:00
4b8fd3f4d8 ci(azure-pipelines): rename pipelines yaml 2024-10-28 13:32:26 +01:00
8724fec74f ci(azure-pipelines): create initial azure-pipelines.yml 2024-10-28 13:26:42 +01:00
2ebfca4692 chore(release): 2024-10-25 16:04:02 +02:00
Stephan Barth
f2067bdb56 build(.gitlab-ci/version.pl): Can now automatically determine the remote repository. 2024-10-25 15:48:19 +02:00
f0bd9d57b5 chore(frontend): bundle svg files into static 2024-10-25 14:41:30 +02:00
a5994e33c2 build(Makefile): remove frontend manifest during clean 2024-10-25 04:45:48 +02:00
d4f264dc18 refactor: revisit static file embedding
remove memcached-based static caching, serve static files directly from binary embedding, remove frontend bundler entrypoint and widget generation (directly add js/css in siteLayout)
2024-10-25 04:40:24 +02:00
494be2d8dd build(frontend): use polyfill and babel esbuild plugins 2024-10-25 04:34:47 +02:00
864852311d build(frontend): update frontend dependencies (add more esbuild plugins) 2024-10-25 04:34:17 +02:00
8feb408777 chore(frontend): temporarily disable sodium-based frontend cryptography for browser compatibility 2024-10-25 04:33:23 +02:00
25953854c9 build(Makefile): fix bash shell targets 2024-10-25 01:24:50 +02:00
090f4410bb build(Makefile): connect to uniworx db on make psql 2024-10-24 04:10:34 +02:00
8302df0563 build(Makefile): add psql target 2024-10-24 03:44:16 +02:00
b46228df26 build(Makefile): deprecate .stack-work-build in favor of default .stack-work 2024-10-24 02:58:37 +02:00
caf4f7b6dc build(docker/backend): fix stack-work-dir for yesod-bin and default make target 2024-10-24 02:57:32 +02:00
403b1b951b build(Makefile): compile frontend before db-fill 2024-10-24 02:17:41 +02:00
bc51e46285 build(Makefile): always replace containers on new run 2024-10-24 02:17:19 +02:00
6b0fb8055f Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-24 02:11:24 +02:00
8926f71e96 build(Makefile): update help messages 2024-10-24 02:11:20 +02:00
Stephan Barth
a5344780aa Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-24 02:10:24 +02:00
Stephan Barth
30dfc142bd build(utils/develop-status.pl): Introduced command line options. 2024-10-24 02:09:50 +02:00
57bb495c82 build(Makefile): fix hoogle target 2024-10-24 02:01:21 +02:00
c4df5fc0a7 build(Makefile): improve hoogle container naming 2024-10-24 02:00:04 +02:00
464e1c0fc4 Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-24 01:51:28 +02:00
4c75196361 build(Makefile): revise container naming scheme 2024-10-24 01:51:01 +02:00
Stephan Barth
ba67e1323e build(utils/develop-status.pl): Fix which containers to display. 2024-10-24 01:41:15 +02:00
86b1e76be6 build(Makefile): more fixes on CONTAINER_NAME 2024-10-24 01:38:41 +02:00
86d6b202f2 build(Makefile): fix hoogle 2024-10-23 03:45:37 +02:00
5893c950d0 Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-23 01:58:48 +02:00
31f3cf842e build(Makefile): compile backend before uniworxdb 2024-10-23 01:58:46 +02:00
0ab16b2453 build(Makefile): also clean .stack-work.lock 2024-10-23 01:58:16 +02:00
e4fdeafc8b build(Makefile): fix CONTAINER_NAME for unworxdb 2024-10-23 01:57:47 +02:00
Stephan Barth
73fc92f33b Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-23 01:54:11 +02:00
Stephan Barth
91cea6aee5 build(utils/develop-status.pl): Added status for fradrive containers without container file. 2024-10-23 01:53:11 +02:00
72301adfe3 build(Makefile): improve container names for distinction between backend, hoogle and uniworxdb containers 2024-10-23 01:50:40 +02:00
f669eed080 build(Makefile): set container name for memcached 2024-10-23 01:18:45 +02:00
80a7bc4b08 build(Makefile): stop running containers before clean 2024-10-23 01:13:43 +02:00
8028a1f36b build(Makefile): fix stop-% 2024-10-23 01:13:03 +02:00
b5b8567074 build(Makefile): start-database for test 2024-10-23 00:51:44 +02:00
190836520b Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-21 18:45:08 +02:00
Stephan Barth
67395c4e78 build(utils/watchcontainerrun.sh): Less output on container stop. 2024-10-21 18:44:28 +02:00
Stephan Barth
05c255a62f build(utils/watchcontainerrun.sh): Further enhanced messages on container stop. 2024-10-21 17:47:51 +02:00
Stephan Barth
45ba635dca Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-21 17:38:23 +02:00
Stephan Barth
5cbbdbf121 build(utils/watchcontainerrun.sh): Enhanced messages on container stop. 2024-10-21 17:37:23 +02:00
0d773d9f3d build(Makefile): status target for container status 2024-10-21 17:25:27 +02:00
0d42970c6d build(Makefile): fix db work-dir 2024-10-21 17:07:02 +02:00
ef94ced729 build(Makefile): fix backend-test 2024-10-21 17:06:27 +02:00
2c6b43a3d8 build(docker/backend): make stack dirs deletable by all (i.e. clean) 2024-10-21 15:37:36 +02:00
81094515dc build(Makefile): fix log-% targets 2024-10-21 15:37:10 +02:00
8c66df1872 build(Makefile): run watchcontainerrun in image-run too 2024-10-21 15:36:50 +02:00
ddc51e2d7a build(Makefile): inline start.sh 2024-10-21 15:36:20 +02:00
ed88d9be05 build(Makefile): fix bad minio port 2024-10-21 15:14:52 +02:00
360182a538 build(docker/backend): chmod 777 for stack dirs 2024-10-21 15:14:28 +02:00
45a9bbad43 build(Makefile): fix bad container id due to echo 2024-10-21 15:14:10 +02:00
8fcae4dcd1 build(Makefile): introduce custom errors for deprecated targets and common mistakes 2024-10-21 00:38:24 +02:00
599c35c042 chore(backend): removed ref to widget file 2024-10-20 23:43:15 +02:00
41cb0c83eb chore(backend): include stylesheet in default layout 2024-10-20 23:41:03 +02:00
Stephan Barth
748542533b build(utils/develop-status.pl): Added status script for display of development state. 2024-10-20 16:38:46 +02:00
Stephan Barth
3028a4a33b build(Makefile): Fix $(DEVELOP) 2024-10-20 02:42:14 +02:00
Stephan Barth
6fd68c294e Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-20 02:07:55 +02:00
92d4874620 build(docker/backend): prebuild yesod-bin in image 2024-10-20 02:07:21 +02:00
a3dc9f64ec build(Makefile): remove debris and restructure 2024-10-20 02:06:28 +02:00
Stephan Barth
1ef9a340cd build(utils/watchcontainerrun.sh): Waiting at most 20 seconds for containerfile now. 2024-10-20 02:06:16 +02:00
7fb8b0f286 build(Makefile): apply computed port for minio server 2024-10-20 02:00:15 +02:00
a376ef9487 build(Makefile): fix oopsie 2024-10-20 01:54:49 +02:00
9e8057f6e7 build(Makefile): apply computed port for memcached 2024-10-20 01:54:33 +02:00
1212d20401 build(Makefile): remove serve-database 2024-10-19 23:41:59 +02:00
1321e8a308 build(Makefile): remove deprecated serve targets 2024-10-19 23:41:22 +02:00
1d1c31f7a9 build(backend): resort to host.docker.internal for service hosts 2024-10-19 23:38:16 +02:00
58c3c5e526 build(docker/backend): set default-target to start-backend 2024-10-19 23:37:38 +02:00
fa5fe60091 build(Makefile): replace serve with start 2024-10-19 23:37:08 +02:00
cec245fe8c build(Makefile): fix foreground and backend container runs 2024-10-19 23:36:37 +02:00
c1a84685f6 build(docker/backend): fix compile-backend 2024-10-18 20:27:17 +02:00
7227ee60e8 build(Makefile): fix stack dependencies 2024-10-18 20:10:31 +02:00
db2a5cb45e build(Makefile): do not always detach containers; introduce foreground and background container runs 2024-10-18 18:55:30 +02:00
0f990db1ea build(frontend): rework bundler (esbuild) asset and static file embedding using manifest 2024-10-18 18:06:38 +02:00
efe53ad5a1 build(Makefile): work on documentation 2024-10-17 05:30:11 +02:00
b975a6e96a build(Makefile): support --image-run-% for non-start targets 2024-10-17 05:28:37 +02:00
0d2bfaac8d build(Makefile): inline hoogle.sh (now a oneliner) 2024-10-17 05:23:08 +02:00
2e3153294a build(Makefile): abort with error when trying to start another singleton service 2024-10-17 05:22:36 +02:00
c73c1360ed build(Makefile): work on develop logic 2024-10-17 05:00:33 +02:00
b6f7e8af5f build(Makefile): add documentation (make help) 2024-10-17 04:59:03 +02:00
78dea1e17d build(Makefile): revise develop logic 2024-10-17 04:10:53 +02:00
9b16abc489 build(Makefile): work on clean 2024-10-17 03:59:37 +02:00
4956c6efe2 build(Makefile): make cleanup more failure-resistant 2024-10-17 00:38:28 +02:00
1837d73e84 build: remove deprecated shell scripts 2024-10-17 00:37:51 +02:00
bceda105bf build(Makefile): work on uniworxdb target 2024-10-16 23:53:05 +02:00
0e620eb136 build(Makefile): fix/enhance hoogle targets 2024-10-16 23:51:35 +02:00
84134c3042 build(backend): refactor uniworxdb targets 2024-10-16 23:50:41 +02:00
3b624b9a9f build: cleanup debris 2024-10-16 17:10:35 +02:00
0883e2de21 build(backend): rewrite backend hoogle.sh 2024-10-16 17:09:40 +02:00
b495fec65a build(backend): fix backend start.sh 2024-10-16 17:09:18 +02:00
415277c636 build: working watchcontainerrun logic in Makefile and Dockerfiles 2024-10-13 04:51:40 +02:00
5568e75f6a build(docker): make watchcontainerrun.sh more silent and working 2024-10-13 04:47:04 +02:00
Stephan Barth
86ca263566 build(utils/watchcontainerrun.sh): External container watcher added. 2024-10-13 03:58:10 +02:00
476ac5efb8 build(Makefile): fix start-frontend 2024-10-13 03:46:07 +02:00
9e5645879a build(docker/memcached): use mount dir 2024-10-13 03:14:03 +02:00
37b0369a0c build(Makefile): follow-logs 2024-10-13 02:45:08 +02:00
31346fd227 build(Makefile): fix start-hoogle 2024-10-13 02:12:16 +02:00
4d5ec665c1 build(docker): exec in runwrapper 2024-10-13 01:52:27 +02:00
918182cd87 build(backend): fix backend start.sh 2024-10-13 01:52:12 +02:00
d681220dfb build(Makefile): add package.yaml dependency for .stack 2024-10-13 01:42:07 +02:00
897b6686fe build(Makefile): only remove .stack on clean-all 2024-10-13 01:36:16 +02:00
9e3073ed6c build(docker/backend): add missing inotify dependency 2024-10-13 01:28:54 +02:00
669350884d build(Makefile): fix backend target call 2024-10-13 01:26:51 +02:00
f4688ff067 build(Makefile): replace prod- and dev-build targets with PROD variable 2024-10-13 01:21:27 +02:00
534568081f build(Makefile): add containerized-target for hoogle 2024-10-13 00:56:30 +02:00
59ccd61bb8 build(Makefile): hoogle as alias for start-hoogle 2024-10-13 00:50:43 +02:00
f27da5dc11 build(Makefile): work on start 2024-10-13 00:49:27 +02:00
376c74192e build(docker/minio): fix minio workdir creation 2024-10-11 13:13:11 +02:00
80e4c45a66 build(Makefile): introduce log targets, use separate stack-work-dirs for better caching 2024-10-11 13:00:22 +02:00
Stephan Barth
a8eaddde3a build(docker/memcached): Installs missing package. 2024-10-11 02:59:30 +02:00
3a5a169ca0 build(Makefile): work on start targets; custom minio and memcached Dockerfiles, and more 2024-10-11 02:44:28 +02:00
b9153c0767 build(docker/frontend): fix frontend dependency prebuild 2024-10-10 15:14:00 +02:00
e6bc5b5445 build: move port computer util 2024-10-10 01:31:12 +02:00
3b0029ba04 fix(avs): fix #225 by skipping firm updates entirely if AVS FirmInfo is unchanged for previously seen values for AVS User to be updated 2024-10-09 12:50:32 +02:00
e554048f5a fix(avs): avs firm update no longer may update wrong company
Note: noticed while working on #225
2024-10-09 12:50:32 +02:00
e59fff352f fix(avs): fix #224 repeated superior changes no longer occur
furthermore AdminProblems are only inserted if the same problem does not exist unsolved
2024-10-09 12:50:32 +02:00
d720a47425 Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-07 14:41:55 +02:00
Stephan Barth
c5409ad902 build(utils/watchrun.sh): File watcher for running commands. 2024-10-07 14:40:44 +02:00
848985cbb5 build(Makefile): refactor container run calls 2024-10-07 13:07:17 +02:00
3db65597fe build(Makefile): reintroduce well-known 2024-10-07 12:39:53 +02:00
67e659521e build(Makefile): always run containers interactively for better cancellation 2024-10-06 02:05:53 +02:00
bae8ccc45a build(Makefile): replace old webpack-based frontend bundling with static bundling using esbuild 2024-10-03 22:07:25 +02:00
1ed27efccf build(frontend): use esbuild-compatible svg include inside scss/sass files 2024-10-03 22:06:51 +02:00
cb9ce5b196 build(frontend): use esbuild instead of (to be deleted) webpack for bundling static files 2024-10-03 22:04:32 +02:00
6c862c98e9 build(webpack): switch to commonjs for webpack config 2024-10-02 23:53:18 +02:00
c7331db3ce build(backend): switch to localhost in settings.yaml 2024-10-02 23:51:08 +02:00
8a0da40793 build(Makefile): add documentation for help 2024-10-02 23:50:12 +02:00
c5f473a303 build(backend): tweak default settings 2024-10-02 15:43:24 +02:00
de357becbd build(frontend): tweak webpack config 2024-10-02 15:42:40 +02:00
6b5b1f0f41 build(Makefile): start memcached and minio containers for serving 2024-10-02 14:39:12 +02:00
1b447a330d Merge branch '145-build-system-rewrite' of gitea.uniworx.systems:fraport/fradrive into 145-build-system-rewrite 2024-10-01 10:00:56 +02:00
2295f54486 build(docker/database): use postgres-container given .d dir to automatically apply postgres config 2024-10-01 09:59:15 +02:00
09e53fda53 build(docker/database): add password to postgres uniworx user in schema 2024-10-01 09:58:23 +02:00
3c6af00f43 build(docker/database): relax pg_hba.conf 2024-10-01 09:57:59 +02:00
918a57748e build(backend): remove deprecated code 2024-10-01 09:57:24 +02:00
50d58108ed build(Makefile): fix serve-backend; rename uniworxdb-target 2024-10-01 09:56:40 +02:00
Stephan Barth
371cdf1e3e build(Makefile): unified phonyness of '--'-targets. 2024-09-23 12:21:18 +02:00
Stephan Barth
829058aea4 build(Makefile): containerized make help if no perl installed. 2024-09-23 11:57:46 +02:00
Stephan Barth
bb57451cbc build(Makefile): make help produces usable output. 2024-09-23 11:06:00 +02:00
Stephan Barth
1a5564031d build(Makefile): Help notification stub started. 2024-09-23 11:03:18 +02:00
cf76752894 build(docker/database): work on postgres config 2024-09-23 00:18:13 +02:00
ecb085ad10 build(Makefile): revise database-fill/clear/migrate/... target logic 2024-09-23 00:17:40 +02:00
599649fb25 build(docker/database): fix postgres FROM url 2024-09-22 02:37:55 +02:00
20552032de build(docker): allow backend container to connect to database container 2024-09-22 02:37:38 +02:00
052c361f1d build(Makefile): tweak .stack dep caching logic 2024-09-20 16:25:10 +02:00
d0f4704c15 build(docker/backend): improve dir handling 2024-09-20 04:40:24 +02:00
aa563bc91c build(backend): update stack.yaml 2024-09-20 04:39:52 +02:00
0b0502e5e0 build(Makefile): implement clean-all target to also cleanup containers, images, and volumes 2024-09-20 02:37:58 +02:00
01a75dc6e8 build(docker): resort to dockerhub images for the moment 2024-09-20 02:37:20 +02:00
0389fadd41 chore: gitignore 2024-09-19 16:49:12 +02:00
dfc314fa82 build(Makefile): update clean 2024-09-19 13:03:25 +02:00
734c82eff7 build(frontend): create well-known based on new i18n.json 2024-09-19 13:02:46 +02:00
793ed1af32 build(Makefile): clean more files and dirs 2024-09-19 11:34:24 +02:00
c574996714 build(Makefile): pass WATCH var to make inside container 2024-09-17 01:55:03 +02:00
4b0bbbd317 build(Makefile): add db-fill stub 2024-09-17 01:47:56 +02:00
9965b78ddb chore(frontend): update package.json (remove real-favicon-webpack-plugin) 2024-09-17 01:43:42 +02:00
2a49cea4de build(Makefile): add target to start interactive shells inside containers 2024-09-17 01:43:14 +02:00
d82cca843a build(Makefile): add %-shell stub 2024-09-17 01:27:45 +02:00
8f52c848e8 chore(frontend): update webpack config (remove realfavicon-gen) 2024-09-17 01:27:20 +02:00
d773906343 build(Makefile): revise assets targets 2024-09-17 01:12:22 +02:00
fea82d2cc7 chore: remove deprecated config and tests 2024-09-17 01:01:41 +02:00
d151d0ca07 build(docker/frontend): add imagemagick to frontend dependencies for favicon generation 2024-09-17 00:59:33 +02:00
f0ef27635a build(frontend): delete some unused favicon config 2024-09-17 00:53:15 +02:00
916de8d0ae build(frontend): fix faviconize dir removal 2024-09-17 00:52:54 +02:00
d063f6827c build(frontend): generate favicons based on svg using local tooling 2024-09-17 00:47:11 +02:00
6bc83f1418 ci(gitlab-ci): GIT_DEPTH per default considering only the last 10 commits, really... 2024-09-16 02:21:31 +02:00
e28c695eb6 ci(gitlab-ci): add debug print 2024-09-16 02:15:43 +02:00
c1e89b5046 ci(gitlab-ci): fix GIT_STRATEGY 2024-09-16 02:12:52 +02:00
db515f0041 ci(gitlab-ci): do full pull for dynamic pre-setup job 2024-09-16 02:11:56 +02:00
120e00ea2e ci(gitlab-ci): pull frontend artifacts from backend downstream pipeline 2024-09-16 01:51:13 +02:00
e059082cf6 ci(gitlab-ci): add config/webpack.yml to frontend artifacts 2024-09-15 15:01:14 +02:00
3833a97a07 build(docker/database): EXPOSE correct database port 2024-09-15 03:50:09 +02:00
59edebe1cf build(docker): use "host" as --network for docker runs 2024-09-15 03:44:14 +02:00
08f2b5e56a build(docker): publish database port for serve 2024-09-15 03:41:38 +02:00
5b5e33566a build(docker/backend): properly pulish exposed backend ports on serve 2024-09-15 02:55:59 +02:00
ef66ab1538 build(Makefile): run containers interactively (-it) when serving 2024-09-15 01:59:08 +02:00
320f848aa9 ci(gitlab-ci): switch to custom (iso-like, but image tag friendly) date format for image versioning 2024-09-13 18:42:07 +02:00
b928af40e6 ci(gitlab-ci): switch to branch-first, image-type second for container registry destination 2024-09-13 18:23:40 +02:00
e77b159c02 ci(gitlab-ci): use last modified iso-date instead of commit count for frontend/backend image versioning 2024-09-13 18:20:30 +02:00
746e8a4d16 ci(gitlab-ci): git-log --all commits for frontend and backend dependencies for image version 2024-09-13 17:47:26 +02:00
8aec2676d0 ci(gitlab-ci): add more debug output 2024-09-13 17:42:55 +02:00
973e7657b4 ci(gitlab-ci): add debug output for dynamic setup 2024-09-13 17:40:28 +02:00
45d0e79649 ci(gitlab-ci): fix backend container rules syntax 2024-09-12 15:59:25 +02:00
ce86bbf47a build(docker/frontend): fix if-then-else syntax 2024-09-12 11:49:47 +02:00
fa4b77b0ee ci(gitlab-ci): GIT_STRATEGY = none for wait container jobs 2024-09-12 11:44:05 +02:00
6005680b38 ci(gitlab-ci): add more debug output for container builds 2024-09-12 11:40:46 +02:00
a6873fefdd ci(gitlab-ci): add missing frontend wait container var 2024-09-12 11:36:43 +02:00
48b13c08a6 ci(gitlab-ci): fix backend container prod rules 2024-09-12 11:33:57 +02:00
774260fa3a ci(gitlab-ci): prohibit the container waiters (for MRs) to wait longer than 3h 2024-09-12 11:31:48 +02:00
4513634a0c ci(gitlab-ci): use curl instead of wget again; more output for wait 2024-09-12 11:30:12 +02:00
7600862444 ci(gitlab-ci): fix backend container rules 2024-09-12 11:23:28 +02:00
672bb8708c ci(gitlab-ci): set correct build-args for container builds 2024-09-12 01:11:55 +02:00
f8886e02a7 ci(gitlab-ci): move buildah yum install inside script 2024-09-12 01:05:40 +02:00
e9cbb0771d ci(gitlab-ci): fix IMAGE_EXISTS grep 2024-09-12 01:04:23 +02:00
4d0bcca246 ci(backend): fix backend pipeline targets 2024-09-12 00:55:50 +02:00
56c26cdc04 ci(frontend): fix frontend pipeline targets 2024-09-12 00:54:05 +02:00
2d1cd421c7 ci(gitlab-ci): remove debug prints 2024-09-12 00:49:17 +02:00
770be6c00f ci(gitlab-ci): use correct package manager for installing wget 2024-09-12 00:46:37 +02:00
4240eb9ad2 ci(gitlab-ci): install wget 2024-09-12 00:43:06 +02:00
ee933de99f ci(gitlab-ci): use wget instead of curl 2024-09-12 00:40:56 +02:00
90ab22ce16 build(Makefile): cleanup; add .assets no-op target for caching 2024-09-12 00:21:53 +02:00
2aae4cb045 build(Makefile): fix frontend-compile subcalls 2024-09-11 01:10:59 +02:00
d77f372158 build(Makefile): fix compile dev/prod logic 2024-09-11 00:59:06 +02:00
1f0cd1066a build(Makefile): work on make serve 2024-09-11 00:37:36 +02:00
e9d4174b83 chore(release): 27.4.79 2024-09-10 17:56:40 +02:00
90613faf72 Merge branch 'fradrive/jost' 2024-09-10 17:55:52 +02:00
6a070a6775 fix(supervision): fix #181 by unifying deletion of supervision 2024-09-10 17:47:09 +02:00
ea113cf57a chore(login): limit number of suggestions for dummy development login for convenience 2024-09-10 17:45:27 +02:00
6ffc49ae0e chore(avs): auto licence synch preview show AVS-No as well 2024-09-10 12:36:52 +02:00
ab8b17229a chore(health): show db time on status page and status time diffs in a human readable format 2024-09-09 16:41:43 +02:00
6709d27732 build(Makefile): work on serving 2024-09-09 16:21:11 +02:00
74f7633837 fix(notifications): fix #180 qualification expiry notification are sent only once 2024-09-09 15:34:41 +02:00
609db460f6 chore: gitattributes 2024-09-09 14:11:33 +02:00
bc6ec24b84 build(Makefile): Better container control.
More careful tracking of when to call container so that container is not called in a container but is always called when needed. Also renamed several targets to achieve this.
2024-09-09 13:51:05 +02:00
277ae187f5 build(Makefile): work on start targets 2024-09-06 05:59:44 +02:00
faf4cc8c03 build(docker/backend): update backend Dockerfile for MOUNT_DIR and PROJECT_DIR update 2024-09-06 05:16:44 +02:00
04030ce6f0 build(Makefile): make .stack target phony 2024-09-06 05:16:17 +02:00
0a2ab4129e build(Makefile): major Makefile makeover 2024-09-06 05:11:27 +02:00
998b06d9af build(docker/frontend): Added configuration options for whether to store compilation results in the image or write it back to the file system. 2024-09-06 03:07:02 +02:00
d92d23bc99 chore(release): 27.4.78 2024-09-05 17:55:54 +02:00
4959736c90 Merge branch 'fradrive/jost' 2024-09-05 17:55:09 +02:00
ade27e6479 fix(avs): fix #178 by deleting old superiors for individual users 2024-09-05 17:53:18 +02:00
cbadef0a73 chore(mail): fix #179 reorder attachments and guess PDF pin password in Text display 2024-09-05 16:28:20 +02:00
2a27a1efa6 fix(avs): fix #124 avs auto synch filter working
also, provide test facility for auto synch
2024-09-05 16:27:10 +02:00
620e3e4700 fix(mail): fix #179 by adding download links for PDF attachments 2024-09-05 14:09:50 +02:00
426ea5b170 ci(gitlab-ci): use new registry-waiting procedure for backend container 2024-09-05 12:36:06 +02:00
35faf1422c chore(docker): remove deprecated Dockerfile 2024-09-05 12:25:29 +02:00
b0fe5c5b47 build(docker/backend): apt-get update right before each install 2024-09-05 12:23:32 +02:00
c10715fdfc build(docker): replace docker compose with podman and link Dockerfiles to root dir instead 2024-09-05 12:23:04 +02:00
a96dc946a8 build(docker/frontend): bind-mount project root to /tmp in Dockerfile 2024-09-05 02:36:27 +02:00
a865f2f159 build(docker): update compose.yaml 2024-09-05 02:35:47 +02:00
a1bbd05e68 ci(gitlab-ci): install curl for wait for container 2024-09-05 02:04:49 +02:00
1fd0abb8e8 ci(gitlab-ci): fix the bash syntax fix 2024-09-05 02:01:59 +02:00
f79a024dca ci(gitlab-ci): fix bash syntax (ugh) 2024-09-05 01:57:44 +02:00
3fcdbdf7f2 build(docker): update compose.yaml 2024-09-05 01:51:31 +02:00
42cc5cc4a2 build(docker/frontend): always update apt cache before install 2024-09-05 01:51:08 +02:00
a792bdeb2f build(Makefile): add local release target 2024-09-05 00:54:20 +02:00
9625bcbf4b ci(gitlab-ci): fix bash test syntax 2024-09-05 00:34:34 +02:00
0488edf7ae ci(gitlab-ci): add wait job for frontend container in merge request pipelines 2024-09-05 00:29:35 +02:00
5551f869e3 ci(gitlab-ci): change curl token 2024-09-05 00:13:56 +02:00
f0798e8836 chore(avs): debug automatic avs licence synch within admin avs test page 2024-09-04 18:08:08 +02:00
3c5edb1b97 fix(avs): typo in superior remark, towards #178 2024-09-04 16:29:12 +02:00
71afd4a0df docs(gitlab-ci): tweak comments 2024-09-04 06:00:34 +02:00
fa02a0727a build(docker/fradrive): update release Dockerfile to copy bin 2024-09-04 05:32:46 +02:00
c47d1c01f8 ci(backend): fix release container rules 2024-09-04 05:30:40 +02:00
dfc83b7b3c ci(backend): add release job to backend-prod downstream pipeline 2024-09-04 05:28:42 +02:00
034be6e2c9 ci(gitlab-ci): fix curl more 2024-09-04 05:23:22 +02:00
be75627bc0 ci(gitlab-ci): fix curl 2024-09-04 05:17:41 +02:00
b5f2f4ff0e ci(gitlab-ci): use CI_JOB_MANUAL for container setup 2024-09-04 04:59:15 +02:00
e5eae3da2c ci(gitlab-ci): fix container rules 2024-09-04 04:57:02 +02:00
c3722693ad ci(gitlab-ci): work on container rebuilds 2024-09-04 04:52:27 +02:00
2f8e6bc30b ci(gitlab-ci): fix syntax even more 2024-09-04 04:41:01 +02:00
b549f0027f ci(gitlab-ci): try to fix syntax 2024-09-04 04:31:01 +02:00
597a611f58 ci(gitlab-ci): fix syntax 2024-09-04 04:24:47 +02:00
3c71388a32 ci(gitlab-ci): fix syntax 2024-09-04 04:21:48 +02:00
fc57bdffb5 ci(gitlab-ci): replace manual frontend container build
check if image already exists in the registry and build if not; also rebuild on manual run
2024-09-04 04:18:53 +02:00
d4d18a968c build(frontend): update karma config 2024-09-04 03:18:46 +02:00
4f7855b9ee fix(avs): acs auto synch had inverted success/failure
also: some minor typo fixes
2024-09-03 12:53:51 +02:00
c7d5cbfb49 build(frontend): fix webpack config 2024-09-03 02:44:26 +02:00
f4ee39c717 build(docker/frontend): remove debug output 2024-09-03 02:17:25 +02:00
fd51a1ce5e build(frontend): fix webpack config 2024-09-03 02:16:16 +02:00
03aa1c6837 chore(frontend): eslint 2024-09-03 02:04:35 +02:00
6e42c3d1c7 build(frontend): fix babel config 2024-09-03 01:59:49 +02:00
483f3f7e05 build(frontend): fix frontend webpack paths 2024-09-03 01:57:36 +02:00
6854201b0f build(frontend): add missing dependencies for webpack config 2024-09-03 01:57:15 +02:00
7b08f37a51 build(frontend): update babel config 2024-09-03 01:56:48 +02:00
68398fdcc6 build(frontend): disallow require, update webpack config for js instead of cjs 2024-09-03 01:43:39 +02:00
115d2e2629 build(frontend): account for moved eslint config file with new syntax 2024-09-03 01:42:47 +02:00
de6811372b build(Makefile): clean .cache 2024-09-03 00:43:03 +02:00
3fcb7d2b4e build(docker/frontend): remove deprecated and unsafe babel-preset-env dependency by tweaking babel config 2024-09-02 16:02:33 +02:00
0ecba9f829 build(docker/frontend): fix babel and webpack config for new node version 2024-09-02 15:50:26 +02:00
95e1f03d31 Merge branch '145-build-system-rewrite' of ssh://gitlab.uniworx.de/fradrive/fradrive into 145-build-system-rewrite 2024-09-02 13:42:51 +02:00
547f34d2ec chore(release): 27.4.77 2024-09-02 10:50:31 +02:00
08788427a8 Merge branch 'fradrive/jost' into 'master'
HOTFIX(avs): switch company did not always increase priority

Closes #175 and #174

See merge request fradrive/fradrive!41
2024-09-02 08:42:32 +00:00
1e896da4a3 chore(avs): prepare superior update shortcircuit for future 2024-09-02 09:08:44 +02:00
025388a2f2 ci(gitlab-ci/version.pl): Implemented changelog handling in version.pl 2024-09-01 13:08:52 +02:00
7e5c256b4c fix(avs): company superiors are now irregular supervisors and old ones are deleted
DETAILS:

Superiors:
- Superiors do not become Company-Default-Supervisors automatically
- Superiors become irregular supervisors without rerouting, existing supervisions are not changed
- Superiors become company users at equal-to-max priority, if not already

For each AVN User update:
- if superior change for unchanged company:
    all company supervisions with remark "Vorgesetzter" are removed
    create admin problem that notifies about superior change (special if new superior could not be created)
- all company associates are irregularly supervised by the new superior with remark "Vorgesetzer"

Questions:
 - company had superior, but no longer: just remove superior-supervisions, do not report admin problem?
 - Problem: superior changed, but we first encounter this through a user changing company. Change is not detected at this point, old superiors remain until an old company associate is updated too
2024-08-30 17:41:33 +02:00
ae235bf269 chore(webpack): update webpack config for major node and npm update 2024-08-29 18:49:59 +02:00
b4a59f6b02 chore(package.json): add/fix more frontend dependencies 2024-08-29 18:49:22 +02:00
43319fbcca chore(admin): unreachable page offers convient avs and ldap synch buttons 2024-08-29 18:12:10 +02:00
d25ce1a011 chore(package.json): upgrade and fix dependencies 2024-08-29 18:02:07 +02:00
f9dd14ca9b chore(package.json): remove orphan definitions and scripts 2024-08-29 17:44:30 +02:00
863010a630 chore(package.json): upgrade dependencies and remove unnecessary packages 2024-08-29 17:43:31 +02:00
f946e99da3 fix(ldap): no more timeout for ldap synch all button 2024-08-29 16:45:39 +02:00
6da2146793 build(docker/frontend): add debug info 2024-08-29 16:41:06 +02:00
2c5423e869 ci(gitlab-ci): fix release needs 2024-08-29 16:38:39 +02:00
f2072ca31b ci(gitlab-ci): unite release:prepare and release:changelog jobs 2024-08-29 16:37:55 +02:00
5ae515594d ci(gitlab-ci): use new versioning script to compute release version 2024-08-29 16:35:17 +02:00
45d1480181 build(docker/frontend): upgrade nodejs version
14.7.1 -> 20.17.0, probably with a lot yet untreated breaking changes
2024-08-29 16:28:41 +02:00
cfe2318f81 fix(avs): attempt LDAP upsert before creating avs users 2024-08-29 16:15:16 +02:00
64ff002ffb chore(firm): provide more filters for supervisors
also fix build #175
2024-08-29 14:34:37 +02:00
8397c468a0 fix(firm): fix #175 by separating superiors in firm tables and selections 2024-08-28 17:50:44 +02:00
81721b0794 chore(status): improve readability of time spans 2024-08-28 10:45:11 +02:00
40dadd5876 fix(firm): fix #174 by adding address search filter to all company view 2024-08-28 10:44:27 +02:00
b7e5b8f111 fix(model): flip erroneous boolean SQL default for CompanyPostalAddress
changing this SQL default value now is admittedly too late, as the damage is already done, but documents the right default value nevertheless
2024-08-28 09:55:57 +02:00
3257926da7 build(docker/frontend): pin nodejs version 2024-08-28 04:19:40 +02:00
82838a22b5 ci(gitlab-ci): fix rules for container rebuilds 2024-08-28 03:15:11 +02:00
096082cb67 build(docker/backend): set stack root outside build dir to avoid overwrites 2024-08-28 03:09:36 +02:00
71d3ea01a5 ci(gitlab-ci): revise release rules 2024-08-28 02:50:13 +02:00
5d6c7f6d13 ci(gitlab-ci): fix release-rules 2024-08-28 02:28:40 +02:00
4d882b1dd3 ci(gitlab-ci): revisit GIT_STRATEGY for builds 2024-08-28 02:27:10 +02:00
5a505085de build(docker/fradrive): update fradrive Dockerfile for final release container 2024-08-28 02:13:50 +02:00
8570bac39e ci(gitlab-ci): work on release jobs 2024-08-28 02:12:47 +02:00
8ec2875590 fix(avs): switch company did not always increase priority 2024-08-27 16:23:42 +02:00
6d1b177ce9 Merge branch 'fradrive/jost' into 'master'
Fradrive/jost - two minor fixes

See merge request fradrive/fradrive!40
2024-08-26 18:04:38 +00:00
9c82558d71 fix(user): fix pagination and count for supervision tables 2024-08-26 17:40:57 +02:00
db519d3bcf ci(gitlab-ci): fix release needs 2024-08-26 15:53:21 +02:00
5471a99475 ci(gitlab-ci): add release stub; use GIT_STRATEGY none for frontend and backend downstreams 2024-08-26 15:52:05 +02:00
e8f9c21b7c chore(problem): admin problem filtering works on full text now 2024-08-26 15:17:01 +02:00
6214d08558 ci(gitlab-ci): fix backend image dependencies 2024-08-26 14:32:17 +02:00
b5635fe992 ci(gitlab-ci): make frontend and backend images dependent on resprective package lists 2024-08-26 14:26:40 +02:00
476e4ab7b9 ci(docker/frontend): copy CI_PROJECT_DIR to new dir from mount 2024-08-26 13:57:05 +02:00
64394fdc65 ci(docker/backend): remove debug prints 2024-08-26 13:56:31 +02:00
6f8e7062fa ci(gitlab-ci): fix artifact paths for frontend and backend downstreams 2024-08-26 13:56:08 +02:00
1658e3bb22 ci(docker/backend): copy files correctly 2024-08-26 13:47:24 +02:00
0edc48020c ci(docker/backend): mkdir destination workdir 2024-08-26 13:37:45 +02:00
2d4f4f68df ci(docker/backend): mount CI_PROJECT_DIR to tmp dir and copy to WORKDIR instead 2024-08-26 13:29:39 +02:00
a8c2d04a15 ci(docker/backend): disable custom stack root 2024-08-25 21:13:16 +02:00
46fbbe5fdb ci(docker/backend): mount CI_PROJECT_DIR as volume for buildah image build RUNs 2024-08-25 18:36:18 +02:00
da9bd08dcb ci(gitlab-ci): change --build-context for buildah image builds 2024-08-25 18:24:26 +02:00
3197c4700f ci(docker/frontend): pre-make frontend dependencies on image build 2024-08-25 18:08:30 +02:00
79956e7af9 ci(docker/backend): add debug output 2024-08-25 18:08:10 +02:00
29b4d84d31 ci(docker): use --build-arg for providing ARG during buildah image builds 2024-08-25 17:49:38 +02:00
e385819ea3 ci(docker): use ARG instead of ENV for PROJECT_DIR 2024-08-25 17:39:27 +02:00
9d18b74ec5 ci(gitlab-ci): control image workdir via env var 2024-08-25 17:30:22 +02:00
9c0903bd4f ci(docker/backend): remove unnecessary ADDs 2024-08-25 17:00:37 +02:00
0a047ea6c7 ci(docker/backend): pre-make backend-dependencies 2024-08-25 16:51:35 +02:00
d5fe326aea Merge branch '145-build-system-rewrite' of ssh://gitlab.uniworx.de/fradrive/fradrive into 145-build-system-rewrite 2024-08-25 16:07:48 +02:00
d03c559111 ci(docker/backend): add missing dependencies
add llvm dependency to backend Dockerfile
2024-08-25 16:07:21 +02:00
fceaa0b5cf ci(gitlab-ci): Do not display blocked on unused manual container builds. 2024-08-25 16:06:16 +02:00
68eeacf3c2 ci(gitlab-ci): fix syntax 2024-08-25 06:48:42 +02:00
1184d54ef1 ci(gitlab-ci): prod build 2024-08-25 06:22:53 +02:00
b9b45ed152 ci(gitlab-ci): unify setup and containers stages 2024-08-25 06:10:41 +02:00
a430bf3827 ci(gitlab-ci): cleanup dynamic frontend and backend downstream pipelines 2024-08-25 05:57:48 +02:00
6df013e4c0 ci(gitlab-ci): always execute setup:dynamic job 2024-08-25 05:39:03 +02:00
ce34fc1aed ci(gitlab-ci): restructure setup and containers stages
rename stages and jobs in prepare/setup and new containers stage
2024-08-25 05:34:40 +02:00
d7821672e5 ci(docker/frontend): pass CHROME_BIN env var to make 2024-08-25 05:28:50 +02:00
d3370a42ac ci(gitlab-ci): remove obsolete make env-var 2024-08-25 05:27:58 +02:00
da535be0d4 ci(gitlab-ci): improve refs 2024-08-25 05:23:00 +02:00
cd4eae08cf ci(gitlab-ci): fix syntax 2024-08-25 05:17:02 +02:00
35e77e2d1d ci(gitlab-ci): make container builds independent from code builds 2024-08-25 05:07:29 +02:00
b45b7452ea ci(gitlab-ci): add chromium to frontend dependencies 2024-08-25 04:45:18 +02:00
0d40207fe3 ci(gitlab-ci): Separation of build and manual rebuild of frontend-/backend-environment containers. 2024-08-25 03:11:13 +02:00
8b4801111d ci(gitlab-ci): Use gitlab container runner instead of podman in docker (frontend part) 2024-08-24 18:49:35 +02:00
858d2d3386 ci(gitlab-ci): Use gitlab container runner instead of podman in docker (so far only backend) 2024-08-24 18:27:37 +02:00
f3df449693 ci(gitlab-ci): Statement of default image for downstream pipelines. 2024-08-24 18:22:14 +02:00
675dd364df ci(gitlab-ci): make container builds manually triggerable 2024-08-24 17:41:50 +02:00
c04428e33b ci(gitlab-ci): fix pipeline 2024-08-24 17:32:39 +02:00
c177ff826e ci(gitlab-ci): separate frontend and backend downstreams
separate dynamic ci-yaml into two dynamic yamls for frontend and backend
2024-08-24 17:30:14 +02:00
333e8f7a9a ci(gitlab-ci): remove debris
remove deprecated/unused stuff in .gitlab-ci folder
2024-08-23 22:20:37 +02:00
0eb90845de ci(gitlab-ci): fix yaml location
move dynamic gitlab-ci yaml to proper place
2024-08-23 22:11:07 +02:00
fdd05a0b20 ci(gitlab-ci): fix script permissions
make dynamci.pl executable
2024-08-23 22:08:42 +02:00
33ce61d662 ci(gitlab-ci): fix dynamic job dependencies
remove unnecessary before_script for dynamic:execute step
2024-08-23 22:06:01 +02:00
85d43f5b77 chore(gitlab-ci): add dependencies for dynamic jobs 2024-08-23 21:58:35 +02:00
d2a80f20b6 chore(gitlab-ci): introduce dynamic ci for image versioning; rename stages and jobs 2024-08-23 21:55:25 +02:00
e1a02879d6 Merge branch 'fradrive/jost' into 'master'
chore(health): augement #154 by adding option to disable interface warnings

See merge request fradrive/fradrive!39
2024-08-22 18:08:52 +00:00
109e845db6 chore(problem): towards admin problem filtering 2024-08-22 17:44:19 +02:00
53abdb7cc3 chore(health): augement #154 by adding option to disable interface warnings
Also:
- add usage explanation
- show intervals in a human readable form
2024-08-22 17:28:28 +02:00
6f5c74f1ca chore(gitlab-ci): make image needs optional 2024-08-22 03:12:31 +02:00
303a6ca3f6 chore(gitlab-ci): add changes rules to containers jobs 2024-08-22 03:04:53 +02:00
97446aa9ef Merge branch 'fradrive/jost' into 'master'
minor update

Closes #154 and #5

See merge request fradrive/fradrive!38
2024-08-21 17:59:22 +00:00
407ba543a1 chore(health): fix #154 by adding interface warning threshold edit handler 2024-08-21 17:34:19 +02:00
f61c35cfe7 refactor(companies): mark table columns showing only prime company as such, fix #5
- also improve performance by changing dbtProj/selectList into a subselect
- fix #5 no longer sensible, as most are single values to be displayed right away
2024-08-21 11:52:29 +02:00
3f1e351d54 chore(gitlab-ci): apply creds to buildah-push 2024-08-21 03:29:46 +02:00
de94223285 chore(gitlab-ci): fix registry var 2024-08-21 03:24:11 +02:00
0bdc63040d chore(gitlab-ci): restructure containers stage 2024-08-21 03:21:10 +02:00
200fc96208 chore(docker): remove obsolete ADD of project root 2024-08-21 03:20:47 +02:00
b0972bb154 fix(mail): display html emails no longer distorts page
html is filtered once through pandoc, as proposed in #2
2024-08-20 12:35:16 +02:00
3f2f57b3db chore(docker/podman): work on podman config 2024-08-19 18:35:19 +02:00
2ec37a29da chore(gitlab-ci): fix podman config 2024-08-19 18:18:58 +02:00
46c56652a3 chore(docker): add privileged to compose.yaml 2024-08-19 18:17:25 +02:00
581316fb42 chore(gitlab-ci): fix podman syntax 2024-08-19 18:13:21 +02:00
ad2f44a82c chore(docker/podman): work on podman config 2024-08-19 18:05:55 +02:00
6e3d0aaa2e chore(gitlab-ci): work on podman config 2024-08-19 18:03:58 +02:00
057a9947f6 chore(docker/podman): work on podman config 2024-08-19 18:01:14 +02:00
8bc3663ee2 fix(linter): minor bug in exam-correct.hs 2024-08-19 17:52:11 +02:00
d69369ff0a chore(docker/podman): even more work on podman config 2024-08-19 04:57:35 +02:00
06ecf6a2e9 chore: update gitignore 2024-08-19 04:50:29 +02:00
febf8d8aa7 chore(docker/podman): even more work on podman config 2024-08-19 04:41:22 +02:00
7e006f4ed1 chore(docker/podman): more work on podman config 2024-08-19 04:39:45 +02:00
846b74dc02 chore(docker/podman): work on podman config 2024-08-19 04:35:44 +02:00
137b46ee9c chore(docker/podman): tweak containers.conf 2024-08-19 04:20:53 +02:00
21ad810338 chore(gitlab-ci): podman-compose instead of podman compose 2024-08-19 03:33:24 +02:00
787656c0bf chore(docker/podman): add podman-compose 2024-08-19 03:28:46 +02:00
3682361fd9 chore(docker): create debian-podman image; parametrize Makefile and gitlab-ci over docker/podman 2024-08-19 03:23:16 +02:00
aebbfce109 chore(gitlab-ci): install make correctly 2024-08-19 02:43:14 +02:00
d12899ffea chore(gitlab-ci): apt-get update before_script 2024-08-19 02:41:08 +02:00
6ba2377d16 chore(gitlab-ci): install gnumake in base image 2024-08-19 02:39:05 +02:00
fad4627f42 chore(gitlab-ci): use debian:12.5 2024-08-19 02:35:41 +02:00
c12408c5d5 chore(gitlab-ci): use docker:dind 2024-08-19 02:29:51 +02:00
2d415a99fe chore(gitlab-ci): fix syntax 2024-08-19 02:19:52 +02:00
6f392396b9 chore(gitlab-ci): add backend jobs 2024-08-19 02:18:10 +02:00
93cbea6bd9 chore(gitlab-ci): disable (comment-out) previous ci defs 2024-08-19 02:13:13 +02:00
2356ff4b53 chore(docker/frontend): change default entrypoint to watcher 2024-08-19 02:10:02 +02:00
0fb60d9951 chore(docker): add image refs to compose.yaml 2024-08-19 02:09:27 +02:00
ff58c3a2ba chore(docker/backend): add missing locale dependencies 2024-08-19 01:52:18 +02:00
87c22b8a84 chore(Makefile): use docker compose in dockerized targets 2024-08-19 01:20:01 +02:00
e5ac596287 Merge branch '145-build-system-rewrite' of ssh://gitlab.uniworx.de/fradrive/fradrive into 145-build-system-rewrite 2024-08-19 01:08:36 +02:00
1fc74cade1 chore(docker/backend): add missing dependencies 2024-08-19 01:07:19 +02:00
ce07458cff chore(Makefile): cleanup; separate docker build and run 2024-08-19 01:01:13 +02:00
8140ebdc6d chore(gitlab-ci): first stub of major ci update 2024-08-19 01:00:50 +02:00
ce3dcfdbd3 chore(docker): work on compose.yaml; remove debris 2024-08-19 01:00:22 +02:00
22a918c5e3 chore(docker): reintroduce ADD to frontend and backend Dockerfiles for gitlab-ci compatibility 2024-08-19 00:59:56 +02:00
a3d0cb1820 chore(utils): New utils tool for listing debian packages from Dockerfiles. 2024-08-18 23:16:16 +02:00
9938cf6243 chore(docker/backend): install missing dependencies and env vars 2024-08-18 05:43:06 +02:00
e0b2b69fd6 chore(Makefile): clean new stack root (.stack/) on clean too 2024-08-18 04:47:09 +02:00
754f23a449 chore(docker/backend): add git dependency for haskell-stack 2024-08-18 04:42:51 +02:00
549d675847 chore(docker/backend): set HOME env var to /fradrive for stack root 2024-08-18 04:40:52 +02:00
018228fba0 chore(docker): fix make dependency misses caused by newlines 2024-08-18 04:28:46 +02:00
820133cbe8 chore(Makefile): clean well-known cache too 2024-08-18 04:17:29 +02:00
e8c058b65e chore(docker/frontend): make node_modules beforehand 2024-08-18 04:14:54 +02:00
0a7c451262 refactor(Makefile): use slightly shorter (and more obfuscated), but at least somehow documented syntax for empty receipts 2024-08-18 04:12:31 +02:00
6bbc2665f9 chore(Makefile): add dockerized frontend and backend wrapper targets 2024-08-18 04:09:22 +02:00
255fa196d5 chore(docker): use ENV args for make targets in frontend and backend docker 2024-08-18 03:06:41 +02:00
fcc65696d6 chore(Makefile): add dockerized target wrapper; fix cleanup 2024-08-18 03:05:39 +02:00
551424732c refactor(Makefile): cleanup targets 2024-08-18 01:54:16 +02:00
a090c9750a chore(docker): switch to backend entrypoint 2024-08-16 01:46:41 +02:00
b0e17845f4 chore(docker): add missing exiftool dependency to frontend Dockerfile 2024-08-16 01:32:40 +02:00
6a30501a85 chore(docker): add first (probably incomplete) version of backend/binary Dockerfile 2024-08-15 05:20:25 +02:00
e75042447a chore(docker): first version of frontend Dockerfile, not working together with compose.yaml yet 2024-08-15 05:19:46 +02:00
f17dbf4807 chore: remove deprecated .npmrc.gup 2024-08-15 05:17:50 +02:00
13d8bfefc7 chore(stack): introduce uniworxdev binary for always retaining binaries in bin/ 2024-08-15 05:17:27 +02:00
5183ec1707 chore(docker): work on compose.yaml 2024-08-15 05:16:50 +02:00
d1377bf3d3 chore(docker): add first compose.yaml stub; move fradrive-env Dockerfile 2024-08-15 02:31:23 +02:00
9e3a5af4d2 chore(docker): remove previous fradrive-db Dockerfile 2024-08-15 02:30:34 +02:00
2b11694ca3 chore(docker): add database Dockerfile to be used with docker-compose 2024-08-14 06:42:43 +02:00
776e6b6736 Merge branch 'fradrive/jost' into 'master'
AVS automatic synchronisation

See merge request fradrive/fradrive!37
2024-08-12 18:29:21 +00:00
be5e609b1f fix(build): minor linter fix 2024-08-12 18:01:59 +02:00
cc5da9a2a9 fix(avs): fix #124 implement automatic avs driving licence synchronisation 2024-08-12 18:01:04 +02:00
e551fadd29 chore(sql): add regex match for sql 2024-08-12 12:36:27 +02:00
fe6189175b chore(docker): use ADD with --chown instead of RUN chown 2024-08-11 03:10:22 +02:00
78303898f2 refactor(docker): add TODOs and documentation 2024-08-11 03:09:55 +02:00
e5f1827199 chore(docker): add Dockerfile for fradrive-db (psql) 2024-08-11 03:05:35 +02:00
2ed626ea4a chore(avs): towards #124 add filter for multiple firm users with block reason '%firm%'
- also add warning to admin avs licence difference for AVS R licence holders about to be changed
2024-08-09 18:33:23 +02:00
f4823aaf28 refactor(avs): switch some runDB to runDBRead 2024-08-09 17:59:14 +02:00
760b102d52 chore(avs): flag AVS R-holders about to be revoked
- flag on admin problem view
- exempt from automatic avs licence synch for levels below 3
2024-08-09 17:01:10 +02:00
000d8100db chore(avs): towards #124 add jobworker for AVS licence synch (WIP) 2024-08-08 18:19:09 +02:00
d209a110e8 refactor(linter): implement minor hlit suggestion 2024-08-08 17:30:03 +02:00
0af8598d6d chore(release): 27.4.76 2024-08-08 17:01:07 +02:00
c3d27c25b5 chore(mail): add decoder for MIME encoded word 2024-08-08 16:52:02 +02:00
1e6547e903 refactor(comm): clean CommCenterR and MailCenterR handlers and unify these 2024-08-08 13:56:10 +02:00
e4abf915ee Merge branch 'fradrive/jost' into 'master'
add comm center for email/letter notification overview

Closes #171, #150, #148, #149, and #173

See merge request fradrive/fradrive!36
2024-08-07 19:16:37 +00:00
6299612adc refactor: various minor changes, mostly some comments 2024-08-07 17:51:33 +02:00
8f54ea1051 refactor(qualifications): unify qualification selectField mechanics 2024-08-07 17:50:38 +02:00
c1dbd61c14 chore(mail): minor code cleanup mailCenterR
-- hiding currently unneded dbtForm
-- slightly better formatting for MIME encoded word
2024-08-07 13:52:47 +02:00
e35a5e99a6 fix(user): format userDisplayNames having umlaut substitutes with respect to userSurname correctly
we often have displayNames like "Steffen Joest" and surname "Jöst" which were previously displayed as "Steffen Joest (**Jöst**)" and which are now displayed as "Steffen **Jöst**".

Also, the case of surname is left unchanged, while the displayName is converted to title
2024-08-07 11:44:39 +02:00
ab00a4f665 chore(mail): fix #171 by adding a route for all notifications to users and displaying them 2024-08-06 17:42:27 +02:00
f929e03129 fix(build): linter likes it 2024-08-05 18:17:00 +02:00
21d32fd4cf chore(mail): mail display towards #171 2024-08-05 18:15:56 +02:00
f15d635a1e chore(git): add .gitattributes for prohibiting crlf as eol 2024-08-04 15:21:26 +02:00
4df8bd2fa5 chore(mail): stub towards #171
new routes /mail and /mail/show/UUID to eventually display all sent emails by the system
2024-08-02 18:28:16 +02:00
d1fa01fcc5 fix(avs): towards #117 update if current value is Nothing even if oldval == newval
Damit sollten zumindest die ganzen NULL Fälle bein einem neuen Update erledigt sein. Unklar, wo diese aber herkamen.
2024-08-02 16:13:09 +02:00
ec02767552 fix(course): fix #150 no longer allow duplicated associated qualifications and orders due to editing existing 2024-08-02 15:40:25 +02:00
cfd25348ad fix(course): fix #148 course qualification ordering
some refactoring done along the way, fixing a bug in relation to #150 as well
2024-08-01 17:45:18 +02:00
e1419766f3 fix(course): fix #149 course cloning proposes associated qualifications
This commit required a massInput form, using massInputAccumEditA, which turned out to difficult to use.
2024-08-01 17:09:05 +02:00
5b6e4e60e7 fix(course): fix #150 course edit for associated qualifications requires school admin or lecturer rights 2024-08-01 11:41:27 +02:00
bc47387c91 fix(course): WIP course cloning should propose same associated qualifications, towards #149 2024-07-31 19:03:30 +02:00
0fde59c19a chore(profile): show user courses among enrolled course type list
(Recall: course = tutorial, course type = course)
2024-07-31 17:51:13 +02:00
507a7e02fc fix(avs): using firm superior as UserEmail is a no-go due to uniqueness constraints
Thus, we do not save the firm superior as `UserEmail` any more. The firm superior email is still used as a fallback for `CompanyEmail` which in turn is used as a fallback email, if a `CompanyUser` has no valid email at all.
2024-07-31 15:03:26 +02:00
43f5c5f485 fix(avs): fix #173 by not using firm superior email as display email
Instead, a valid firm superior email is used as `UserEmail` so that it can be used as a fallback address.
2024-07-31 14:16:40 +02:00
b9f70c7796 chore(avs): ensure supervisor reroutes are correct upon company switch 2024-07-30 15:58:12 +02:00
6ccbb3b7ff refactor(ldap): some minor code cleaning 2024-07-30 15:57:43 +02:00
8b0466e74e fix(ap): disambiguate action message 2024-07-30 15:56:45 +02:00
689e6347da chore(print): make apc ident comparison fuzzy
received and stored idents are additionally accepted as infixes of one another, if the length difference is less than 3 characters
2024-07-30 10:42:39 +02:00
55484e631b fix(stack.yaml): move to uniworx.de gitlab 2024-07-29 17:14:18 +02:00
d6ce20c85e chore(Dockerfile): make backend-dependencies in fradrive-env 2024-07-29 16:01:11 +02:00
6b53347929 chore(Makefile): clean .npm cache too 2024-07-29 15:56:12 +02:00
d231df6596 chore(Makefile): clean assets/icons and well-known 2024-07-29 15:52:03 +02:00
a3ca0ddb55 chore(Makefile): require well-known for frontend targets 2024-07-29 15:50:16 +02:00
f34a42128c chore(Dockerfile): make well-known 2024-07-29 15:49:57 +02:00
ac30cb9e67 fix(utils/renamer): Mehr outputs nur im verbose-Fall. 2024-07-29 15:42:42 +02:00
5396d56627 Merge branch '145-build-system-rewrite' of gitlab.uniworx.de:fradrive/fradrive into 145-build-system-rewrite 2024-07-29 15:40:16 +02:00
1806d9f01f fix(utils): Verboseparameter -v hinzugefuegt; rekursives makedir; genauere Meldungen. 2024-07-29 15:38:46 +02:00
4eb081a06a refactor(utils): remove duplicate json key 2024-07-29 15:37:41 +02:00
3bc3acf38c chore(Makefile): add assets/icons generation target 2024-07-29 15:34:52 +02:00
8460c94c0d chore: gitignore assets/icons 2024-07-29 15:33:45 +02:00
5a1ea3db06 chore(assets): remove icons from repository, to be generated locally 2024-07-29 15:33:15 +02:00
675b0711dc chore(Makefile): add .well-known target as dependency for well-known to catch any webpack errors 2024-07-29 15:16:28 +02:00
11fdcf0d44 fix(lms): max e-learning tries default removed and info added to lms overview 2024-07-29 14:58:19 +02:00
533ed53fad chore(Makefile): remove (comment-out) old npmrc target 2024-07-29 14:56:02 +02:00
2a994bb714 Merge branch '145-build-system-rewrite' into fraport-corporate-design-icons 2024-07-29 14:49:41 +02:00
e7a8183656 fix(Dockerfile): change rights of source dir to env user 2024-07-29 14:42:35 +02:00
4ead63006a chore(Dockerfile): pre-build dependencies in fradrive-env 2024-07-29 14:33:46 +02:00
58152beb03 refactor(utils): flip arguments bsnoc 2024-07-29 11:29:58 +02:00
David Mosbach
776012bd5e chore(frontend): replaced fontawesome-pro node module with fontawesome-free 2024-07-26 01:05:55 +00:00
973175d5b9 chore(Dockerfile): work in fradrive Dockerfile; set workdir 2024-07-26 01:18:21 +02:00
a09dc59f26 fix(Makefile): add missing dependency on well-known for backend-builds 2024-07-26 01:15:06 +02:00
7f809d0208 chore(Dockerfile): move fradrive-env Dockerfile to project root; remove old dockerignore 2024-07-25 22:37:01 +02:00
60e5086f7e refactor(docker): apply Dockerfile linter suggestions 2024-07-25 13:05:24 +02:00
9fb6d60ecc chore(Dockerfile): add Dockerfile stub for fradrive container 2024-07-17 13:58:18 +02:00
803e8bfedb chore(release): 27.4.75 2024-07-12 17:16:10 +02:00
d853e8559b fix(lms): allow 2nd reminders to be independent of renewal period 2024-07-12 17:14:48 +02:00
e6f0454e78 Merge branch 'fradrive/newletter' 2024-07-12 14:01:12 +02:00
8c8ffa5183 chore(avs): remove company superior, if there is none anymore 2024-07-12 13:44:21 +02:00
fee14edf36 refactor(firm): fix #157 refactor duplicated code
also ensures that supervisor default reaons filters are obeyed.
2024-07-12 12:21:17 +02:00
0bbb679a43 chore(profile): indicate linked postal addresses 2024-07-12 12:12:26 +02:00
5e85b2d5ae chore(gitlab-ci): add frontend needs for backend test 2024-07-12 12:00:13 +02:00
6063eb24a2 chore(email): qualfication renewal email add info about renewal options
Also mention that this email reminder may be ignored for users who have already mage arrangements
2024-07-12 11:32:12 +02:00
28e2739e51 fix(firm): fix #157 by removing redundant duplicated code in firm user and supervision handling 2024-07-11 18:37:40 +02:00
f20fdff531 chore(Makefile): tweak backend-prod targets 2024-07-11 17:21:42 +02:00
c17c18f924 fix(build): make linter happy again 2024-07-11 15:28:58 +02:00
09621cfcce chore(gitlab-ci): add .stack-work to stack cache 2024-07-11 12:50:20 +02:00
90b93350fc chore(gitlab-ci): well-known as backend lint artifact 2024-07-11 12:12:24 +02:00
79a8305bd7 chore(gitlab-ci): frontend build as backend lint artifact 2024-07-11 02:31:07 +02:00
d65fb2f4cd chore(firm): add reason for user company association 2024-07-10 15:54:15 +02:00
ab28c8c243 fix(build): minor 2024-07-10 12:27:51 +02:00
6e2d545772 chore(users): allow profile edits with invalid display_email address, if unchanged 2024-07-10 12:23:37 +02:00
fa0541aa4e fix(job): change some queueJob' to queueJob instead 2024-07-10 11:47:01 +02:00
b5215cc7e8 fix(nix): workaround parsing port numbers failed in nix-shell 2024-07-10 11:45:59 +02:00
a1668f891a fix(users): nameHtml no longer complains about differing case for surname and displayname 2024-07-09 17:06:33 +02:00
c813c665ed fix(users): remove users with company post address from list of unreachable users 2024-07-09 11:56:58 +02:00
9a0e8988fa refactor(health): avoid duplicate interface health check speficiations 2024-07-09 10:45:30 +02:00
fd7b792b4b chore(gitlab-ci): remove deprecated targets; rename uniworx->backend build 2024-07-09 01:25:37 +02:00
140c875668 chore(Makefile): cleanup and document 2024-07-09 01:20:35 +02:00
5de66f5be6 chore: gitignore binaries 2024-07-09 01:14:20 +02:00
9d3198f49b chore(health): avoid duplicate interface health check speficiations 2024-07-08 18:11:46 +02:00
2caa5aec5b chore(health): add option to mark certain interface health checks to remain indefinitely 2024-07-08 15:34:19 +02:00
764bb5b0b0 chore(gitlab-ci): add debug find 2024-07-08 15:08:46 +02:00
3def8ca916 chore(letter): add number of tries as qualification property 2024-07-08 14:22:54 +02:00
a97c3a5c9d fix(lms): send second reminder indepentently from renewal period 2024-07-08 14:21:25 +02:00
17986f82c4 chore(Makefile): fix syntax 2024-07-08 13:43:10 +02:00
8742c5b57d chore(gitlab-ci): fix order/syntax contd 2024-07-08 13:26:11 +02:00
95a2e2f2fe chore(gitlab-ci): fix order/syntax 2024-07-08 13:25:45 +02:00
aec1daf8ac chore(gitlab-ci): cleanup 2024-07-08 13:24:09 +02:00
8306bc20e9 chore(gitlab-ci): cleanup and deduplicate stuff 2024-07-08 12:41:06 +02:00
46a46b9b13 chore(gitlab-ci): more cleanup 2024-07-08 12:23:49 +02:00
a6db39c056 chore(gitlab-ci): cleanup; move before_script to default 2024-07-08 12:12:15 +02:00
89d9018bc4 chore(Makefile): fix syntax 2024-07-08 01:04:19 +02:00
a92a512387 chore(gitlab-ci): try to chown current dir for fradrive-env 2024-07-08 01:02:18 +02:00
c29407f218 chore(Makefile): disable allow-different-user for stack again 2024-07-08 00:54:31 +02:00
6d305f90d0 chore(gitlab-ci): use STACK_ROOT for cache 2024-07-08 00:44:50 +02:00
305c16c217 chore(Makefile): fix syntax 2024-07-08 00:38:46 +02:00
41fe680611 chore(Makefile): fix syntax/target names 2024-07-08 00:36:44 +02:00
5c66b25b98 chore(Dockerfile): remove debris 2024-07-08 00:32:56 +02:00
4e49f8c5a2 chore(gitlab-ci): remove unnecessary artifact path for backend-dependencies 2024-07-08 00:30:27 +02:00
d415c81ce2 chore(Makefile): introduce prod variant of backend-dependencies target for allowing different users 2024-07-08 00:27:14 +02:00
e86466d80f chore(Makefile): use allow-different-user for ci stack builds 2024-07-08 00:20:09 +02:00
76141fe2d0 chore(gitlab-ci): remove deprecated before-script stuff 2024-07-08 00:11:01 +02:00
d133020b05 chore(gitlab-ci): use fradrive-env user 2024-07-08 00:06:36 +02:00
c85e254cfb chore(gitlab-ci): use fradrive-env 2024-07-07 23:37:25 +02:00
0692ffaa32 chore(Dockerfile): rename build-env -> fradrive-env 2024-07-07 23:32:54 +02:00
95de89e70e chore(Dockerfile): use non-root user for build-env 2024-07-07 23:32:20 +02:00
e542dc5761 chore(gitlab-ci): try to use ~/.stack dir for dependency caching 2024-07-07 23:23:12 +02:00
b3a4700fec chore(Dockerfile): move Dockerfile for build-env 2024-07-07 23:17:12 +02:00
4d8c73a9d2 chore(Dockerfile): add llvm (current) 2024-07-07 23:05:35 +02:00
468af9de9d fix(lms): move lms reuse info from QualificationR to LmsR
LmsR is intended to be seen by Fraport Admins only, while QualificationR is intended to be seen by Supervisors (in the future).

The LMS reuse information might confuse non-admins and is irrelevant to them.
2024-07-05 17:40:12 +02:00
91e21db758 chore(release): 27.4.74 2024-07-04 15:35:41 +02:00
6ea3a30afc Merge branch 'fradrive/newletter' 2024-07-04 14:40:03 +02:00
3a66bed173 chore(firm): towards #169 distinct icon for avs firm superior (user-tie) 2024-07-04 14:38:31 +02:00
f869a829d2 fix(lms): fix #161 lms for multiple joint qualifications 2024-07-04 14:15:05 +02:00
272459046c chore(Makefile): reintroduce prod backend targets 2024-07-04 13:03:54 +02:00
4cd57fc0fd chore(Makefile): fix develop test 2024-07-04 12:05:32 +02:00
f3bafc9e48 chore(gitlab-ci): partially remove debug prints 2024-07-04 04:17:21 +02:00
a2dce46a2e chore(Dockerfile): install locales and seding locales 2024-07-04 04:14:12 +02:00
f892711da7 chore(gitlab-ci): add locale debugging prints to backend-dependencies contd 2024-07-04 04:08:56 +02:00
fff0478b2e chore(gitlab-ci): add locale debugging prints to backend-dependencies 2024-07-04 03:55:30 +02:00
b0b740182c chore(Dockerfile): install pkg-config 2024-07-04 02:59:46 +02:00
b9b1d3e57b chore(release): 27.4.73 2024-07-03 17:59:41 +02:00
93196a6400 Merge branch 'fradrive/newletter' 2024-07-03 17:57:40 +02:00
feb8d92bc1 chore(log): add more filter options to admin problem log 2024-07-03 17:56:13 +02:00
073432c75b chore(letter): allow for more different driving licence names in letters 2024-07-03 16:50:38 +02:00
0725a9a908 chore(lms): towards #169 option to prevent qualifications to renew automatically upon e-learning 2024-07-03 15:51:42 +02:00
0ac75e0d59 fix(letter): rephrase some minor letter parts 2024-07-03 15:46:08 +02:00
62d698503d chore(release): 27.4.72 2024-07-02 18:17:21 +02:00
9e2a964ef7 Merge branch 'fradrive/newletter' 2024-07-02 18:16:48 +02:00
357e943f21 chore(avs): towards #169 - filter users by last avs synch 2024-07-02 18:15:27 +02:00
5bf85394d4 fix(avs): towards #169 - superiors are elevated to max priority for that company
this entails that users may have multiple equal priority companies
2024-07-02 18:14:54 +02:00
99f03078a1 chore(db): use runDBRead more often 2024-07-02 17:37:34 +02:00
7ca3237ad0 chore(profile): towards #169
- only one matrikelnumber
- proper update indication for matrikelnumber and pin
- only display tables with data in profile
- refactor supervision overviews
2024-07-02 16:55:12 +02:00
9e2f2214ce fix(avs): do not associate users by AvsInfoPersonEmail 2024-07-02 15:27:56 +02:00
ff9014ce05 fix(avs): fix superfluous quotes for matriculation numbers on newly created users 2024-07-02 13:20:34 +02:00
622c01b9be chore(profile): towards #169
-  profile supervison streamlined (WIP)
2024-07-01 18:04:25 +02:00
6d49ea092b chore(profile): towards #169
- distinguished reroute icon
- profile cleaned/reordered
2024-07-01 16:24:38 +02:00
d4f3ce7bf3 fix(firm): supervisor secondary did not work as intended
also, adding company link to secondary supervisors
2024-06-28 11:26:55 +02:00
abc9039990 chore(Dockerfile): install libpq-dev 2024-06-27 21:04:36 +02:00
acd6290be4 chore(Dockerfile): install zlib-dev 2024-06-27 20:29:47 +02:00
8b03409554 chore(release): 27.4.71 2024-06-27 19:59:08 +02:00
e8f6900870 chore(Dockerfile): install chromium, set CHROME_BIN 2024-06-27 18:56:39 +02:00
d4b967fddb chore(Makefile): two echoes 2024-06-27 18:36:02 +02:00
2d249ccafe chore(Makefile): use \echo instead of echo 2024-06-27 18:32:33 +02:00
b5cd8edf53 chore(gitlab-ci): fix npmrc install contd 2024-06-27 18:21:49 +02:00
db95e9c38d chore(Makefile): avoid comment print for npmrc 2024-06-27 18:20:27 +02:00
7ae460dacb chore(gitlab-ci): fix npmrc install contd 2024-06-27 18:16:59 +02:00
c0e625f266 chore(Makefile): tweak npmrc target 2024-06-27 18:14:22 +02:00
bb5b2db281 chore(gitlab-ci): fix npmrc install contd 2024-06-27 18:03:37 +02:00
a0ee02c460 chore(gitlab-ci): fix npmrc install 2024-06-27 17:58:33 +02:00
f0befa9abc chore(gitlab-ci): fix npmrc install 2024-06-27 17:53:59 +02:00
c6f6fcd516 chore(gitlab-ci): replace fontawesome token ci var with NPMRC var 2024-06-27 17:47:58 +02:00
2e30cab08c chore(Dockerfile): remove gup 2024-06-27 17:47:26 +02:00
09aca3f2c4 chore(Makefile): remove npmrc gup target 2024-06-27 17:45:33 +02:00
45bc5ca9f5 chore(firm): various contributions towards #157 2024-06-27 17:42:13 +02:00
1fca99bf88 chore(Dockerfile): add missing build dependency 2024-06-27 17:35:06 +02:00
3371dc4203 chore(gitlab-ci): replace nix shell calls with barebones make 2024-06-27 17:31:27 +02:00
c978be1f87 chore(gitlab-ci): remove deprecated nix before-script stuff 2024-06-27 17:04:00 +02:00
d626955658 chore(gitlab-ci): use new fradrive build-env image 2024-06-27 17:00:59 +02:00
3dfc7f8c8b fix(doc): fix erroneous unintentional haddock annotations 2024-06-27 16:48:47 +02:00
ed6c114991 chore(Dockerfile): move Dockerfile to subdir; add dependencies 2024-06-27 16:37:52 +02:00
e25a8569c5 chore(lms): add action to manually enqueue qual holder for e-learning 2024-06-27 16:29:25 +02:00
37efc89e07 fix(avs): company superior emails become company wide supervisors 2024-06-27 12:40:35 +02:00
997bc2bc00 chore(Dockerfile): add first Dockerfile stub for base build image 2024-06-27 03:43:00 +02:00
8d0c0d00d5 chore(gitlab-ci): switch to locally hosted debian image 2024-06-27 02:44:24 +02:00
b033165539 chore(gitlab-ci): switch to debian:12.5 as build image 2024-06-27 02:13:46 +02:00
975bf13d9c chore(avs): proper company superiors as company wide default APs (WIP) 2024-06-26 17:18:41 +02:00
2559346d96 fix(avs): new AVS from existing LDAP user no longer misses fields 2024-06-26 15:08:38 +02:00
5f1af130ed fix(letter): convenience links working again 2024-06-26 15:07:19 +02:00
d4a0e1f201 fix(letter): adjust spacing, pin location and interpolation 2024-06-26 14:31:01 +02:00
47e56280fc fix(ldap): match mobile number better between LDAP and AVS 2024-06-26 14:07:52 +02:00
f108c6cfec fix(avs): match mobile number better between LDAP and AVS 2024-06-25 17:36:33 +02:00
e4fa1ddd68 fix(avs): priority for picking primary email demote superior 2024-06-25 15:54:55 +02:00
f8c36636ff fix(letter): expiry and valid dates were wrong 2024-06-25 14:11:50 +02:00
0a93f79f4e chore(db): new code for truncate table 2024-06-25 14:06:49 +02:00
b3d1dabfc2 refactor(profile): clean ui, reduce unnecessary routes 2024-06-25 11:16:20 +02:00
c212f2e8d7 fix(i18n): add missing translation for new primary company 2024-06-25 08:30:39 +02:00
2cc529be39 fix(i18n): add missing translation for new primary company 2024-06-25 08:30:29 +02:00
f9e755ed31 chore(gitlab-ci): fix syntax contd 2024-06-25 03:18:57 +02:00
0861ea0778 chore(gitlab-ci): fix syntax contd 2024-06-25 03:12:57 +02:00
14f32497bb chore(gitlab-ci): fix syntax contd 2024-06-25 03:06:10 +02:00
5911db66b1 chore(gitlab-ci): fix syntax contd 2024-06-25 03:03:45 +02:00
1c0bd51a47 chore(gitlab-ci): fix syntax contd 2024-06-25 02:51:38 +02:00
bb8dfb677f chore(gitlab-ci): fix syntax contd 2024-06-25 02:49:47 +02:00
f425bd9afe chore(avs): add covenience clean up to avs admin person search 2024-06-24 11:30:17 +02:00
d161c296ad Merge branch 'master' into fradrive/newletter 2024-06-24 09:06:33 +02:00
b7ed7338d7 chore(release): 27.4.70 2024-06-21 23:35:42 +02:00
07663516e5 fix(build): hlint wants a newtype instead 2024-06-21 23:34:58 +02:00
18cdc52df0 fix(build): hlint wants a newtype instead 2024-06-21 23:33:58 +02:00
David Mosbach
a8218e0f62 chore(frontend): adjusted colour of icons inside of buttons 2024-06-21 17:20:17 +00:00
c04614ff86 chore(release): 27.4.69 2024-06-21 13:48:32 +02:00
766b8589d6 fix(avs): keep company on unchange address/email only if either is non-empty 2024-06-21 13:47:05 +02:00
f37c08099c chore(jobs): add option to manually delete old jobs 2024-06-21 13:45:08 +02:00
d7acc7a2d0 fix(avs): synch job deletes used row instead of truncation
Database.Esquelet.Utils.truncate is suspected to crash in conjunction with the incomplete argument containing an error value due to strictness
2024-06-21 13:09:16 +02:00
7ad7fe609c chore(avs): add more avs development test data 2024-06-21 11:55:54 +02:00
822c43c8a7 fix(avs): fix type causing avs surname upate not working 2024-06-21 08:45:16 +00:00
8721bdb3f3 fix(build): add missing license file 2024-06-21 09:02:56 +02:00
680333c617 chore(gitlab-ci): fix syntax contd 2024-06-21 00:31:40 +02:00
b90e0999e6 chore(gitlab-ci): fix syntax 2024-06-21 00:16:47 +02:00
73aecc2df8 fix(print): fix #167 by sotring affected user in PrintJob 2024-06-20 18:22:35 +02:00
c38e87e1e0 fix(letter): switch markdown for renewal letter too 2024-06-20 17:47:17 +02:00
d7190fb9a1 chore(Makefile): remove PHONY annotation from unphony targets 2024-06-20 17:20:23 +02:00
1d836026e6 chore(Makefile): remove deprecated targets 2024-06-20 17:19:05 +02:00
eb25d7ba34 chore(Makefile): remove bin dist on make clean 2024-06-20 17:16:56 +02:00
5c2a33c918 chore(gitlab-ci): make uniworx and uniworxdb from make targets 2024-06-20 17:16:19 +02:00
6ffa1289e6 chore(Makefile): introduce bin/uniworx and bin/uniworxdb targets 2024-06-20 17:13:07 +02:00
dfe4352575 chore(letter): switch to new letters
- contributes towards #64 and #82
2024-06-20 17:04:51 +02:00
66026fb877 chore(Makefile): copy bins and set local bin path 2024-06-20 16:24:42 +02:00
a2a89a8aad refactor(letter): expiry letter updated 2024-06-20 16:17:52 +02:00
f90a244cd4 chore(shell.nix): resort to new prepare-env script instead of shellHook and use in gitlab-ci 2024-06-20 14:38:12 +02:00
73ea2f54df chore(letter): complete parameterized englisch translation 2024-06-20 14:25:37 +02:00
951078114a chore(shell.nix): fix shellHook debug echoes 2024-06-20 14:23:48 +02:00
1798180a53 chore(shell.nix): add shellHook debug echoes 2024-06-20 14:00:17 +02:00
34199a37fd chore(users): multiple name filter and remove subordinates 2024-06-20 12:58:34 +02:00
7a6a1446c6 chore(shell.nix): add TZDIR to shellHook; remove SMTP env vars 2024-06-20 10:05:48 +02:00
554c1eec27 chore(release): 27.4.68 2024-06-19 17:54:39 +02:00
e5cbd096ce Merge branch 'master' into fradrive/newletter 2024-06-19 17:53:16 +02:00
2ae11dc25c fix(letter): minor 2024-06-19 17:52:47 +02:00
d61788a1f5 chore(letter): update demo renewal letters 2024-06-19 17:41:14 +02:00
ab5e432b77 refactor(avs): use associated type family to consistently produce CheckUpdate 2024-06-19 15:10:23 +02:00
b5f5fb784c chore(release): 27.4.67 2024-06-17 17:53:05 +02:00
d83cb66c8b Merge branch 'fradrive/cr3' 2024-06-17 17:51:48 +02:00
a6d0105903 fix(avs): fix rare avs update bug involving values optional in avs but compulsory in user entity 2024-06-17 17:50:41 +02:00
01e2ed73e1 chore(gitlab-ci): fix test deps 2024-06-14 01:58:59 +02:00
7d06feb764 chore(gitlab-ci): replace check job with frontend and backend test jobs using make targets 2024-06-14 01:56:51 +02:00
5ae557a5a8 chore(gitlab-ci): add more debug prints 2024-06-14 01:49:05 +02:00
cf019e6daa chore(letter): new letter generalisation WIP 2024-06-13 18:22:16 +02:00
8ed01456da chore(gitlab-ci): add debug ls for cache/artifact debugging 2024-06-13 18:08:14 +02:00
6e3a40c08a chore(gitlab-ci): tweak stack cache 2024-06-13 18:05:26 +02:00
44f7a5c0e1 chore(gitlab-ci): add missing well-known dep for backend build 2024-06-13 16:25:11 +02:00
d762abe094 chore(gitlab-ci): add missing dependencies and caches 2024-06-13 15:51:42 +02:00
f5d02a4b22 chore(gitlab-ci): include npm cache in frontend deps 2024-06-13 15:43:47 +02:00
b838133c53 chore(gitlab-ci): add npmrc as frontend dep artifact 2024-06-13 15:37:20 +02:00
0eac40457b chore(avs): add more auto update indicators to profile page 2024-06-13 14:51:05 +02:00
e07d0157af chore(gitlab-ci): use -prod build targets in backend-build and backend-lint 2024-06-13 03:08:47 +02:00
68832d5f99 chore(Makefile): implement backend-...-prod targets for non-dev builds 2024-06-13 03:06:30 +02:00
f9a4021937 chore(Makefile): remove debris 2024-06-13 02:55:36 +02:00
56689d12de chore(Makefile): conditionally depend on .develop.env; add uniworx:dev flag to stack iff dev 2024-06-13 02:55:02 +02:00
7a34641e42 chore(gitlab-ci): restructure based on stages 2024-06-13 02:27:08 +02:00
6a46f91cc0 chore(Makefile): add dev var; TODO: find way to conditionally depend on .develop.env 2024-06-13 02:26:53 +02:00
f910dc9a33 chore(gitlab-ci): work on well-known and backend-dependencies 2024-06-13 02:09:20 +02:00
a4e2f3edc6 chore(Makefile): add well-known target, use in gitlab-ci 2024-06-13 01:50:15 +02:00
d1306303cf chore(release): 27.4.66 2024-06-12 17:51:47 +02:00
ad8e67dab1 Merge branch 'fradrive/cr3' 2024-06-12 17:51:15 +02:00
76e0710c7b fix(avs): fix #165 by updating userCompanyDepartmen and userCompanyPersonalNumer
- Die interne Firma Assoziation im User-Eintrag wird gelöscht, sobald der letzte erfolgreiche LDAP Sync älter ist als der eingestellte SYNCHRONISE_LDAP_EXPIRE (default = halbes Jahr).
- Firmen-Assoziation wird ebenfalls gelöscht, falls vorhanden
- Die Personalnummer bleibt erhalten, wenn das AVS diese noch liefert; ansonsten wird sie ebenfalls gelöscht.
- UserLdapPrimaryKey wird ggf. von AVS aktualisiert
2024-06-12 17:48:17 +02:00
a3beca87d1 chore(firm): filter associates by valid qualficiations
towards #157
2024-06-12 15:06:14 +02:00
996e6a0ce5 fix(avs): repeated avs sync enqueue no longe violates duplicate db uniqueness constraints 2024-06-12 11:47:23 +02:00
da74b95729 fix(avs): fix #164 by removing companyPersonalNumber and companyDepartment upon ldap sync expiry
SYNCHRONISE_LDAP_EXPIRE may be null (do nothing) or some seconds (15897600 = half a year). If no successful LDAP synch happened for the specified time, a successful AVS (sic!) update will delete the companyPersonalNumber and companyDepartment
2024-06-11 15:42:24 +02:00
f5754cd6b1 chore(users): add convenience buttons for ldap avs sync on profile page
towards #164
2024-06-11 15:22:24 +02:00
64b21d6fe6 chore(cache): add caching for simpleLinks and modal access 2024-06-11 12:53:17 +02:00
9fd80f2552 fix(avs): update email on manual company switch
towards #164
2024-06-11 12:12:56 +02:00
ac3271242d chore(firm): filter firm users by primary company
towards #157
2024-06-11 12:04:26 +02:00
7e022ca0a1 chore(release): 27.4.65 2024-06-10 18:43:50 +02:00
ab2e81f34d Merge branch 'fradrive/cr3' 2024-06-10 18:42:46 +02:00
e6c57035f9 chore(firm): only show/link primary company for a user in several places
contributes to #164
2024-06-10 18:40:58 +02:00
bb101dee7b fix(avs): company update no longer fails on duplicate key 2024-06-10 14:56:33 +02:00
e553ad4358 fix(avs): profile page correctly indicates automatic email and postal addresses 2024-06-07 17:42:05 +02:00
5b9d757ca4 chore(avs): person search triggers status and contact search for unique results for added convenience 2024-06-07 12:57:35 +02:00
aa1d230e49 fix(avs): steps towards #164
- link avs nr to status on profile page
- link companies on profile page
- swap icons for isAutomatic
- improve jsonWidget number display for integers and small floats
2024-06-07 12:31:54 +02:00
6acfd849ae fix(lette): adjust window for new pin letters 2024-06-05 12:02:23 +02:00
David Mosbach
3bcd5610c2 chore(fonts): reverted new font 2024-06-03 01:37:17 +00:00
David Mosbach
4c4571d2d0 fix(frontend): fixed icon colour in table headers 2024-06-02 23:05:43 +00:00
David Mosbach
e1bb20ed18 style(frontend): coloured icons on info page for lecturers 2024-06-02 21:09:28 +00:00
David Mosbach
d3ac39afe4 style(frontend): navbar svg filter now matches theme 2024-06-02 17:19:10 +00:00
69afef93c9 chore(nix): remove entire nix build architecture 2024-05-30 14:36:05 +02:00
88739d326d chore(Makefile): work on make database 2024-05-30 14:22:32 +02:00
5a9ed747d2 chore(release): 27.4.64 2024-05-27 17:26:30 +02:00
396312092a Merge branch 'fradrive/cr3' 2024-05-27 17:23:12 +02:00
ea0fa9a3fa chore(avs): add more debug message for company updates failing 2024-05-27 17:21:28 +02:00
David Mosbach
5a8c741174 chore(icons): automatically generated license files 2024-05-27 14:55:29 +00:00
David Mosbach
5200d88f75 chore(utils): configurable file extensions for renamer util 2024-05-27 14:05:42 +00:00
3fb2226204 chore(release): 27.4.63 2024-05-23 18:20:19 +02:00
b77e9e1d1c Merge branch 'fradrive/cr3' 2024-05-23 18:19:08 +02:00
9814712c61 refactor(letter): first test version of new letters 2024-05-23 18:18:13 +02:00
400d0a546e chore(shell): add correction utility script for frequent test bug 2024-05-23 18:15:02 +02:00
9451d90a9e fix(avs): company update checks uniques and ignores those updates if necessary 2024-05-23 17:08:30 +02:00
David Mosbach
51a3a25042 chore(icons): removed old iconText function 2024-05-23 01:57:12 +00:00
David Mosbach
11df9c578f style(frontend): adjusted styling to svg icons 2024-05-23 01:24:44 +00:00
a732e26337 chore(release): 27.4.62 2024-05-19 09:01:59 +02:00
f47134c2f0 Merge branch 'fradrive/cr3' 2024-05-19 09:00:12 +02:00
ff2347b1c9 fix(avs): avs update on company shorthands working now 2024-05-17 18:06:16 +02:00
ccf9340449 fix(avs): deal gracefully with empty card status results 2024-05-17 12:05:08 +02:00
David Mosbach
e14df308d8 Merge branch 'utils' into fraport-corporate-design-icons 2024-05-13 02:19:34 +00:00
e5750ea7a0 chore(release): 27.4.61 2024-05-06 20:08:27 +02:00
7fd13677d3 Merge branch 'fradrive/cr3' 2024-05-06 20:01:26 +02:00
32a79ee2c9 Merge branch 'fradrive/cr3' of ssh://gitlab.uniworx.de/fradrive/fradrive into fradrive/cr3 2024-05-06 19:47:43 +02:00
6750798920 fix(build): add missing tex packages 2024-05-06 19:47:34 +02:00
3c4a0b86c1 fix(avs): fix #76 allowing company changes and fix #69 2024-05-06 19:35:59 +02:00
29182cb6dd chore(avs): switch company (WIP) 2024-05-06 16:58:58 +02:00
6084f92ad7 chore(avs): switch prime company 2024-05-06 16:33:57 +02:00
e2e5cc7bee chore(font): switch latex to roboto (WIP) 2024-05-06 16:33:42 +02:00
caf8fec5ac feature(util script): Util script for renaming of files added. 2024-05-06 15:09:42 +02:00
2fbd28154c fix(build): workaround non modal form result handler 2024-05-06 09:42:17 +02:00
David Mosbach
6c4f3fe52b chore(frontend): updated templates 2024-05-06 03:44:25 +00:00
21273e361a chore(avs): fix #76 allowing admins to switch to secondary company 2024-05-03 17:17:24 +02:00
5944efcb86 chore(avs): change to secondary company (WIP) form missing 2024-05-02 17:29:04 +02:00
fdbaa3c9d4 chore(avs): add function to change to secondary company 2024-04-30 17:45:29 +02:00
David Mosbach
b52da06129 chore(icons): adjusted icon sizes 2024-04-29 14:30:48 +00:00
David Mosbach
541e7ada43 style(frontend): replaced Font Awesome icons 2024-04-29 02:49:19 +00:00
30807af3c4 chore(release): 27.4.60 2024-04-26 19:07:41 +02:00
f465cc9723 fix(build): type error in test db fill data 2024-04-26 18:43:22 +02:00
b8d41d10c9 Merge branch 'fradrive/cr3' 2024-04-26 18:14:17 +02:00
697979c277 fix(avs): fix #69 by redesigning live avs status page 2024-04-26 17:55:29 +02:00
a5dfd5e10f refactor(avs): add more logging to AVS synch ops 2024-04-26 16:04:28 +02:00
David Mosbach
22781e1565 feat(frontend): load icons from svg files 2024-04-25 23:01:35 +00:00
13a648de18 refactor(avs): first steps towards #69 2024-04-25 18:14:53 +02:00
6fd45f6896 refactor(avs): complete rewrite AVS synch
Three former background jobs could be removed
2024-04-25 17:07:12 +02:00
fea749f367 refactor(avs): rewrite AVS synch (WIP) 2024-04-25 09:55:40 +02:00
64a123387f fix(lint): remove minor superfluous dollar 2024-04-24 18:02:54 +02:00
2e4e1a94c9 refactor(avs): rewrite AVS synch (WIP) 2024-04-24 18:01:44 +02:00
a52c8a6ad7 fix(avs): several minor bugfixes
- See notes in #158 for details on update change policy
- fieldLensVal was not working
- create index for deleted table prevented start
- some hlint errors
2024-04-22 18:19:07 +02:00
fd6a5384d3 fix(qualification): fix #159 by removing an misleadingly named column for user qualification table
The columns QualificationUserLastNotified is misleading, since it only reflects notifications due to actual validity changes. This is necessary for the notification mechanism.

In case this column is reinstatiated, a better column name and a proper tooltip was added to the column.
2024-04-22 11:50:13 +02:00
4f8850b3b4 fix(avs): fix #36 and remove dead code 2024-04-18 18:30:23 +02:00
b7af6312f9 refactor(avs): complete createAvsUserById 2024-04-18 18:02:16 +02:00
234dd28f48 refactor(avs): rework fraport email recognition 2024-04-18 13:32:00 +02:00
David Mosbach
ad71e165c6 chore(frontend): ttf to woff conversion 2024-04-18 04:17:28 +00:00
890f8ad8b6 fix(i18n): fix some bad plurals 2024-04-17 12:14:58 +00:00
d56a1cdd46 fix(build): simple type error 2024-04-16 17:38:30 +02:00
cb2778e206 refactor(avs): rework createAvsUserById, dealing with supervision (WIP) 2024-04-16 17:31:55 +02:00
a373abad26 refactor(avs): safe old card-no to perform pdf pin pass updates 2024-04-16 12:56:03 +02:00
3b7762f451 refactor(avs): rework createAvsUserById (WIP) 2024-04-16 11:40:55 +02:00
54c08cc64b refactor(avs): rework upsertAvsUserByCard/Id 2024-04-12 17:27:46 +02:00
1f7c175a58 refactor(avs): rework guessAvsUser 2024-04-11 17:54:45 +02:00
4c29150371 chore(AVS): implement user avs update to primary company as outlined in graph in wiki 2024-04-08 18:31:29 +02:00
d213c8e4a1 chore(AVS): (WIP) implement user avs update to primary company 2024-03-22 12:24:08 +01:00
7a5917131c chore(avs): WIP properly update userCompany upon AVS change 2024-03-21 16:55:23 +01:00
1c5ca24dc5 chore(avs): WIP keep supervision if company keeps email or address 2024-03-20 18:07:27 +01:00
4a51f94a8f chore(avs): WIP update UserCompany accodring to AVS 2024-03-19 18:29:38 +01:00
b51f8a454a chore(log): display admin problem table with actions on admin problem view 2024-03-18 18:01:36 +01:00
d625fbe8e3 chore(faq): update to fit Fraport AG 2024-03-15 17:06:08 +01:00
08d2f8c2fc chore(log): add admin problem table 2024-03-13 18:00:39 +01:00
66eaa4f7dc fix(build): minor error non-development code 2024-03-13 11:23:25 +01:00
724e4a0bec fix(build): add import needed for production only 2024-03-13 08:30:54 +01:00
dcb947b1fb refactor(email): eliminate userAddress function due to user company linked email 2024-03-12 13:02:38 +01:00
09d10e1ba2 refactor(user): empty postal uses high priority company address instead working 2024-03-08 18:06:52 +01:00
17a3541fe2 chore(db): ass comments on upsertManyWhere usage 2024-03-08 13:26:34 +01:00
9985151002 refactor(user): empty postal uses high priority company address instead (WIP) 2024-03-07 18:43:43 +01:00
c179c03f9d chore(avs): update company supervisors on avs user update 2024-03-06 13:41:18 +01:00
0b7175c26c refactor(avs): company upsert done
updating supervision is still a todo
2024-02-27 17:56:58 +01:00
d4f8a6c77b fix(doc): minor haddock problems 2024-02-21 08:24:32 +01:00
c382be9325 fix(avs): invalidate contact cache after licence writes 2024-02-19 17:28:40 +01:00
d578e80282 fix(avs): disable caching by 0s no longer causes an exception 2024-02-19 10:57:09 +01:00
57a4aeb475 refactor(avs): remove need for undecideable super classes by simply using a sensible class definition 2024-02-19 09:39:06 +01:00
caf8e8b71e chore(avs): add remaining queries to new unifying class 2024-02-14 18:03:48 +01:00
66ef4066b3 chore(avs): undecidableSuperclasses to sidestep consequences of type erasure 2024-02-14 13:28:19 +01:00
ae9be9e285 chore(release): 27.4.59 2024-02-13 21:15:49 +00:00
b39f69df12 chore(avs): remove avs_cards, add generic queries WIP 2024-02-13 19:05:10 +01:00
ad2375b338 fix(avs): fix #152 by providing new online avs card filter throughout 2024-02-13 17:05:30 +01:00
ef36e22f76 chore(avs): make avs timeouts setting configurable 2024-02-13 16:25:58 +01:00
99adff80cd chore(avs): add timeout to cardno filter 2024-02-13 13:39:28 +01:00
ce4869f155 Merge branch 'master' into fradrive/cr3 2024-02-13 10:21:09 +01:00
64797536e3 refactor(qualification): card filter accepts multiple cards now 2024-02-13 10:05:50 +01:00
d4f7dce716 chore(avs): card no filter basic functionality WIP compiles 2024-02-12 19:02:57 +01:00
192c733749 chore(health): migration for health defaults 2024-02-12 18:30:07 +01:00
42695cf5ef fix(sql): remove potential bug in relation to missing parenthesis after not_ 2024-02-12 12:00:40 +01:00
e2be8bbd5c chore(sql): examine #155 2024-02-12 11:30:54 +01:00
Sarah Vaupel
57f5cac75a chore(release): 27.4.58 2024-02-08 20:51:43 +01:00
99c3383581 Merge branch 'fradrive/health-interfaces' into 'master'
refactor interface-health

See merge request fradrive/fradrive!27
2024-02-08 07:59:38 +00:00
482dbe5c4e chore(dbtable): add FilterColumnIO and proof-of-concept
This commit adds a new type of filter to dbtables in module Pagination. The filter can perform an arbitrary IO action on its arguments before producing an sql/esqueleto filter expression.

Also, we turn some unnecessarily monadic code pure.
2024-02-07 17:38:53 +01:00
263894b058 fix(lms): previouly failed notifications will be sent again 2024-02-07 14:15:42 +01:00
3303c4eebf fix(health): negative interface routes working as intended now 2024-02-07 10:39:21 +01:00
618c78a69d chore(health): examining cause of #155 2024-02-07 10:23:51 +01:00
67552a666e refactor(health): optimize sql query, needs tests 2024-02-06 15:47:17 +00:00
2a0bca1230 refactor(health): interface-health
- send text/plain by default
- attempt to fix negative sub-filters for interface health
2024-02-06 15:37:00 +00:00
4a843fe30e refactor(health): simplfy code following HealthR handler 2024-02-06 10:48:54 +00:00
42f1a802b5 chore(health): getHealthInterfaceR responds to mime content type header 2024-02-06 10:32:00 +00:00
1464a9a582 chore(release): 27.4.57 2024-02-06 00:14:53 +00:00
ce3852e3d3 fix(health): fix #153 and offer interface health route matching 2024-02-05 18:54:50 +01:00
c71814d1ef fix(health): fix #151 by offering route /health/interface/* 2024-02-02 18:43:57 +01:00
bbb9f9fadb chore(health): telling interface table compiles 2024-02-02 17:16:19 +01:00
6d44f36e2a chore(lpr): add manual print-ack csv upload 2024-02-02 13:06:39 +01:00
47f853bd4a chore(health): stub that compiles 2024-02-01 10:35:31 +01:00
a592ad7094 chore(health): WIP new interface health handlers 2024-01-31 18:03:25 +01:00
798a07e36c chore(log): lpr log page made accessible 2024-01-31 12:43:12 +01:00
fd388b91f4 chore(lpr): error log as interface log 2024-01-30 18:42:13 +01:00
d1fce58ec2 refactor(utils): minor changes for timeoutHandler 2024-01-30 15:32:46 +01:00
4154b1f26b chore(utils): add timeoutHandler to run a sub-handler to be killed by timeout 2024-01-30 14:44:43 +01:00
f5d57d9e5e Merge branch 'master' into fradrive/cr3 2024-01-26 10:01:48 +01:00
a06f345391 chore(tutorial): aborted invite preserves identified users as form prefill 2024-01-26 10:00:38 +01:00
97471884f0 Merge branch 'master' into fradrive/cr3 2024-01-25 16:49:07 +01:00
28837c41ab chore(term): course list filtered by default to active term 2024-01-25 16:40:07 +01:00
9581e5513e Merge branch 'master' into fradrive/cr3 2024-01-25 13:19:34 +01:00
d332c0c11a fix(course): fix #147 abort addd participant aborts now
Check that runButtonForm will always work with the correct field ids!
2024-01-25 13:19:09 +01:00
f439ea45af fix(build): migration needs to check for table existens first 2024-01-23 19:20:32 +01:00
de45731a9b refactor(company): supervison and company tables changed
- company avs id must be unique now, companies with id 0 are deleted
- user supervision can be annotated with company and or a reason, used to avoid accidental supervision relations; company supervision resets ignore non-company supervisions
2024-01-22 18:54:33 +01:00
Sarah Vaupel
21e01df7aa chore(gitlab-ci): add .stack-work/ as backend dependency artifact 2024-01-22 08:53:02 +01:00
Sarah Vaupel
e4cf6ee79c chore(gitlab-ci): add backend dependencies setup with (more) proper caching 2024-01-22 07:42:33 +01:00
Sarah Vaupel
e0c2fb9caf chore(Makefile): add target for stack dependencies only 2024-01-22 07:41:53 +01:00
Sarah Vaupel
c7bebde103 chore(gitlab-ci): use previous nodejs 2024-01-22 05:57:14 +01:00
Sarah Vaupel
16fa964893 chore(gitlab-ci): use make in pipeline 2024-01-21 17:05:10 +01:00
Sarah Vaupel
9c0c013b97 chore: add Makefile, update flake.nix and shell.nix for dependencies 2024-01-21 17:03:16 +01:00
f40448cd31 refactor(avs): minor code cleaning 2024-01-19 16:59:42 +01:00
9bf38d8198 chore(avs): email updating implemented 2024-01-18 17:19:44 +01:00
e8d66a4734 chore(avs): lenses for virtual avs fields created 2024-01-17 19:04:42 +01:00
45c3f11a83 chore(avs): add failure notices after contact update 2024-01-12 18:13:23 +01:00
cb807fce98 refactor(avs): using MaybeT 2024-01-12 16:57:17 +01:00
b5340a18a2 chore(avs): heterogeneous list working 2024-01-12 15:48:54 +01:00
83afdf760f fix(build): missing parameters added 2024-01-12 10:31:33 +01:00
61aba7e515 updateAvsUser (partial) requires migration 2024-01-11 19:23:35 +01:00
b566e59eb1 fix(firm): supervisor filter acts weird in test environment
no cause discerned, test in dev evironment were all fine. Maybe the sorting assumption wasn't right?

note other filters do not interfere with the memcaching in experiments
2023-12-21 17:26:46 +01:00
2356bf80a5 chore(release): 27.4.56 2023-12-20 21:23:33 +00:00
decc5af682 fix(users): fix #121 by providing last login column, which was the last part missing 2023-12-20 16:31:59 +01:00
c7b5a3c6cb fix(firm): improve supervisor filter yet once more 2023-12-20 09:02:10 +01:00
88f24fe6f1 fix(firm): improve supervisor filter by caching 2023-12-19 18:15:09 +01:00
dd5d283f88 chore(release): 27.4.55 2023-12-14 12:58:09 +00:00
1d48b627f6 fix(migration): ignore superfluous migration entries gracefully 2023-12-14 11:11:00 +01:00
a4b2af7f15 fix(build): while the blank is necessary to prevent unnecessary migrations, it is not allowed either, see #133 2023-12-14 11:10:21 +01:00
2509358878 fix(school): fix #133 by adjusting default value 2023-12-14 09:26:18 +01:00
f36f234c42 chore(firm): improve efficiency of foreign supervisor filter 2023-12-13 16:25:11 +01:00
ce45d26a21 chore(error): revert 54a956dc36 ff since it did not help towards #40 2023-12-13 16:20:17 +01:00
db77850c4f fix(firm): supervisor filter performance 2023-12-12 18:23:52 +01:00
d4f0d69428 fix(migration): fix #133 by removing old outdated migrations irrelevant to FRADrive 2023-12-12 12:33:21 +01:00
4dbf226e02 chore(release): 27.4.54 2023-12-11 21:30:50 +00:00
b73557a1ee fix(db): prevent superfluous migrations 2023-12-11 17:22:41 +01:00
8b93b6a665 chore(release): 27.4.53 2023-12-09 10:40:48 +00:00
5ea0289eb7 chore(log): log lms background tasks running 2023-12-09 10:40:16 +00:00
30fae33ded fix(admin): minor fixes and translations for admin problem page 2023-12-08 11:52:15 +01:00
4c39670866 chore(avs): proper problem display on admin page 2023-12-08 10:34:21 +01:00
5c8a571c76 refactor(avs): show avs problems within interface table 2023-12-07 17:32:51 +01:00
fb20defc42 refactor(log): simplify interface logging
Since each interface log also triggers an AuditLog entry, the additional data about user and instance do not need to be saved twice
2023-12-07 16:59:10 +01:00
48ef25aa8f fix(avs): background synch was only triggerd by manual synchs 2023-12-07 16:58:04 +01:00
0b9a1257db chore(admin): show lms and sap interface status on problem page 2023-12-07 13:16:55 +01:00
c334fa4bf3 chore(log): add interface usage table 2023-12-06 18:03:35 +01:00
9409cfeb81 chore: reuse lint 2023-12-06 13:06:20 +00:00
2b5682e3f3 chore: reuse lint 2023-12-06 13:04:47 +00:00
3aa89019a8 fix(form): multiSelectField working with grouped options 2023-12-06 11:50:08 +01:00
fc0ca7b854 fix(firm): group multi select field supervisor
However, grouped multi select does not work for some reason.
2023-12-05 18:39:59 +01:00
9878956716 fix(firm): set supervisor field not all fields required 2023-12-05 12:12:51 +01:00
3acb847915 fix(firm): supervisor filter 2023-12-05 11:52:13 +01:00
a15862ea72 fix(print): keep print jobs on user merge and lms id deletion 2023-12-04 16:03:31 +01:00
527a270cbf chore(release): 27.4.52 2023-12-01 21:26:09 +00:00
50eda5f65f fix(build): redundant parenthesis 2023-12-01 18:36:21 +01:00
fcc802753a chore(lms): remove obsolete lms handlers v1 2023-12-01 18:11:17 +01:00
df6a7ee1e2 chore(lms): deactivate lms synch by default 2023-12-01 17:04:42 +01:00
6aa06292b8 Merge branch 'fradrive/company' 2023-12-01 17:02:55 +01:00
1d3345cbba fix(firm): supervisor changes led to inconsistent DB 2023-12-01 16:55:51 +01:00
34c0928718 chore(firm): add switch supervisor status 2023-12-01 16:12:10 +01:00
b1ce55597e chore(lms): remove debug code 2023-12-01 13:29:38 +01:00
75e4975c52 refactor(mail): course and firm message are sent only once to each supervisor 2023-11-30 18:32:25 +01:00
ef9a5dc5a9 chore(firm): disallow supervisors on firm routes for now 2023-11-29 16:22:09 +01:00
929eb1b175 chore(firm): hide supervision key data by default 2023-11-29 13:22:34 +01:00
57d9447b4f chore(firm): update table action access rights 2023-11-29 13:18:30 +01:00
08b05849b0 style(frontend): prefer Arial over Liberation 2023-11-29 01:01:23 +00:00
6debee64a0 style(frontend): use local FRADrive Sans in application 2023-11-29 00:45:38 +00:00
2aa6d5e249 chore(assets): add FRADrive Sans and Mono fonts (derived from Liberation Sans and Mono) 2023-11-29 00:43:50 +00:00
a1592d5871 chore(frontend): remove old/deprecated typeface dependencies 2023-11-28 22:11:27 +00:00
eb541b4e91 chore(firm): add action to change individual supervisors 2023-11-28 18:54:16 +01:00
92aca1b830 refactor(performance): disable modalAccess use for known admins
modalAccess displays a link to modal only
if the user has the rights to follow that link.
However, for large dbTables this checking takes
too long. So we use a conventional modal instead again.
Worst-case: some non-admins are shown links that they cannot follow
2023-11-28 15:32:33 +01:00
0a06efd76c fix(firm): restrict firm access to company supervisors only 2023-11-27 17:49:06 +01:00
640a2e61d1 chore(messages): Add SomeMessages newtype
SomeMessages provides a RenderMessage instance for a list of messages.
2023-11-27 12:29:25 +01:00
17bde4de09 chore(release): 27.4.51 2023-11-24 19:55:43 +00:00
a166ac181f Merge branch 'fradrive/company' 2023-11-24 18:02:55 +01:00
06bb44cf71 fix(build): minor errors firm handler 2023-11-24 18:02:03 +01:00
fcceef265d Merge branch 'fradrive/company' 2023-11-24 17:45:04 +01:00
212cb71807 chore(firm): limit firm action access to admins 2023-11-24 17:44:27 +01:00
2636c9d41a refactor(firm): clean firm interface
- multiactions working
- several code redundancies removed
2023-11-24 17:31:34 +01:00
092a4c78d5 Merge branch '110-crontab' into 'master'
Resolve "Crontab appQualificationCheckHour funktioniert nicht"

Closes #110

See merge request fradrive/fradrive!22
2023-11-24 15:56:34 +00:00
fb41caceff Resolve "Crontab appQualificationCheckHour funktioniert nicht" 2023-11-24 15:56:34 +00:00
0b00fffd27 chore(nix): change killall-uni2work to killuni2work for ease of use 2023-11-24 11:45:07 +01:00
076dff2a60 Revert "chore(nix): attempt to create alias for killall-uni0work"
This reverts commit dc6079ec3b.
2023-11-24 11:44:16 +01:00
e645517d32 refactor(firm): FirmAllR messaging no works again! 2023-11-23 18:36:02 +01:00
577a2fb45d refactor(firm): FirmAllR messaging no longer works now
What did change? Nothing here is essential?!
2023-11-23 18:29:12 +01:00
b10cbc39cc refactor(firm): FirmAllR messaging working old way 2023-11-23 18:22:00 +01:00
8973ea5849 refactor(firm): WIP generalize firm actions 2023-11-23 18:06:00 +01:00
dc6079ec3b chore(nix): attempt to create alias for killall-uni2work 2023-11-23 18:05:16 +01:00
400a3449c5 refactor(firm): fix build too 2023-11-23 13:27:57 +01:00
c5c4a62de0 chore(firm): various
- multiSelectField working
- section hiding demo working
- modal links access rights checking
2023-11-22 17:59:15 +01:00
7fc6e43131 chore(profile): allow editing phone numbers 2023-11-22 17:58:03 +01:00
4ae59fc1fa fix(cache): remove risky caching for submissions 2023-11-22 17:03:01 +01:00
cf5759bc60 chore(firm): hide general actions 2023-11-22 17:02:12 +01:00
60fc5f8b63 Merge branch 'fradrive/company' into 'master'
Fradrive/company

Closes #67

See merge request fradrive/fradrive!23
2023-11-22 08:08:48 +00:00
5163ed06c6 fix(build) 2023-11-21 18:49:33 +01:00
83bab6b86b chore(firm): implement fix #67 Maske Firmen 2023-11-21 18:45:51 +01:00
b9f2d3bda4 chore(firm): add setting for global communications cc 2023-11-21 16:53:06 +01:00
b7d6474ace refactor(firm): messaging performance 2023-11-21 13:33:12 +01:00
0f9a7a8c53 fix(firm): show default supervisors with no employees too 2023-11-20 15:02:44 +01:00
8f8b6d84ae chore(release): 27.4.50 2023-11-17 18:26:26 +00:00
975c9c6c00 Merge branch 'fradrive/company' 2023-11-17 17:55:35 +00:00
4fa7385154 fix build 2023-11-17 18:55:03 +01:00
44c4b3b6a8 chore(firm): implement several table actions; add supervisor form 2023-11-17 18:54:34 +01:00
715b751363 chore(firm): add columns and filters and refactor some 2023-11-16 18:49:41 +01:00
612d975384 chore(firm): reset supervisors for FirmAllR working 2023-11-15 18:02:52 +01:00
8c4f848675 fix(avs): preserve unset pin passwords in update 2023-11-15 15:30:37 +01:00
6761767c6c fix(lms): LMS restart failing due to old LmsUser entry 2023-11-15 12:42:04 +01:00
ecde6b0fac chore(firm): add supervisor reset utility functions 2023-11-14 18:26:00 +01:00
698a9c5497 refactor(firm): msg, titles and headings 2023-11-14 17:37:05 +01:00
65cdc8ddfe fix(firm): firm messaging now works fine 2023-11-14 16:55:14 +01:00
42ff02d27e fix(firm): sending messages works, but not test messages 2023-11-14 12:57:51 +01:00
25c4ba7136 chore(messaging): add debugging statements 2023-11-13 18:07:30 +01:00
a6fb00f072 minor refactor 2023-11-13 17:10:27 +01:00
71c290996d refactor(firm): performance foreign-supervisor filter 2023-11-10 17:00:10 +01:00
674f6fd81f fix(build) 2023-11-10 08:01:02 +00:00
63e6d94df2 fix(firm): add sql indices for frequent filters to greatly enhance performance 2023-11-09 18:08:17 +01:00
5d8802732a debug(firm): attempt to find error when using firm communication 2023-11-09 18:07:39 +01:00
a360101d44 chore(release): 27.4.49 2023-11-09 03:33:42 +00:00
f627de503e Merge branch 'master' into fradrive/company 2023-11-08 17:58:31 +01:00
9ee80f8f7f chore(lms): message action done for firm views 2023-11-08 17:41:59 +01:00
390ff317ea fix(lms): report log did not match qualification 2023-11-08 15:56:35 +00:00
a24e44efc9 fix(build): fix whitespace in routes 2023-11-08 13:16:09 +01:00
a98c3190e0 chore(firm): messaging almost complete - illegal variable name splicing dispatch 2023-11-08 13:00:31 +01:00
8500e72dee chore(release): 27.4.48 2023-11-07 21:03:15 +00:00
631d157688 chore(firm): add messaging action (WIP) 2023-11-07 18:38:21 +01:00
3865bda64d fix(lms): improve sorting for firm all 2023-11-07 17:29:57 +01:00
2d37315d18 chore(lms): log newly unreported idents 2023-11-07 17:06:46 +01:00
5936435c54 Revert "fix(lms): mark as ended only if not seen for at least one day"
This reverts commit 8165892b2e
2023-11-07 11:50:01 +00:00
8165892b2e fix(lms): mark as ended only if not seen for at least one day 2023-11-07 11:35:12 +00:00
069561763c refactor(firm); supervisor table sorting and company column 2023-11-06 12:17:11 +01:00
2c12477c57 fix minor typo 2023-11-03 18:05:18 +01:00
53f54189f9 chore(firm): add supervisor table stub 2023-11-03 17:55:56 +01:00
d2b20674f5 chore(release): 27.4.47 2023-11-03 15:29:40 +00:00
67da3c99f2 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-11-03 15:28:56 +00:00
2aa14ee2e1 chore(release): 27.4.46 2023-11-03 15:28:42 +00:00
5f7b2aac26 chore(sap): more test for compileBlocks 2023-11-03 15:28:16 +00:00
7373bc9147 chore(lms): re-add dedicated lms audit log table
removed in commit 71cde92, but freuquent lms errors make a dedicated log table for all unprocessed input necessary
2023-11-03 15:38:41 +01:00
d7a94b9619 chore(lms): include lms ids in qualification audit log events triggered by e-learning 2023-11-03 14:41:31 +01:00
a42e8a88f0 chore(company): prune company all overview, extend individual company view 2023-11-02 18:54:39 +01:00
ce7597238d fix build 2023-10-31 17:47:52 +01:00
bb7b7cf3dc chore(firm): add filters for firm postal address and foreign supervisors 2023-10-31 17:06:56 +01:00
ef0d71e19e chore(firm): add filter for foreign supervisors 2023-10-30 18:01:12 +01:00
13ee3e7315 chore(firm): separate firm name nr filters 2023-10-30 17:18:04 +01:00
647964fc35 chore(firm): add users filter for (foreign) supervisors 2023-10-27 18:36:39 +02:00
90703f4921 chore(firm): implement firm-users dbTable 2023-10-27 17:30:46 +02:00
ff176faa12 chore(users): remove duplicated link from company personal number 2023-10-27 17:28:00 +02:00
230ca0c40f chore(auth): add firm routes to superviser auth tag 2023-10-27 17:26:27 +02:00
0ab1cd17be chore(firm): add contact preference column
and make firm nr filter exact
2023-10-27 13:34:37 +02:00
0f3bf98235 chore(firm): firm users page shows company address 2023-10-26 19:13:01 +02:00
aae1926840 chore(firm): add explanation to firm page and clean navigation 2023-10-26 17:55:20 +02:00
954a23936a fix(build): minor 2023-10-26 12:44:01 +02:00
a29d8f3698 chore(firm): add more useful supervisor counts 2023-10-26 10:30:27 +00:00
47166094e7 Merge branch 'master' into fradrive/company 2023-10-26 08:27:46 +00:00
16933d53ce chore(nix): setup system-wide fonts dir inside docker image 2023-10-25 04:12:46 +00:00
a55518b822 chore(gitlab-ci): remove font ci variables from pipeline definitions 2023-10-25 03:18:22 +00:00
6545ccb21c chore(gitignore): undo font dir ignore 2023-10-25 03:17:10 +00:00
d0d92998d7 Merge branch 'master' into fradrive/fraport-corporate-design 2023-10-25 02:56:47 +00:00
06f4024426 chore(gitlab-ci): remove workflow rules to enable pipeline for all branches 2023-10-25 02:41:53 +00:00
14e20a33d5 chore(gitlab-ci): install and decode font ttfs 2023-10-24 21:37:58 +00:00
8bad468b04 chore(node-deps): add ttf2woff as dev dep 2023-10-24 20:34:45 +00:00
dc8c9f662c chore(nix): remove debris 2023-10-24 20:34:13 +00:00
36c822c747 style(frontend): switch to fraport fonts for app 2023-10-24 20:33:48 +00:00
654b7eb0cb chore(gitignore): do not publish font files (for now) 2023-10-24 20:32:01 +00:00
4abf6aa221 Merge branch 'master' into fradrive/company 2023-10-24 16:14:08 +00:00
a28786412e chore(firm): add firm-all filters and code cleaning 2023-10-24 16:13:31 +00:00
9ca9c38830 chore(users): allow multiple filter criteria for avs no and personal no 2023-10-24 14:55:55 +00:00
315eedd1bc chore(users): allow admins to change foreign emails without confirmation 2023-10-24 13:01:59 +00:00
dfa03f8ba8 refactor(firm): dbTable form for firm all with selection box working now 2023-10-24 10:07:12 +00:00
19eea7abe8 chore(firm): change dbTable to form with selection box (WIP) 2023-10-24 09:08:04 +00:00
ebecbf5c7f chore(firm): add table actions (WIP) 2023-10-23 13:58:01 +00:00
18b9df974a Merge branch 'master' into fradrive/company 2023-10-23 12:24:41 +00:00
29bffb6a47 chore(users): filter supervisors 2023-10-23 12:23:07 +00:00
a9d56c51dc fix(users): allow prefer postal setting for users with fraport department 2023-10-23 09:57:57 +00:00
603f04f026 Merge branch 'master' into fradrive/company 2023-10-20 16:45:42 +00:00
6d221fa3c2 chore(firm): add rerouting counts 2023-10-20 16:44:55 +00:00
601ce7abdf fix(firm): foreign supervisor counts correct and sortable 2023-10-20 15:29:40 +00:00
4cdf39a1fd chore(firm): sorting by employee and supervisor numbers 2023-10-19 16:42:37 +00:00
cd9b542265 chore(audit): qualification schedule renewal changes are logged to audit log 2023-10-19 15:01:24 +00:00
5d8d8cf17e fix(course): grant qualifications now issues and unblocks 2023-10-19 11:21:35 +00:00
47987a7e09 chore(release): 27.4.45 2023-10-18 23:46:35 +00:00
09c516c0b1 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-10-18 15:55:10 +00:00
19b3570dda Merge branch 'master' of https://gitlab.uniworx.de/fradrive/fradrive 2023-10-18 17:54:04 +02:00
c011d887ce fix(hoogle): remove erroneous comment 2023-10-18 17:53:00 +02:00
92e83475a9 chore(firm): link firms throughout 2023-10-18 15:45:59 +00:00
41cb7d2abc chore(sap): more test for compileBlocks 2023-10-18 15:03:19 +00:00
fde97b048a fix(sap): yet another fix for finding date intervals 2023-10-18 14:38:02 +00:00
ebf250bd8c chore(release): 27.4.44 2023-10-18 06:55:47 +00:00
d81e6e15dc chore(firm): WIP company overview 2023-10-17 16:09:48 +00:00
db4b1d8730 Merge branch 'master' into fradrive/company 2023-10-17 15:11:41 +00:00
3924d14abd fix(sap): combineBlocks yet another bug squashed 2023-10-17 16:56:56 +02:00
f4adfdf872 fix(sap): combine immediate next day licence chnages for SAP 2023-10-17 13:57:19 +02:00
cbb44f106a fix(sap): combine immediate next day licence chnages for SAP 2023-10-17 12:19:47 +02:00
b4a88abcf8 fix(sap): compileBlocks 2023-10-16 17:53:45 +00:00
22f651ee44 Merge branch 'master' into fradrive/company 2023-10-16 06:40:23 +00:00
a57cdde450 chore(release): 27.4.43 2023-10-13 20:05:40 +00:00
11861c4d01 chore(sap): transmit multiple block/unblocks 2023-10-13 15:32:19 +00:00
1e81ff5ec5 Merge branch 'master' into fradrive/company 2023-10-13 08:50:04 +00:00
cfec7874e6 chore(release): 27.4.42 2023-10-12 20:29:57 +00:00
855aee7f78 chore(SAP): send latest blocking 2023-10-12 16:11:47 +00:00
e831a76c27 chore(firm): fix imports 2023-10-12 14:50:42 +00:00
f888da3ab0 fix(build): Update ParticipantInvite.hs 2023-10-11 13:56:47 +00:00
fa4f9b2447 fix(build): Update ParticipantInvite.hs 2023-10-11 10:52:44 +00:00
aca6cd5f4e Merge branch 'master' into fradrive/company 2023-10-11 10:17:40 +00:00
87f0b2edab fix(build): Update Utils.hs 2023-10-11 09:18:22 +00:00
16d0fdd1c8 chore(course): change default name for tutorial to %y_%m_%d 2023-10-11 08:46:25 +00:00
8fcfc9586e chore(firm): wip all firm table query 2023-10-10 15:11:56 +00:00
bc0b449689 fix build 2023-10-09 16:30:07 +00:00
9caf2af540 chore(firm): initial stub 2023-10-09 07:24:01 +00:00
be527ada32 refactor: minor code cleaning 2023-10-06 15:07:34 +00:00
e3b6a7e4c6 chore(qualification): block expired qualification users explicitly 2023-10-06 11:16:49 +00:00
f776aaaef5 chore(lms): prefix lms-ident with qualification shorthand 2023-10-06 09:14:19 +00:00
c75d914dc3 chore(release): 27.4.41 2023-10-04 15:58:57 +00:00
55ea2c26f4 chore(bump): non-essential commit 2023-10-04 15:58:23 +00:00
6355f81f02 flake.nix: wrap stack using pkgs-recent 2023-10-04 14:48:37 +00:00
95857b4624 stack.nix: conform to new flake.nix stack-wrapped 2023-10-04 14:48:28 +00:00
dd67429139 shell-nix: remove node2nix (non-existant) and profiteur (ghc-prof currently markes as broken) 2023-10-04 14:48:12 +00:00
b7d4f6913d fix(print): apc ident aliases did not stop at first success 2023-10-04 08:18:46 +00:00
60644528fc refactor(lms): show deletion days parameter and ensure audit log period is accounted for 2023-09-28 15:05:04 +00:00
9ac275c9eb chore(lms): minor clarifications about lms resetting 2023-09-28 11:36:24 +00:00
8b0218ba89 refactor(qualification): more efficient correct code to discern expiry notifications 2023-09-28 11:29:02 +00:00
382fa7fc07 chore(lms): disable inefficient non-working filter for qusertonotify 2023-09-27 15:43:56 +00:00
cdb23115ef refactor(lms): clean lms handling code 2023-09-27 15:36:05 +00:00
ae4470333e fix(lms): sorting and filtering lms status works throughout now 2023-09-27 09:31:50 +00:00
f48862efbc fix(lms): sorting and filtering lms status 2023-09-26 16:15:58 +00:00
095fde54b7 chore(release): 27.4.40 2023-09-26 09:56:50 +00:00
330e89bb6b chore(release): 27.4.39 2023-09-26 09:55:46 +00:00
a84812640f fix(lms): do not mark lms users with open status as ended 2023-09-26 09:55:16 +00:00
bb708ca540 fix(qualifications): latest block could ignore itself 2023-09-25 15:46:48 +00:00
f7b2f35421 refactor(lms): clean code for nicer links in lms status widget 2023-09-25 15:39:09 +00:00
81b821c88a chore(lms): better links in lms status widget 2023-09-25 15:25:38 +00:00
50e4f297b8 chore(release): 27.4.38 2023-09-21 16:08:02 +00:00
8896885bd9 Revert "hotfix(lms): lms learner filename for test system changed from qsh to t. !!! REVERT BEFORE PRODUCTION!!!"
This reverts commit dfa96c7f3e.
2023-09-21 16:02:08 +00:00
9bc9a0f1b9 chore(release): 27.4.37 2023-09-21 14:41:29 +00:00
cb9e09d071 fix(lms): disable workaround for late lms success 2023-09-21 14:41:00 +00:00
9bb2586c1e chore(release): 27.4.36 2023-09-21 14:32:57 +00:00
61d414e3d5 chore(qualifications): restrict regular renewal to half valid duration 2023-09-21 14:32:32 +00:00
e59a2fc373 Merge branch 'test' 2023-09-21 13:02:14 +00:00
54531a6da9 chore(release): 27.4.35 2023-09-21 09:10:57 +00:00
db06f5fe42 chore(lms): deactivate debug column lms view 2023-09-21 09:10:32 +00:00
a320ed498a chore(lms): fix build erroneous signature 2023-09-21 09:08:35 +00:00
273cc288d4 chore(lms): more discreet debug info for simultaneous blocks 2023-09-21 08:17:43 +00:00
e17b26a363 chore(release): 27.4.34 2023-09-21 03:09:00 +00:00
a72142352e chore(release): 27.4.34 2023-09-20 21:52:17 +00:00
11752dc5ac fix(lms): treat simultaneous blocks/unblocks correctly 2023-09-20 14:52:01 +00:00
29e5ed25df Merge branch 'test' 2023-09-20 12:29:41 +00:00
88e6e8f329 chore(release): 27.4.33 2023-09-20 11:15:37 +00:00
dfa07a95eb fix(time): midnight timezone conversion bug eliminated 2023-09-20 11:14:47 +00:00
520e649fc8 chore(lms): minor refactoring for selectValidQualifications 2023-09-20 09:51:43 +00:00
967341fa1e chore(release): 27.4.32 2023-09-19 18:32:14 +00:00
2bdb85faa1 chore(lms): full timestamps in LmsStatus too 2023-09-19 18:31:20 +00:00
726b05bbe1 chore(lms): allow full timestamps in LmsReport 2023-09-19 16:42:20 +02:00
16b6b33c37 chore(lms): disable workaround for lms success after failure 2023-09-19 12:56:51 +00:00
ecd1a0fc21 fix(lms): simultaneous block/unblock lets unblock win in all situations 2023-09-19 12:56:19 +00:00
b85c8bd74f fix(lms): ensure lms uniqueness across all qualifications 2023-09-18 15:34:58 +00:00
1f677ba56b chore(model): thoghts on qualification dependencies 2023-09-18 14:39:08 +00:00
a39dfd58d8 chore(release): 27.4.31 2023-09-13 01:11:55 +00:00
dfa96c7f3e hotfix(lms): lms learner filename for test system changed from qsh to t. !!! REVERT BEFORE PRODUCTION!!! 2023-09-12 12:59:40 +00:00
b591e22880 chore: fix minor typo 2023-09-12 12:57:00 +00:00
3ef94a390c chore(release): 27.4.30 2023-09-11 20:51:30 +00:00
391c87be9f chore(avs): fix #113 by showing avs problems 2023-09-11 16:24:24 +00:00
8b0737e2aa fix(lms): reset e-learning more lenient 2023-09-11 16:01:43 +00:00
93052f5e74 chore(sql): add two indices for qualification user 2023-09-11 13:11:13 +00:00
6039d1d4b7 chore(release): 27.4.29 2023-09-07 20:15:04 +00:00
ac77aa176a fix(build): v2 2023-09-07 20:14:29 +00:00
6df9e456a6 chore(release): 27.4.28 2023-09-07 17:03:57 +00:00
c4a0eb647a fix(build) 2023-09-07 17:03:35 +00:00
82c3243caf chore(release): 27.4.27 2023-09-07 16:21:33 +00:00
1286dc7e78 chore(avs): add firm communication address field to json parser 2023-09-07 16:20:55 +00:00
b68eff63ca fix(build) 2023-09-07 10:34:57 +00:00
7f5687b43d Merge branch 'test' of gitlab.uniworx.de:fradrive/fradrive into test 2023-09-06 16:04:45 +00:00
30e5694712 refactor(set): minor refactor using foldMap 2023-09-06 16:04:41 +00:00
bf53c639e7 chore(table): allow compulsory multi filter criteria 2023-09-06 15:58:18 +00:00
52bb1db947 chore(db): create indices for frequent filter conditions
Indices are automatically created for all primary keys and all unique columns, but for frequent filter conditions that are not unique and which yield a small result set, and index speeds up computation.
2023-09-06 15:22:37 +00:00
7e756985ce chore(apc): remove apc processing delay 2023-09-06 14:00:07 +00:00
875d79bf01 chore(lms): improve audit log for start and reset 2023-09-05 15:17:04 +00:00
3c5cffb409 chore(print): improve pdf metadata to include apc ident 2023-09-05 17:03:18 +02:00
0fd436a3cb chore(pdf): add apc-ident to pdf metadata 2023-09-05 13:11:04 +00:00
c8e1de6a86 chore(release): 27.4.26 2023-09-04 20:28:03 +00:00
a7ed659866 fix(lms): accept success for no-status learners and print several more debug messages processing reports 2023-09-04 15:52:06 +00:00
0b19705e80 chore(release): 27.4.25 2023-09-01 20:20:39 +00:00
4754ad4b80 chore(lms): allow table filtering by multiple LMS ids and names in several views 2023-09-01 15:11:26 +00:00
1fd24f608d fix(build): add missing file 2023-09-01 10:38:14 +00:00
6052af4d90 refactor(apc): speed up apc id acceptance by delayed processing 2023-08-31 15:34:40 +00:00
f7ad290053 chore(lms): clean learner icons and sorting 2023-08-31 12:22:47 +02:00
9a63bebe1b chore(release): 27.4.24 2023-08-30 15:44:15 +00:00
dc9e910e26 chore(lms): update navigation links for LMS V2 2023-08-30 15:43:42 +00:00
a74c3d80ca fix(lms): filter by status 2023-08-30 15:11:28 +00:00
7298b00628 chore(debug): admin test page generates a log entry 2023-08-30 09:52:22 +00:00
a452b032c4 fix(lms): negate learner locking condition 2023-08-30 07:44:38 +00:00
172b5086dc chore(release): 27.4.23 2023-08-29 23:05:53 +00:00
da26901f8b chore(lms): minor fix reset tries conditions 2023-08-29 15:26:13 +00:00
1b668c7b28 chore(release): 27.4.22 2023-08-29 14:25:33 +00:00
69d689fe90 chore(lms): fix #93 2023-08-29 11:27:35 +00:00
d9a6eab833 chore(lms): reset tries mechanism implemeneted, display still todo 2023-08-28 15:48:04 +00:00
2909deb4f6 chore(lms): WIP reset tries and lock logic part 1 2023-08-25 15:31:26 +00:00
c6f2b21927 Merge branch 'test' into fradrive/lms-type-refactor 2023-08-25 14:10:55 +00:00
34ada53de0 fix(build): refix test commits somehow 2023-08-25 13:58:21 +00:00
e8c9c2199e Merge branch 'test' into fradrive/lms-type-refactor 2023-08-25 12:56:18 +00:00
3085b8d91d chore(lms): implement report dispatch job DONE 2023-08-25 12:35:21 +00:00
12f4bcfa1b chore(lms): WIP implement report dispatch job, PART 2 2023-08-24 15:45:54 +00:00
9c156f1b58 chore(lms): WIP implement report dispatch job 2023-08-23 15:42:55 +00:00
8ecdaca4d6 Quickfix for apc sever seeing ligatures that do not exist 2023-08-22 08:56:43 +00:00
9131d99fa3 chore(release): 27.4.21 2023-07-26 09:01:19 +00:00
3014b68992 Merge branch 'master' into test 2023-07-26 08:59:44 +00:00
5397c7be35 fix(qualification): new block/unblock mechanism working now 2023-07-26 08:59:08 +00:00
6cec571341 chore(audit): confine audit log messages to a single long line 2023-07-26 08:55:48 +00:00
88bf21c9c5 fix(users): fix #112 working now 2023-07-26 08:55:12 +00:00
35096ace01 fix(users): fix #112 and also add some convenience 2023-07-25 15:21:28 +00:00
9cf7f3965a fix(block): negate condition to test 2023-07-24 13:50:16 +00:00
b4ba0a30dc fix(apc): apc cannot distinguish ij from ji, partial fix only. Needs new font 2023-07-24 13:40:12 +00:00
8d64ca9842 chore(apc): remove outdate workaround 2023-07-24 15:33:36 +02:00
20b3a39bc3 chore(lms): WIP V2 Report pages done, job and lms-main page to do 2023-07-21 15:47:57 +00:00
b84577984a chore(lms): WIP V2 Learners 2023-07-20 16:00:08 +00:00
00d8d684f4 chore(lms): WIP v2 using LmsState 2023-07-20 12:49:45 +00:00
8bcdbd95f0 chore(lms): WIP towards new interface 2023-07-18 15:20:44 +00:00
a25acfac05 chore(release): 27.4.20 2023-07-18 15:10:41 +00:00
5bb49cd889 fix(build): prevent migration on non-existing table 2023-07-18 14:58:00 +00:00
21ab898607 chore(release): 27.4.19 2023-07-17 14:56:05 +00:00
a06ec1b298 Merge branch 'master' into fradrive/lms-type-refactor 2023-07-17 14:51:14 +00:00
26ce2b83e2 chore(admin-jobs): implement JobActionData as dbtable action res 2023-07-17 14:47:50 +00:00
9422892f72 Merge branch 'master' into fradrive/lms-type-refactor 2023-07-17 14:33:59 +00:00
15ab17aeca Merge branch 'test' into 'master'
Second container deployment on test branch

See merge request fradrive/fradrive!20
2023-07-17 14:16:07 +00:00
f72e020dfe Merge branch 'master' into test 2023-07-17 14:15:23 +00:00
aa9c1ad5e2 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-07-17 14:12:23 +00:00
a825cc814e chore(release): 27.4.18 2023-07-17 13:52:21 +00:00
9651104d0f chore(release): 27.4.16 2023-07-17 13:51:12 +00:00
b57297ce1b chore(release): 27.4.15 2023-07-17 13:48:56 +00:00
9818cc6186 chore(release): 27.4.17 2023-07-17 13:47:53 +00:00
82db2e5bd4 chore(release): 27.4.16 2023-07-17 13:47:02 +00:00
747bd50cfb chore(release): 27.4.15 2023-07-17 13:45:16 +00:00
eb6d868a11 bumb version 2023-07-17 11:16:17 +00:00
3a7b55ac8e Update .gitlab-ci.yml file 2023-07-16 23:10:00 +00:00
0bfe34b61e chore(release): 27.4.18 2023-07-16 19:19:03 +00:00
993be351e2 chore(gitlab-ci): use CI_COMMIT_REF_NAME 2023-07-16 19:18:47 +00:00
f60d8dddc7 chore(release): 27.4.17 2023-07-16 19:09:15 +00:00
53b2d37478 Update .gitlab-ci.yml file 2023-07-16 19:07:24 +00:00
bca7afe92d Update .gitlab-ci.yml file 2023-07-16 19:06:44 +00:00
b53166f75e chore(release): 27.4.16 2023-07-16 14:56:09 +00:00
94865d1581 chore(release): use current origin instead of master 2023-07-16 14:55:52 +00:00
d1738c2963 chore(release): 27.4.15 2023-07-16 14:52:11 +00:00
d0e45ff2f1 chore(npm): use release script for determining version tag prefix 2023-07-16 14:51:19 +00:00
1e74770ea2 chore(gitlab-ci): use flake.nix instead of manually constructing flake url 2023-07-15 16:24:19 +00:00
c8a3625e31 chore(gitlab-ci): change test container destiny 2023-07-15 15:52:33 +00:00
ccfe440530 chore(gitlab-ci): use separate parse test changelog 2023-07-15 12:20:25 +00:00
dc14600478 chore(gitlab-ci): update workflow rules 2023-07-15 12:16:06 +00:00
1254e95fce chore(gitlab-ci): separate release-test command and tags 2023-07-15 12:13:22 +00:00
904f07a0b6 chore(gitlab-ci): test release 2023-07-15 12:00:44 +00:00
fbf58f5aec chore(gitlab-ci): upload test container 2023-07-15 11:51:34 +00:00
0c1e1d934f chore(gitlab-ci): add test branch to workflow rules 2023-07-15 11:43:08 +00:00
9b9e892612 chore(release): 27.4.14 2023-07-15 02:56:45 +00:00
16a1c1effe chore(is-clean.sh): fix branch check 2023-07-14 23:38:22 +00:00
289ce8acf8 chore(gitlab-ci): add test container job 2023-07-14 23:36:42 +00:00
3646aa8fa5 chore: conform to reuse spec 2023-07-14 23:09:02 +00:00
6903bc82f8 chore: conform to reuse spec 2023-07-14 22:59:51 +00:00
0567f438f6 chore(is-clean.sh): also allow releases on test branch 2023-07-14 22:45:19 +00:00
bfe9bfda0a chore(package.json): reintroduce is-clean check before release 2023-07-14 22:44:52 +00:00
5249abbe20 chore: update flake.nix 2023-07-14 22:39:34 +00:00
f63f38bdaa chore(nix): rename demo docker to test docker and remove additional config and dependencies 2023-07-14 22:36:30 +00:00
9b77bfcdc0 chore(release): 27.4.14 2023-07-14 19:35:01 +00:00
5b9a554545 fix(job): fix #95 by implementing queued job deletion for admins 2023-07-14 15:48:18 +00:00
2fc7ac610b chore(job): add more columns to queued job view 2023-07-14 12:32:26 +00:00
681f16be93 chore(health): adjust health evalutation 2023-07-14 11:15:59 +00:00
a407094253 chore(job): add filtering to job queue view 2023-07-13 16:09:12 +00:00
240c6f81f8 fix(avs): eliminate call to undefined in Esqueleto.Internals 2023-07-13 16:08:57 +00:00
256740e15e chore(release): 27.4.13 2023-07-12 20:08:59 +00:00
7ed891a120 chore(jobs): stub for queued job interface towards #95 2023-07-12 16:08:57 +00:00
1ce8f75c2d fix(tutorial): fix #94 tutorial renaming (de) and template naming 2023-07-12 14:32:49 +00:00
80c632df1c fix(lpr): fix #96 by various minor improvements to PrintCenter 2023-07-12 13:58:44 +00:00
57842a53e7 chore(health): minor change treating HealthInactive 2023-07-12 12:52:23 +00:00
2e59d3c2ea fix(avs): background avs synch yielding undefined due to wrong monad 2023-07-12 11:29:29 +00:00
a8df40d9f8 fix(lms): add safeguard to LmsUserlist dispatch running twice, thus ending LMS prematurely 2023-07-12 11:16:22 +00:00
1b224630eb chore(health): add HealthStatus HealthInactive 2023-07-12 10:47:15 +00:00
c596491e49 chore(health): add more info to health 2023-07-12 08:21:31 +00:00
9b93c00301 refactor(health): show all health checks that may lead to failure (WIP) 2023-07-10 15:28:20 +00:00
ee4e67fbda chore(release): 27.4.12 2023-07-08 19:30:08 +00:00
0beb0e4011 fix(avs): avs background synchs and lms userlist result no longer block handler 2023-07-07 11:32:59 +00:00
c9efbd56f1 chore(lms): add lms status filter option 2023-07-05 17:07:21 +00:00
bf8cd4fa89 fix(test): LmsStatus is no longer a semigroup 2023-07-05 15:52:53 +00:00
2d62acea5e refactor(lms): fix #75 by splitting lmsStatus 2023-07-03 16:45:16 +00:00
3d595271d9 fix(db): migration qualification block 2023-07-03 13:48:01 +00:00
05b807a49a Merge branch 'master' into fradrive/lms-type-refactor 2023-07-03 10:53:05 +00:00
f9930f2a00 fix(build): minor 2023-06-30 15:30:32 +00:00
6683d5e4e8 chore(cells): add links to qualifications cells 2023-06-30 15:03:56 +00:00
ab48e40ac7 fix(build): major qualfication block quirks fixed 2023-06-30 13:15:39 +00:00
ee5439cd0b refactor(qualification): adjust test data fill 2023-06-30 08:53:16 +00:00
a1dd70b143 refactor(qualification): update db migration code 2023-06-30 08:22:56 +00:00
46f3a3324c refactor(qualification): refactor profile block displays 2023-06-30 07:40:13 +00:00
23bc9033e7 refactor(qualifications): views course, admin-avs and lms-user refactored (WIP) 2023-06-29 17:05:46 +00:00
6dc3d8d059 fix(avs): fix #7 by sequencing avs background jobs one after another 2023-06-29 09:30:31 +00:00
aaa2d679fd chore(avs): attempt to reduce sync jobs 2023-06-28 15:58:45 +00:00
3e5f271cac fix(notifications): direct notifications now respect user triggers 2023-06-28 14:18:39 +00:00
8a6af742d5 refactor(qualifications): reformat lms-user widget 2023-06-27 15:27:00 +00:00
9abf8b69bf refactor(qualification): rework lms view and user lms modal 2023-06-27 15:15:32 +00:00
878f98604c refactor(qualifications): suggestions for qualification view block acts (WIP) 2023-06-26 16:28:17 +00:00
a28fb72021 refactor(qualification): blocks need exact time for ordering 2023-06-26 10:07:41 +00:00
ff7675542a refactor(qualifications): update basic qualification blocking routines II (WIP) 2023-06-23 16:37:08 +00:00
bbaa42eefa fix(avs): attempt to fix avs background jobs 2023-06-23 13:16:09 +00:00
d5c345ef69 refactor(qualifications): working on lms background jobs (WIP) 2023-06-23 09:14:53 +00:00
f22252ecc3 refactor(qualifications): update basic qualification blocking routines (WIP) 2023-06-22 16:10:06 +00:00
55d2dfcef3 chore(release): 27.4.11 2023-06-20 19:21:54 +00:00
9dfd91b2f8 fix(course): fix #28 by allowing course deletion with inactive participants only 2023-06-20 14:39:55 +00:00
1e5e505a0c chore(letter): minor touch up renewal reminder letter 2023-06-20 10:53:33 +00:00
064b984945 fix(letter): renewal reminder and renewal idents switched 2023-06-20 09:09:08 +00:00
480ca55a38 chore(release): 27.4.10 2023-06-19 23:24:42 +00:00
4956e6bf57 fix(lint): remove redundant parenthesis 2023-06-19 16:47:25 +00:00
1f485affb4 chore(lme): fix #58 by wording renewal letter 2023-06-19 15:57:55 +00:00
9bd1076a9c chore(lms): prepare renewal letter sending 2023-06-19 14:45:04 +00:00
Steffen Jost
e7f29a4f5b chore(renaming): minor reverts for coursetype (de only) 2023-06-19 13:52:14 +02:00
d06448a4a8 fix(test): resepect uniqueness for ldap, 2nd attempt 2023-06-19 10:13:34 +00:00
22426db241 chore(course): unlink course certificates from course qualification 2023-06-19 10:01:15 +00:00
39b8c64b3c chore(menu): hide currently unused functions in extra container 2023-06-19 07:22:52 +00:00
d1badf16fc fix(test): resepct uniqueness for ldap primary keys 2023-06-19 06:52:14 +00:00
a5ee70c370 chore(ldap): ensure that ldap primary keys are unique 2023-06-16 15:04:33 +00:00
43dbe18110 refactor(qualifications): idea how to work with blocks as a table (WIP) 2023-06-16 14:07:02 +00:00
16f34258ba chore(crontab): ldap avs synchs restricted to night hours 2023-06-16 10:52:45 +00:00
9992bf2b8d chore(lms): minor fix to log message 2023-06-16 08:48:01 +00:00
933173dfcb chore(lpr): fix #83 by add resending option to print center 2023-06-15 15:17:40 +00:00
c76dc47890 chore(lms): prevent resending and pin renewal for closed lms 2023-06-15 15:16:48 +00:00
78231b8dd1 chore(qualifications): fix #84 to show users about to be notified 2023-06-15 10:44:59 +00:00
a0295c7654 refactor(qualification): work on blocking WIP 2023-06-13 16:43:44 +00:00
Steffen Jost
54f902a83b chore(rename): Institut -> Bereich (de exclusive) 2023-06-13 10:37:20 +00:00
28d1d5deec chore(release): 27.4.9 2023-06-07 20:13:06 +00:00
3434d75881 Merge branch 'fradrive/tutorial-overhaul' 2023-06-07 16:05:05 +00:00
698507b535 chore(rename): fix #37 by concluding renaming 2023-06-07 16:04:29 +00:00
91d440e824 chore(rename): Tutoren to Ausbilende (de&en) 2023-06-07 15:38:57 +00:00
0591c84134 chore(rename): Dozent to Kursverwalter (en) 2023-06-07 15:14:47 +00:00
1825b642f2 chore(rename): Dozent to Kursverwalter (de) 2023-06-07 14:56:35 +00:00
ecfdf5432d chore(rename): Tutorium to Kurs (en) 2023-06-07 14:50:24 +00:00
16b8e0e108 chore(rename): Tutorium to Kurs (de) 2023-06-07 14:41:05 +00:00
3b705f0b8c chore(rename): Kurs to Kursart (en) 2023-06-07 14:04:30 +00:00
e203e6a7ed chore(rename): Kurs to Kursart (de) 2023-06-07 13:48:21 +00:00
e41f08cffb chore(rename): semester to year 2023-06-07 10:51:44 +00:00
db65816ef0 chore(tutorial): change tutorial template separator to single underscore 2023-06-07 10:24:14 +00:00
fa36cb4de1 chore(tutorial): add name suggestions for mass registering 2023-06-07 10:06:23 +00:00
e1093701ca chore(tutorial): add mass register button 2023-06-07 09:01:00 +00:00
fd936ad046 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-06-06 14:30:02 +00:00
Steffen Jost
280f907980 chore(haddock): fix problematic comments 2023-06-06 14:29:39 +00:00
31814b1400 chore(avs): display last avs synch error to admins on profile 2023-06-06 14:24:35 +00:00
7e7bd993a1 chore(avs): make backround avs updates more robust 2023-06-06 13:15:33 +00:00
cc465fad16 chore(haddock): fix some misleading comments 2023-06-06 10:19:46 +00:00
edc23630a7 chore(tutorial): template pre-selection fixed 2023-06-05 16:59:33 +00:00
e7a2cfc8ac chore(msg): fix minor typo 2023-06-05 16:04:17 +00:00
7902da476b chore(tutorial): in case of multiple tutorial templates, pick first ascending by name 2023-06-05 15:13:51 +00:00
c57ab17d25 refactor(letter): remove class MDMail 2023-06-05 11:20:31 +00:00
3322d965ce Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-06-05 08:08:18 +00:00
7d3ccd1183 chore(release): 27.4.8 2023-06-03 03:36:30 +00:00
22922e8ec6 chore(release): 27.4.8 2023-06-03 01:19:40 +00:00
4f589161a7 chore(gitignore): ignore /.vscode 2023-06-02 21:03:56 +00:00
a7668d0767 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-06-02 21:02:08 +00:00
b613f22363 chore(haddock): fix problematic comments 2023-06-02 21:02:03 +00:00
Steffen Jost
b72ee99e3e chore(qualification): add expiry option and diversify expiry letter 2023-06-02 15:20:57 +02:00
b982e59b63 fix(tutorial): template moving works now 2023-06-02 11:50:50 +00:00
79b45be5b6 debug(occurrences): find error in occurrencesAddBusinessDays 2023-06-02 11:17:20 +00:00
88d43560ae fix(qualification): prevent qualification mixups 2023-06-02 09:57:02 +00:00
798a4bdf0a chore(lms): filter lms by qualification id 2023-06-02 09:28:34 +00:00
a5dff16d35 chore(fill): change tutorial template type 2023-06-02 09:27:31 +00:00
67f8ef7540 chore(tutorial): sort nulls last for dates 2023-06-01 09:44:13 +00:00
fb56c3c0cf chore(release): 27.4.7 2023-05-29 10:41:32 +00:00
ac57b1cd32 fix(build): linter complains 2023-05-26 19:21:04 +00:00
930bcef9cd chore(tutorial): towards #37 by adding new tutorials from template 2023-05-26 16:03:10 +00:00
64ea50ebf6 chore(qualification): WIP add comments for further development 2023-05-26 10:44:04 +00:00
e29bce7b22 Merge branch 'master' into fradrive/lms-type-refactor 2023-05-26 09:25:23 +00:00
94b48f59cf Merge branch 'master' into fradrive/tutorial-overhaul 2023-05-26 08:34:33 +00:00
3cb66c6211 fix(qualifications): fix #78 block/unblock no longer deletes company association 2023-05-26 08:34:02 +00:00
f64b985d35 chore(messages): fix typo in categories/qualification/de-de-formal.msg 2023-05-25 11:15:47 +00:00
e9679f8cbd Merge branch 'master' into fradrive/tutorial-overhaul 2023-05-24 16:48:41 +00:00
df2e093c4b Merge branch 'master' into fradrive/tutorial-overhaul 2023-05-24 16:45:57 +00:00
a0e37fb153 chore(tutorial): WIP towards tutorial templates, part 3 2023-05-24 16:45:46 +00:00
d377d717d2 refactor(qualification): WIP db migration implemented 2023-05-24 16:25:34 +00:00
0262c3404d chore(release): 27.4.6 2023-05-24 15:59:41 +00:00
314e661108 chore(tutorial): WIP towards tutorial templates, part 2 2023-05-24 13:59:05 +00:00
5400c32477 chore(tutorial): WIP towards tutorial templates 2023-05-24 13:29:53 +00:00
fb0a3cdaff chore(ci): modernize release/container push 2023-05-24 11:27:34 +00:00
5480cee564 chore(release): 27.4.5 2023-05-23 18:11:28 +00:00
Steffen Jost
c2521df20b chore(tutorial): WIP templates advancement 2023-05-23 17:28:22 +02:00
Steffen Jost
5446ca5406 chore(tutorial): prepare occurrencesAddBusinessDays for templates 2023-05-23 17:13:26 +02:00
9673916a3b Merge branch 'fradrive/avs-synch' into fradrive/tutorial-overhaul 2023-05-23 10:11:46 +00:00
00d406dd13 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-23 10:09:08 +00:00
1d4d3acbe0 Merge branch 'fradrive/avs-synch' 2023-05-23 10:09:02 +00:00
5b4813d7b2 chore(letter): towards #73 by tweaking certificate text 2023-05-23 10:08:39 +00:00
98a6ed17c8 Merge branch 'fradrive/avs-synch' into fradrive/tutorial-overhaul 2023-05-23 09:58:13 +00:00
6f8fa978d4 Merge branch 'fradrive/avs-synch' into 'master'
chore(qualifications): fix #65 by adding a column with a bool indicator for validity

Closes #65

See merge request fradrive/fradrive!19
2023-05-23 09:53:44 +00:00
c63d3b76dd chore(qualifications): fix #65 by adding a column with a bool indicator for validity 2023-05-23 09:15:48 +00:00
3cfab4898f chore(nix): properly remove ciDocker 2023-05-23 05:46:51 +00:00
bb20d56c35 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-22 18:21:19 +00:00
d496fbe085 chore: don't optimize Handler.Users.Add for build time 2023-05-22 18:20:32 +00:00
7aa9d964af Merge branch 'fradrive/avs-synch' into fradrive/tutorial-overhaul 2023-05-22 16:46:31 +00:00
1f6f0de10e Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-22 16:44:56 +00:00
33fdcb9335 Merge branch 'fradrive/avs-synch' 2023-05-22 16:42:23 +00:00
807cf4b3cf chore(lpr): quick fix short apc ids expiry 2023-05-22 16:40:56 +00:00
132a0438ef chore(avs): fix #34 by scheduling avs background updates 2023-05-22 15:14:32 +00:00
109f8ce860 chore(tutorial): WIP towards tutorial templates 2023-05-22 14:36:49 +00:00
d15cdf29e1 chore(nix): fix registry url 2023-05-22 08:08:34 +00:00
d1ae65bf8f chore(release): 27.4.4 2023-05-20 00:42:31 +00:00
dde08bfa37 Merge branch 'fradrive/gitlab-url-patch-cfc7' into 'master'
chore(url): update gitlab url

See merge request fradrive/fradrive!18
2023-05-19 21:37:22 +00:00
c0bb182ecf chore(nix): bump hash of uniworxWellKnown 2023-05-19 09:51:09 +00:00
3a1e8e7c16 chore(gitlab-ci): use container image with automagic caching 2023-05-19 05:54:42 +00:00
e99a37cfd6 chore(occurrences): complete bounds function 2023-05-17 16:04:03 +00:00
c33964750d chore(avs): prepare general background synch job 2023-05-17 09:35:24 +00:00
710da5f002 Update flake.nix 2023-05-16 23:45:53 +00:00
8d65e7708b Update nix.conf 2023-05-16 23:42:48 +00:00
5365a7d123 Update .gitlab-ci.yml file 2023-05-16 23:39:00 +00:00
f5c4142e13 Update .gitlab-ci.yml file 2023-05-16 23:35:06 +00:00
9f0f7fec48 Update .gitlab-ci.yml file 2023-05-16 23:27:14 +00:00
d38b10aa18 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-16 16:11:12 +00:00
06e71f6552 chore(avs): fixes #34 by avs synch action in users view 2023-05-16 16:10:39 +00:00
9d715cd20c chore(avs): fix #39 by queueing avs synch for known avs users 2023-05-16 15:55:15 +00:00
f123f40ad2 chore(avs): add avs synch background jobs towards #34 2023-05-16 10:31:35 +00:00
760bf150d4 chore(ci): keep pushing result images to registry.gitlab.com 2023-05-15 17:15:53 +00:00
05830a55b3 chore(ci): use registry.uniworx.de 2023-05-15 17:10:28 +00:00
da7a8b6d16 Merge branch 'gitlab.uniworx.de' 2023-05-15 17:08:32 +00:00
c114f08625 chore(nix): use newer skopeo 2023-05-15 17:08:02 +00:00
6fb608936d Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-15 16:14:19 +00:00
b2e771a9f3 Merge remote-tracking branch 'gitlab.ifi.lmu.de/master' into gitlab.uniworx.de 2023-05-15 16:10:36 +00:00
cd1045e8e9 chore(flake.nix): registry.gitlab.uniworx.de -> registry.uniworx.de 2023-05-15 15:44:07 +00:00
7d5e6a36fd chore(nix): mkPushDocker to gitlab.uniworx.de 2023-05-15 14:52:35 +00:00
73fa46e583 chore(lms): send lms-users delta only 2023-05-15 14:39:23 +00:00
231cc00fe9 chore(lms): consistent lms status cells all tables 2023-05-15 11:02:31 +00:00
e4908bc4fc chore(lms): allow late qualification renewal by lms success 2023-05-15 07:51:09 +00:00
637af12992 chore(release): 27.4.3 2023-05-12 19:00:26 +00:00
4908573316 chore(lms): restart e-learning allows unblocking and validity-extension 2023-05-12 12:36:11 +00:00
Steffen Jost
0a0a6f6ad7 chore: fix build 2023-05-12 13:52:55 +02:00
86c43f5115 chore(lms): fix #35 restart lms, link qualification entry to lms, rename lms pin to password 2023-05-11 16:17:11 +00:00
30c3182370 Merge branch 'master' of gitlab.uniworx.de:fradrive/fradrive 2023-05-11 10:52:48 +00:00
1431f864ce chore(url): update gitlab url 2023-05-11 09:09:50 +00:00
c1abe96fb2 chore(renewal): add time estimate for e-learning 2023-05-11 06:56:52 +00:00
b22ee4f601 chore(company): minor refactor 2023-05-10 15:57:30 +00:00
54c9198669 chore(forms): revert apreq change and use areq directly for boolFields with defaults 2023-05-10 15:18:58 +00:00
6339e71efd chore(company): attempt to debug company column 2023-05-10 15:18:16 +00:00
589617351f chore: update mailmap for s.jost@frapor.de 2023-05-10 15:17:36 +00:00
68038f3c71 chore(company): attempt to debug missing companies in lms/qualification view 2023-05-10 13:17:39 +00:00
297b408e9c chore(form): disable no-answer option for m/apreq forms 2023-05-10 13:12:49 +00:00
1de1cdbfd4 chore(letter): option to avoid sending a notification upon blocking 2023-05-10 10:41:15 +00:00
4d432305a7 chore(letter): fix wording in expiry letter 2023-05-10 09:39:34 +00:00
ecd6095dc9 chore(release): 27.4.2 2023-05-09 17:59:47 +00:00
5dba0f0b62 Revert "feat(docker): wrap within tini"
This reverts commit c86f36b2f6.
2023-05-09 14:19:17 +00:00
80c8a80bc2 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-05-09 14:12:04 +00:00
07aa74fbef chore(lms): fix jsonb sql query for LMS dequeing 2023-05-09 14:12:00 +00:00
Steffen Jost
de241caf8d chore(letter): fix some minor erroneous blanks in fraport_f_expiry.md 2023-05-09 15:11:12 +02:00
Steffen Jost
fdce8dcf45 chore(lms): reorder filter options as requested by AVN-AR 2023-05-09 10:07:20 +02:00
2b486e8635 chore(release): 27.4.1 2023-05-08 22:52:31 +00:00
7e09da3594 Merge branch 'fradrive/letter-expiry' 2023-05-08 17:59:43 +00:00
f311a3d319 Merge branch 'fradrive/localmaster' 2023-05-08 17:59:31 +00:00
785b97df76 chore(letter): enable direct letter mails 2023-05-08 17:58:37 +00:00
4c5ce11b09 refactor(qualifications): notification mechanic tied to button only for all invalid qualifications 2023-05-08 17:19:46 +00:00
539593fe2d chore(letter): html expiry letter working 2023-05-08 14:42:29 +00:00
9bdac8d5e1 chore(release): 27.4.0 2023-05-06 02:46:14 +00:00
3e46d13f11 Merge branch 'srv01' into 'master'
Fix build in CI and locally on e.g. srv01

See merge request fradrive/fradrive!17
2023-05-05 22:37:04 +02:00
f617d067f3 chore(avscard): fix filtering leading zeroes 2023-05-05 15:43:09 +00:00
cdf7f5c3b9 chore(letter): expiry letter phone and expiry date fixes 2023-05-05 15:28:05 +00:00
ff7d1845c5 chore(package.json): use correct license value 2023-05-05 12:41:35 +00:00
e25af0d25a Merge branch 'master' into srv01 2023-05-05 12:38:41 +00:00
c17a9fdb22 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-05-05 12:38:24 +00:00
ab090deec8 chore(letter): fix some typos 2023-05-05 09:08:25 +00:00
Steffen Jost
13babca2ac chore(release): 27.3.2 2023-05-05 10:06:46 +02:00
6b5c37a97c refactor(letter): introduce existentially quantified letter class SomeLetter 2023-05-05 07:41:38 +00:00
Steffen Jost
90b38ca5dc fix(build): remove impossible 2023-05-05 08:44:48 +02:00
Steffen Jost
4fa6b10db3 chore(release): 27.3.1 2023-05-04 20:23:43 +02:00
4061b973fc Merge branch 'fradrive/letter-expiry' 2023-05-04 17:00:34 +00:00
328ce70bd7 chore(letter): fix template for qualification expiry 2023-05-04 16:59:50 +00:00
8c350c2e54 Merge branch 'fradrive/localmaster' 2023-05-04 16:33:27 +00:00
3211771a0a Merge branch 'fradrive/letter-expiry' 2023-05-04 16:33:17 +00:00
f6485a367e chore(qualifications): expiry letter for test sending created 2023-05-04 16:32:23 +00:00
56aa593c8d chore(lms): Fix #45 subsequent lms success also unblocks e-learning blocks 2023-05-04 11:24:09 +00:00
a64a2368db chore(qualification): Fix #46 by add qualification grant act to qualification view 2023-05-04 10:58:55 +00:00
4161c92d12 chore(avs): drop avs card no uniqueness and attempt to fix filtering 2023-05-04 10:08:38 +00:00
0b724565ad chore(letter): meta data got lost during pandoc processing 2023-05-03 16:44:15 +00:00
96a81cf85d chore(status): show environment variable VERSION_NR 2023-05-03 16:43:29 +00:00
73a62a653b chore(avs): reduce max query numbers further 2023-05-03 15:46:44 +00:00
6ddf1b1646 chore(letter): expiry stub WIP 2023-05-03 15:14:21 +00:00
Steffen Jost
038705c68f chore(release): 27.3.0 2023-05-02 22:53:34 +02:00
Steffen Jost
db5d9cfc06 Merge branch 'fradrive/fixmaster' into 'master'
fix(build): minor move parenthesis to make linter happy

See merge request fradrive/fradrive!16
2023-05-02 21:22:51 +02:00
Steffen Jost
8771cd1439 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-05-02 18:51:55 +02:00
7210b65dfe Merge branch 'fradrive/localmaster' 2023-05-02 16:51:32 +00:00
c31b63fc47 chore(avs): show non-notification-renewal on problem page 2023-05-02 16:51:04 +00:00
cfd40e0bda chore(letter): use proper caching for pdf generation via pandoc 2023-05-02 16:36:26 +00:00
d46ff7ed7f chore(caching): for company table working 2023-05-02 16:15:45 +00:00
ef7c61ff11 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-05-01 17:27:50 +00:00
6f47f21fe6 chore: use some more modern build inputs 2023-04-29 08:47:44 +00:00
bedb47e9d4 fix: use recent locales & tzdata 2023-04-29 07:34:54 +00:00
dcbfe11cf3 chore: backport modern conveniences 2023-04-28 18:03:46 +00:00
cdcd56ea19 Merge branch 'fradrive/company-csv' into fradrive/localmaster 2023-04-28 16:23:59 +00:00
33a847baa3 fix(qualifications): counts for lms/quals correct now 2023-04-28 16:22:48 +00:00
484cac208f chore(lms): add filter for personnel- and card numbers 2023-04-28 16:00:08 +00:00
2093cf5018 fix(cvs): export company in e-learning view 2023-04-28 15:56:12 +00:00
4df024374d feat(qualfications): renewal actions and filtering by card and personal number 2023-04-28 14:52:02 +00:00
bb2c0858d1 docs(dbtable): clarify usage of dbtProj 2023-04-28 12:58:20 +00:00
eba437de33 refactor(csv): change new user default to xlsx working now 2023-04-28 11:15:51 +00:00
fcc2c1b3ab refactor(qualifications): towards using dbtProj for companies working (2) 2023-04-28 11:15:26 +00:00
f1ec4d0b7b refactor(qualifications): towards using dbtProj for companies working 2023-04-28 08:59:37 +00:00
797729a248 refactor(qualifications): towards using dbtProj for companies (WIP) 2023-04-27 16:48:57 +00:00
4d8b91ccd7 chore(qualifications): finalize qualification certificate letter 2023-04-27 13:52:14 +00:00
dff9cbab31 chore(ci): fix cache url 2023-04-27 09:44:27 +00:00
effddc7bfb fix: nix eval 2023-04-27 09:40:40 +00:00
9cd7f7a252 chore: fix build 2023-04-27 09:27:27 +00:00
b37c2e6aec feat: make git revision accessable to nix build 2023-04-27 07:46:37 +00:00
d89d4cfbbc chore: fix local build 2023-04-27 07:46:17 +00:00
c86f36b2f6 feat(docker): wrap within tini
Also cleanup environment within container
2023-04-27 07:13:35 +00:00
bd29a204fa chore(ci): ca-references no longer experimental 2023-04-27 06:35:43 +00:00
cd434cb5d6 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive into srv01 2023-04-27 06:30:54 +00:00
eae48a5887 chore(ci): fix check 2023-04-27 06:28:47 +00:00
951932ad90 chore(csv): switch default csv export format to .xlsx 2023-04-26 16:04:07 +00:00
26463c6032 chore(csv): export company in csv 2023-04-26 15:36:23 +00:00
412c56e78c fix(email): better wording for qualifcation expired notice 2023-04-26 15:34:50 +00:00
3047a7aa12 chore(csv): switch default csv export format to .xlsx 2023-04-26 15:32:01 +00:00
a92761b340 chore(supervision): remove supervisor on qualifiaction block 2023-04-26 14:09:52 +00:00
1f36518e8b chore(avs): show avs no in qualifications and e-learning for admins 2023-04-26 14:09:06 +00:00
f906b107de chore(user): complete user assimilation for avs data 2023-04-26 13:43:39 +00:00
5340bf25dc refactor(users): fieldLens function allwos more generic code 2023-04-25 16:24:47 +00:00
52afd13b6d fix(users): assimilate merges possibly incomplete user fields 2023-04-25 16:08:22 +00:00
d973acf42b chore(print): switch all letters to sans serif font 2023-04-25 14:43:50 +00:00
5fcc85c9a0 refactor(login): clarify login fields 2023-04-25 13:10:19 +00:00
0922723a85 chore(avs): reactivate avs development dummy 2023-04-25 10:42:16 +00:00
32b1074dca chore(actions): keep filters for table actions on LMS, Qualifications and PrintCenter 2023-04-25 10:41:48 +00:00
014d479df8 fix(users): prevent accidental user hijacking 2023-04-25 09:56:18 +00:00
76fb44d898 chore(users): keep filters after table action 2023-04-25 09:48:45 +00:00
ebb81e0c54 refactor(avs): avs queries are automatically chunked 2023-04-24 16:42:57 +00:00
93ea07e2ec Merge branch 'fradrive/localmaster' 2023-04-24 15:15:35 +00:00
ea82d75a09 fix(build): remove redundant constraints 2023-04-24 15:15:14 +00:00
9a26e9781c chore(ci): bump nix image 2023-04-24 15:02:36 +00:00
d52dc56d90 chore(ci): bump nix image 2023-04-24 14:44:04 +00:00
bb441d83e6 chore(ci): auth for fetchurl 2023-04-24 14:09:56 +00:00
e1b2afc755 chore(ci): fix 2023-04-24 14:07:32 +00:00
472931d946 Merge branch 'fradrive/localmaster' 2023-04-24 13:56:22 +00:00
54a956dc36 chore(error): remove default layout from error handler 2023-04-24 13:45:10 +00:00
Steffen Jost
02bf1d9a2c fix(build): minor move parenthesis to make linter happy 2023-04-24 13:22:04 +02:00
Steffen Jost
5720ba58c8 chore(login): more informative login error message
The login messages are more Fraport specific.
2023-04-21 16:17:50 +02:00
Steffen Jost
b74477e67f Revert "chore(debug): add rts option for stack trace"
This reverts commit b3c083f4d4.
2023-04-20 19:24:06 +02:00
Steffen Jost
b3c083f4d4 chore(debug): add rts option for stack trace 2023-04-20 19:13:55 +02:00
Steffen Jost
118dac79e7 Merge remote-tracking branch 'origin/fradrive/localmaster' 2023-04-20 19:12:24 +02:00
352ee215b4 fix(avs): chunk avs status query automatically 2023-04-20 17:11:43 +00:00
7d5c4bff25 fix(letter): update receiver postal address before sending 2023-04-20 16:03:50 +00:00
Steffen Jost
791220fb02 chore(debug): enable profiling properly 2023-04-20 15:16:39 +02:00
3f759614b4 chore(email): fix case sensitivity for fraport-e-account email checks 2023-04-20 10:10:06 +00:00
13f53e3221 chore(tutorial): attempt to fix download 2023-04-19 16:35:45 +00:00
6699f1d72f fix(profile): bad email indicator 2023-04-19 16:35:06 +00:00
dfd0f57f90 chore(build): add profiling options 2023-04-19 15:57:02 +00:00
c7f8663f71 chore(build): fix ghc options 2023-04-19 15:27:48 +00:00
fd1271517c Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-04-19 15:25:09 +00:00
96b5ce4ab0 chore(build): fix ghc options 2023-04-19 15:25:01 +00:00
Steffen Jost
62cd170da5 chore(debug): update stack.yaml.lock 2023-04-19 16:55:57 +02:00
8b72e867b6 chore(debug): bump yesod-core version 2023-04-19 14:47:38 +00:00
720c331292 chore(debug): bump yesod-core version 2023-04-19 14:41:21 +00:00
36576add31 chore(debug): bump yesod-core version 2023-04-19 14:30:00 +00:00
fe1feaeb80 chore(debug): -fprof and -fprof-auto 2023-04-19 14:28:43 +00:00
050b02e2fa chore(debug): reference yesod commit with traceStack for debugging 2023-04-19 14:05:00 +00:00
9293bd6e4e Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-04-19 13:51:33 +00:00
8ab170b59a chore: add pointer to yesod ref to stack.yaml 2023-04-19 13:51:27 +00:00
Steffen Jost
278001bf4d chore(release): 27.2.0 2023-04-06 18:32:48 +02:00
Steffen Jost
ac22ab2942 Merge remote-tracking branch 'origin/fradrive/localmaster' 2023-04-06 18:10:13 +02:00
97096727d6 chore(avs): add debug info for failing avsQueryStatus call on problem page 2023-04-06 16:09:41 +00:00
768f03f672 feat(letter): allow printing of multiple course certificates at once 2023-04-06 15:41:59 +00:00
5f536864a5 refactor(letter): change pdf download for course certificates and filename generation 2023-04-06 12:56:59 +00:00
879b8a72be chore(letter): improve certificate interpolation and styling 2023-04-05 16:10:53 +00:00
db0eadc746 chore(letter): print certificates linked to tutorium 2023-04-05 11:13:53 +00:00
b3f01ba3b1 chore(letter): allow letter language to be fixed by MDLetter instance 2023-04-05 07:47:30 +00:00
5c11664830 chore(letter): implement course qualification letter (done) 2023-04-05 07:35:35 +00:00
Steffen Jost
7c80e11267 chore(release): 27.1.6 2023-04-05 08:29:23 +02:00
Steffen Jost
89c2e81540 chore(release): 27.1.5 2023-04-04 14:00:08 +02:00
a827f46f0f chore(letter): implement course qualification letter (wip) 2023-04-04 11:52:21 +00:00
Steffen Jost
e1b2c8a17e Merge remote-tracking branch 'origin/fradrive/localmaster' 2023-04-04 13:37:46 +02:00
45daa5820e chore(i18n): matricle to avs number 2023-04-04 06:05:26 +00:00
c49b329d18 chore(avs): use AVSNO as matriculation 2023-04-03 15:04:01 +00:00
1633d7573a chore(lms): improve lms-status display within qualifications 2023-04-03 13:44:06 +00:00
97abc47cdf chore(json): generic json to widget function for pretty printing 2023-04-03 09:27:43 +00:00
4b5d3df141 chore(nix): update flake.nix 2023-03-31 21:26:17 +00:00
c13c3122f3 chore(nix): update flake.nix 2023-03-31 21:21:18 +00:00
fc73e7d43c chore(nix): update flake.nix 2023-03-31 16:37:14 +00:00
6810cdc15f chore(nix): update flake.nix 2023-03-31 16:19:07 +00:00
b0c211da65 chore(avs): create and link avs contact info page 2023-03-31 16:11:01 +00:00
4cfdb4b8e3 chore(release): 27.1.6 2023-03-31 15:06:20 +00:00
1a678d4b9d chore(nix): update flake.nix and shell.nix 2023-03-31 14:31:19 +00:00
bb27324ee8 fix(reachability): account for e-users being assigned a useless company department 2023-03-31 13:22:28 +00:00
28f245dfe4 chore(release): 27.1.5 2023-03-31 12:19:24 +00:00
703bf94de0 chore(nix): update shell.nix 2023-03-31 09:45:20 +00:00
af8c853743 chore(nix): update flake.nix and shell.nix 2023-03-30 21:47:33 +00:00
48e86fa578 chore(admin): show active card colors on problem resolution page 2023-03-30 16:38:59 +00:00
Steffen Jost
d02e62ec20 fix(lms): lms-direct/deletion-days setting now represent #days to presever lms (used to be #days+1) 2023-03-29 10:32:14 +02:00
Steffen Jost
5acca59b1c chore(release): 27.1.4 2023-03-28 21:35:49 +02:00
bc4380fc35 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-03-28 14:59:10 +00:00
edc5d72734 Merge branch 'fradrive/localmaster' 2023-03-28 14:58:57 +00:00
c62a42d5c2 fix(lms): send e-learning failed qualification only once 2023-03-28 14:57:31 +00:00
9cc1d93f1c Revert "fix(email): remove test for E#@fraport.de"
This reverts commit 7c2226e138.
2023-03-28 12:43:20 +00:00
Steffen Jost
8e68af7b1d chore(release): 27.1.3 2023-03-28 14:12:22 +02:00
2e7f12d653 Merge branch 'fradrive/localmaster' 2023-03-28 11:48:17 +00:00
7c2226e138 fix(email): remove test for E#@fraport.de 2023-03-28 11:47:56 +00:00
731d0ce7c7 fix(email): invert invalid email error indicator 2023-03-28 11:41:11 +00:00
ed1ae8dae3 chore(apc): trim idents received from apc 2023-03-28 11:24:44 +00:00
Steffen Jost
4fa5c8fed8 chore(release): 27.1.2 2023-03-27 23:03:58 +02:00
95ae7006cd Merge branch 'fradrive/localmaster' 2023-03-27 17:52:07 +00:00
ba8bcc5436 chore(tutorial): show user qualification info 2023-03-27 17:51:34 +00:00
Steffen Jost
77b65bd348 chore(release): 27.1.1 2023-03-27 17:39:52 +02:00
18298e53a6 Merge branch 'fradrive/localmaster' 2023-03-27 15:13:20 +00:00
d48d922a9c chore(print): change default sorting order for print center 2023-03-27 15:12:55 +00:00
f29055a91b chore(login): remove obselete search for lmu logins 2023-03-27 15:00:43 +00:00
d8a601b970 chore(lms): fix default sorting for qualifications and sort optional columns always with nulls last 2023-03-27 14:42:25 +00:00
88a85bb5b6 fix(email): reenable ldap logins with invalid email addresses (missing mail field problem) 2023-03-27 14:33:45 +00:00
3b0f27d4f2 chore(avs): improve print of avs test interface 2023-03-24 18:06:55 +00:00
db9ffa1830 fix(lms): mark expired learners as ended with status expired 2023-03-24 17:33:17 +00:00
3664c1988c chore(tutorial): actions on 0 users are marked as warning 2023-03-24 17:30:57 +00:00
9c8b09a633 chore(userlist): allow sorting by admin role or system function 2023-03-24 16:11:48 +00:00
2622d24f03 chore(tutorial): adjust default day for new tutorials 2023-03-23 16:55:10 +00:00
b563e13ed4 chore(lpr): adjust email reroute message to stop printing too 2023-03-23 16:54:35 +00:00
6ca02875c2 chore(avs): implement InfoPersonContact query and test 2023-03-23 16:53:31 +00:00
Steffen Jost
b413f28959 chore(release): 27.1.0 2023-03-23 08:54:35 +01:00
f0d0ae88f6 Merge branch 'fradrive/localmaster' 2023-03-23 07:37:19 +00:00
8d58b9321b chore(renewal): minor rephrasing of the former word URL 2023-03-23 07:36:50 +00:00
5bdfe4b9ee Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-03-22 16:36:48 +00:00
eafaccfbde Merge branch 'fradrive/localmaster' 2023-03-22 16:36:07 +00:00
4a359c82dc chore(changelog): supervisors may revoke amd retire licences 2023-03-22 16:35:00 +00:00
fa5fd98619 fix(acs): fix overzealous avs error catching resulting in unnecessary error messages 2023-03-22 16:26:36 +00:00
ee9481ebd8 chore(letter): letters may choose attachment encryption 2023-03-22 15:36:18 +00:00
2b745a4520 chore(renewal): adjust email and letter content, encrypt with examinee password only 2023-03-22 15:23:23 +00:00
dd137da665 chore(apc): ensure apc ident format after discussion with Massente 2023-03-22 15:02:19 +00:00
326ca71875 chore(apc): fix acknowledging mechanism after tests 2023-03-22 15:01:33 +00:00
81a30fadc4 chore(apc): adjust print acknowledging to deal with apcident in a backward compatible way 2023-03-22 12:14:10 +00:00
03971135e3 chore(letter): correct minor typos and wordings 2023-03-22 12:12:02 +00:00
583a0a254d chore(letter): test printing with new ident strings working again 2023-03-22 10:35:39 +00:00
799f1fe184 fix(profile): email validation inverted 2023-03-22 10:35:03 +00:00
b84a6f2cf9 refactor(letter): adapt test letter printing 2023-03-21 12:35:30 +00:00
2c3ae0ea83 refactor(letter): sending test letters (WIP) 2023-03-20 17:12:21 +00:00
c9806302db refactor(letter): pdf letter mechanics 2023-03-20 16:07:13 +00:00
83ec6d4a90 chore(lms): regular renewal for lms success only 2023-03-20 15:15:52 +00:00
41810dbd75 chore(lms): delay lms user deletion by setting 2023-03-17 15:52:03 +00:00
56c3c8fe40 fix(html): use non-breakable dash in menu and column translations 2023-03-17 14:30:57 +00:00
53d19de3d2 chore(dbtable): remove outdated remark about pagination error 2023-03-17 10:04:41 +00:00
825e4271c1 chore(qualifications): show associated qualifications in course 2023-03-17 10:01:33 +00:00
bb9c2259e9 chore(print): rework templating and apc acknowledge id mechanism 2023-03-16 17:53:16 +00:00
d2020866a8 Merge branch 'fradrive/localmaster' into fradrive/course-qualifications 2023-03-16 13:58:57 +00:00
0ccb9a3ffb chore(qualification): blocking on qualification page implemented 2023-03-16 12:56:41 +00:00
921e5df9d9 chore(company): show company column for lms and quals, show lms blocked reason for admins in quals 2023-03-16 11:47:21 +00:00
09c4eb3a7b chore(qualifications): use blocking mechanism (WIP) 2023-03-15 17:10:32 +00:00
Steffen Jost
269c22faf9 chore(release): 27.0.29 2023-03-13 17:58:46 +01:00
Steffen Jost
deb13e67fa Merge remote-tracking branch 'origin/fradrive/localmaster' 2023-03-13 17:32:59 +01:00
8cc04c8e11 chore(email): improve email validity checks 2023-03-13 16:31:08 +00:00
3865afbceb fix(email): ensure sending to valid emails only 2023-03-10 17:56:02 +00:00
Steffen Jost
e460d74336 chore(print): change default sorting order for PrintCenterR 2023-03-10 16:19:25 +01:00
f6bed7d0fa chore(email): automatic mail reroute for dev environment 2023-03-10 10:30:07 +00:00
05832681d3 chore(email): dont allow numeric fraport accounts 2023-03-09 14:32:35 +00:00
2082d869b5 chore(certificates): add md stub 2023-03-09 13:40:02 +00:00
84481048df chore(date): revert time range formatter 2023-03-09 11:13:58 +00:00
b069282d0a chore(term): use time range formatter 2023-03-09 11:11:37 +00:00
446ab76286 chore(latex): rework templates for print varieties 2023-03-08 17:45:28 +00:00
32d56e30cc chore(print): prepare modules for more letters 2023-03-07 15:09:51 +00:00
Steffen Jost
703a584859 chore(release): 27.0.28 2023-03-06 20:22:57 +01:00
Steffen Jost
33a1d10ef4 Revert "Revert "fix(build): revert nix flake config to obtain container""
This reverts commit 1d8188023f.
2023-03-06 20:03:01 +01:00
Steffen Jost
866e47a061 chore(release): 27.0.27 2023-03-06 19:44:46 +01:00
5eb14c8512 chore(tutorial): ensure that course qualification form actions are stll valid upon reception 2023-03-06 17:59:00 +00:00
ffaaf9c86d feat(course): associate qualifications with courses 2023-03-06 17:27:57 +00:00
a9cccef1a5 chore(lms): fix renewal filter for lms-user-handler 2023-03-06 15:38:09 +00:00
f20cbbb5df chore(qualifications): allow filtering by avsno and company 2023-03-06 15:26:38 +00:00
4f8295d334 chore(lms): add single lms user modal to qualifications page 2023-03-06 15:11:06 +00:00
be3fb39171 fix(lms): transmit renewed pins to lms 2023-03-03 16:10:00 +00:00
dd53601bbd chore: compile more than 2 modules in parallel 2023-03-03 11:52:12 +00:00
cbf296ab04 chore(dbt): cellHasUserModel to show users in modal 2023-03-03 11:46:16 +00:00
109e2373a4 chore(lms): account for local timezone in LMS communication 2023-03-03 09:56:17 +00:00
1d8188023f Revert "fix(build): revert nix flake config to obtain container"
This reverts commit 99b672483a.
2023-03-02 11:19:48 +00:00
Steffen Jost
fd2931be95 chore(lms): set default sorting for lms tables by desc date with nulls last 2023-03-02 12:08:50 +01:00
Steffen Jost
caf30801df chore(release): 27.0.26 2023-03-01 22:51:29 +01:00
Steffen Jost
99b672483a fix(build): revert nix flake config to obtain container 2023-03-01 22:19:06 +01:00
650cb9f758 chore(release): 27.0.25 2023-03-01 17:58:41 +00:00
Steffen Jost
21382ee656 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-03-01 17:41:03 +01:00
Steffen Jost
b43f2364bb fix(dbtable): fix pagination bug 2023-03-01 17:40:55 +01:00
Steffen Jost
6bbcc2006b Revert "chore(qualifications): workaround for pagination error"
This reverts commit d8d7b8ccc5.
2023-03-01 17:09:05 +01:00
8751a09ac9 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-03-01 11:41:02 +00:00
e16b1f9242 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-03-01 11:37:34 +00:00
Steffen Jost
d8d7b8ccc5 chore(qualifications): workaround for pagination error 2023-03-01 12:37:07 +01:00
Steffen Jost
a97c8168da chore(lms): workaround for simultaneous success and failure lms status 2023-02-28 17:19:13 +01:00
Steffen Jost
f226a2518a chore(filtering): company filter accepts numbers, avs nr filter changed to being exact 2023-02-28 13:11:58 +01:00
Steffen Jost
4d46d9d843 chore(lms): increase limit for pagination problem workaround 2023-02-27 12:39:22 +01:00
Steffen Jost
878c87a378 chore(tutorials): force qualification option order 2023-02-27 11:48:34 +01:00
Steffen Jost
94be61d661 chore(qualifications): fix typo 2023-02-27 11:24:26 +01:00
Steffen Jost
7bb85a44ae chore(release): 27.0.24 2023-02-24 18:33:05 +01:00
Steffen Jost
0b545e4d0a chore(sap): filter failed LDAP synchs for 3 months 2023-02-24 18:20:08 +01:00
Steffen Jost
3406db1dfd chore(sap): filter internal personal numbers between 10000 and 99999 2023-02-24 16:09:28 +01:00
Steffen Jost
ed0925442c chore(lms): add filters by avsno and company 2023-02-24 15:47:38 +01:00
Steffen Jost
741b3f79fe chore(lms): add hidden pin column to e-learning page 2023-02-24 11:56:56 +01:00
Steffen Jost
6da4a853a7 chore(release): 27.0.23 2023-02-23 22:46:27 +01:00
Steffen Jost
5a886c9837 Merge branch 'fradrive/tutorial-overhaul' 2023-02-23 22:19:04 +01:00
Steffen Jost
0cecd7e07d chore(users): filter by avsno 2023-02-23 17:56:05 +01:00
Steffen Jost
e2a8feee3b fix(avs): update names from avs too 2023-02-23 12:17:49 +01:00
Steffen Jost
6e35baa06f Merge branch 'master' into fradrive/tutorial-overhaul 2023-02-23 10:29:31 +01:00
Steffen Jost
6f3b2eb8a7 chore(letter): change login/pin to user/password 2023-02-23 10:28:25 +01:00
Steffen Jost
1c41a4991a chore(qualification): allow admins to see all qualifications 2023-02-22 16:54:41 +01:00
Steffen Jost
b2bdfb2ba2 Merge branch 'master' into fradrive/tutorial-overhaul 2023-02-22 16:32:52 +01:00
Steffen Jost
2ca99d7176 fix(build) 2023-02-22 16:27:19 +01:00
Steffen Jost
2b379a4f5e chore(qualifications): provide supervisor-usable user link 2023-02-22 14:42:23 +01:00
Steffen Jost
c7d6467878 Merge branch 'master' into fradrive/tutorial-overhaul 2023-02-22 12:46:23 +01:00
Steffen Jost
f412a467a8 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-02-22 12:39:02 +01:00
Steffen Jost
33574b4554 chore(letter): use DejaVu Sans Mono as tt font in letters for readability 2023-02-22 12:38:58 +01:00
Steffen Jost
5ab7102797 chore(lms): improve readability for lms passwords 2023-02-22 09:35:35 +01:00
Steffen Jost
b3861144aa chore(qualifications): renew regularly implemented 2023-02-21 13:45:34 +01:00
bec1fad48b chore(nix): update flake.lock 2023-02-16 10:32:40 +00:00
509c86c834 chore(nix): fix shell.nix contd 2023-02-16 10:31:28 +00:00
a8e7c315c0 chore(nix): fix shell.nix 2023-02-16 10:30:52 +00:00
3c98add987 chore(nix): update shell.nix and flake.nix for pinned nixpkgs 2023-02-16 10:27:43 +00:00
Steffen Jost
8c7158eac9 Merge branch 'master' into fradrive/tutorial-overhaul 2023-02-14 13:23:00 +01:00
Steffen Jost
315fdd8c14 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-02-13 17:47:57 +01:00
Steffen Jost
c3b6d186c4 chore(avs): allow companies without postal address 2023-02-13 17:47:53 +01:00
Steffen Jost
e9e56c31f5 Merge branch 'jost-master-patch-03045' into 'master'
Update models/users.model

See merge request fradrive/fradrive!15
2023-02-13 17:09:49 +01:00
Steffen Jost
430de83366 chore(email): use userDisplayEmail primarily, userEmail as fallback only 2023-02-13 16:46:41 +01:00
Steffen Jost
f0b20a1b26 fix(print): disable default filter for print acknowledged 2023-02-13 12:56:56 +01:00
Steffen Jost
6f9e657dd5 Update models/users.model 2023-02-13 11:55:11 +01:00
Steffen Jost
4e4508b919 refactor(avs): reduce DB overhead in updateReceivers 2023-02-13 09:56:19 +01:00
Steffen Jost
e466f001d8 chore(qualficiation): proof of concept qualification renewal code 2023-02-10 19:14:25 +01:00
Steffen Jost
cefbfad00d chore(release): 27.0.22 2023-02-10 13:28:22 +01:00
Steffen Jost
bf466c688d chore(email): obey email/postal preference even if no pin password is set 2023-02-10 12:51:08 +01:00
Steffen Jost
242dd0b8d4 fix(lms): lms admin renew pin actions were ignored 2023-02-10 12:12:53 +01:00
Steffen Jost
e68d05f3ee chore(profile): ignore PDF pin password if postal is preferred 2023-02-10 12:01:45 +01:00
Steffen Jost
1cc6240354 fix(supervisors): reroute to non-avs supervisors too 2023-02-10 12:00:54 +01:00
Steffen Jost
87e1219ebb Preset new tutorial name to today +1 2023-02-09 09:50:37 +01:00
Steffen Jost
eedb78664d chore(ldap): ldap sync uses prefers UserLdapPrimaryKey if available. Ref #29 2023-02-08 16:55:11 +01:00
Steffen Jost
d47e8c4909 fix(avs): strip trailing whitespace from avs names upon import only 2023-02-08 15:35:01 +01:00
Steffen Jost
935403ec4f chore(postal): count number of unreachables us 2023-02-08 14:45:19 +01:00
Steffen Jost
9fafb0b7c3 fix(ldap): improve debug message 2023-02-08 10:06:44 +01:00
Steffen Jost
c9b66437e7 chore(release): 27.0.21 2023-02-07 21:28:56 +01:00
Steffen Jost
71ccac0dfe fix(email): avoid sending to invalid email address 2023-02-07 18:31:35 +01:00
Steffen Jost
006ab632a3 fix(ldap): allow ldap update for mangled user entries 2023-02-07 18:31:13 +01:00
Steffen Jost
6098d4554d chore(qualifications): supervisor page finished with sorting and infos 2023-02-07 15:32:41 +01:00
Steffen Jost
116764d07d chore(release): 27.0.20 2023-02-06 20:43:40 +01:00
Steffen Jost
80e5dad4aa chore(lms): qualifications view for supervisors 2023-02-06 20:16:18 +01:00
Steffen Jost
cc070ed21b chore(super): split view compiles again 2023-02-06 16:10:56 +01:00
Steffen Jost
2de8ee0ee6 chore(letter): use tt-font for pin and password 2023-02-06 10:27:45 +01:00
Steffen Jost
11cc45aacf fix(build): weird build error, probably whitespace in routes 2023-02-03 18:52:05 +01:00
Steffen Jost
882bd2a14b chore(qualification): create page for supervisors (WIP) 2023-02-03 18:07:05 +01:00
Steffen Jost
f9b9f79a9e Merge branch 'master' into fradrive/split-lms 2023-02-03 15:42:04 +01:00
Steffen Jost
1c02b85fa2 fix(letter): email wrapper for renewal letter reinstated in full again 2023-02-02 18:56:56 +01:00
Steffen Jost
451dcd0a09 chore(company): assign company supervisors for new users (model:add column) 2023-02-02 13:12:12 +01:00
Steffen Jost
ca59adee03 chore(lms): increase readability printed lms pins 2023-02-02 12:57:52 +01:00
Steffen Jost
394ce3066c chore(course): direct link for add participant to existing tutorial 2023-02-02 09:57:02 +01:00
Steffen Jost
e9eeaca229 chore(avs): set qu-renewal flag; tutorial add space separated 2023-02-01 18:00:53 +01:00
Steffen Jost
086e49e2ae fix(sap): do not export e-accounts 2023-02-01 13:20:51 +01:00
Steffen Jost
f70c63bf15 refactor(letter): minor rephrase 2023-02-01 10:54:42 +01:00
Steffen Jost
6ff26fcc6c core(avs): add tooltip about lms notifications 2023-01-31 18:36:15 +01:00
Steffen Jost
ed147dbd20 fix(user): check reachability by post or email did not account for department 2023-01-31 14:38:49 +01:00
Steffen Jost
f434eff083 refactor(notifications): change notifications defaults 2023-01-31 13:32:39 +01:00
Steffen Jost
a8b1c36409 refactor(qualifications): adjust tooltip lms blocked 2023-01-31 13:17:09 +01:00
Steffen Jost
529f9884bf chore(release): 27.0.19 2023-01-27 23:22:56 +01:00
Steffen Jost
5e887293d9 fix(build) 2023-01-27 16:44:31 +01:00
Steffen Jost
703a32033b fix(build) 2023-01-27 16:42:47 +01:00
Steffen Jost
32fdfbd31e fix(build) 2023-01-27 16:40:21 +01:00
Steffen Jost
f0170f0774 chore(qualifications): provide separate route for lms and qualifciations 2023-01-27 15:57:48 +01:00
Steffen Jost
01cc46c6e4 chore(avs): log postal address changes 2023-01-27 13:29:54 +01:00
Steffen Jost
d21d66781d chore(letter): make updateReceivers failsafe 2023-01-27 12:27:10 +01:00
Steffen Jost
43ace1c6a0 chore(users): allow multiple company-user associations at once 2023-01-27 11:48:37 +01:00
Steffen Jost
e188670478 chore(model): Cascade for CompanyId on users 2023-01-26 18:03:45 +01:00
Steffen Jost
7359eadae2 Update company.model cascade for company keys within synonyms 2023-01-26 18:03:00 +01:00
Steffen Jost
6d97aa5050 chore(release): 27.0.18 2023-01-25 21:38:49 +01:00
Steffen Jost
526b38027e workaround(pagination): add paginations workarounds to lms and avs synch 2023-01-25 17:10:09 +01:00
Steffen Jost
47f9d60f12 chore(users): update some defaults for users 2023-01-24 13:13:37 +01:00
Steffen Jost
cbc5f35f80 chore(release): 27.0.17 2023-01-22 02:19:16 +01:00
Steffen Jost
5718e2f61b attempt optimized build once more 2023-01-21 17:44:37 +01:00
Steffen Jost
621be4685c chore(release): 27.0.16 2023-01-20 18:54:33 +01:00
Steffen Jost
f0a0c8c599 fix build 2023-01-20 18:38:32 +01:00
Steffen Jost
3d51f2ebdb chore(avs): upsertAvsUser now has a failsafe alternative 2023-01-20 17:54:46 +01:00
Steffen Jost
21fe05ea95 chore(letter): reactivate user update before sending 2023-01-20 17:49:40 +01:00
Steffen Jost
ed68539601 attempt to fix build 2023-01-20 17:48:59 +01:00
Steffen Jost
0366f8ccca fix(test): test for applyMetas handles duplicate keys in correct order now 2023-01-20 14:33:26 +01:00
Steffen Jost
45e58f7fa9 chore(release): 27.0.15 2023-01-20 13:09:26 +01:00
Steffen Jost
4509a70f99 refactor(model): set default for company table 2023-01-20 11:54:54 +01:00
Steffen Jost
b3a87c440c chore(avs): remove dangerous test button 2023-01-20 10:43:58 +01:00
Steffen Jost
172181f1c6 fix(build): reactivate optimisations and llvm backend 2023-01-20 09:41:24 +01:00
Steffen Jost
ff60d6034b chore(release): 27.0.14 2023-01-20 09:35:53 +01:00
Steffen Jost
f208d2aa99 attempt to fix build by removing derive Typeable (likely no effect) 2023-01-20 09:17:50 +01:00
Steffen Jost
7f0a45fa4a another attempt to fix build 2023-01-20 08:42:35 +01:00
Steffen Jost
33a8dfdda1 chore(release): 27.0.13 2023-01-19 22:59:22 +01:00
Steffen Jost
5e2931db9e another attempt to fix build 2023-01-19 22:36:47 +01:00
Steffen Jost
f0651271cc chore(release): 27.0.12 2023-01-19 18:34:19 +01:00
Steffen Jost
ad4fbc41c6 chore: refactor to fix circular depenency, update receivers before sending, improve company model 2023-01-19 17:59:58 +01:00
Steffen Jost
929cdb0e4a chore(release): 27.0.11 2023-01-19 10:40:45 +01:00
Steffen Jost
f0814ed444 fix build attempt 2023-01-19 10:10:40 +01:00
Steffen Jost
f308a7ce47 fix build attempt 2023-01-19 10:09:52 +01:00
Steffen Jost
cd51e4e5d3 fix build attempt 2023-01-19 10:02:58 +01:00
Steffen Jost
da6ceeef0b fix build attempt 2023-01-19 10:01:31 +01:00
Steffen Jost
76e65044f7 fix build attempt 2023-01-19 09:56:39 +01:00
Steffen Jost
6e7af8d820 fix build attempt 2023-01-19 09:55:12 +01:00
Steffen Jost
25bc46a2af fix build attempt 2023-01-19 09:53:04 +01:00
Steffen Jost
f23354148c chore(release): 27.0.10 2023-01-18 19:19:45 +01:00
Steffen Jost
c8a7ab98ab fix build 2023-01-18 19:04:31 +01:00
Steffen Jost
ed9b24f275 fix build 2023-01-18 18:59:08 +01:00
Steffen Jost
65ea64780f chore(users): add birthday field 2023-01-18 18:51:53 +01:00
Steffen Jost
53499fd637 chore(avs): ensure audit log usage for avs problem resolution 2023-01-18 18:04:30 +01:00
Steffen Jost
06f283be7e chore(avs): add safety catch for revoke unknown avs licences 2023-01-18 17:36:11 +01:00
Steffen Jost
86d947f7e8 fix(mail): mail-reroute-to now changes envelope-recipients as expected 2023-01-18 17:33:12 +01:00
Steffen Jost
915cc109a7 chore(release): 27.0.9 2023-01-17 19:13:01 +01:00
Steffen Jost
cabecec99d chore(avs): preparations for avs synch confirmation 2023-01-17 18:45:06 +01:00
Steffen Jost
eb4e50b19c chore(avs): show avs config on test page 2023-01-17 18:13:46 +01:00
Steffen Jost
19012abd38 chore(users): add action to remove all supervisors 2023-01-17 15:53:59 +01:00
Steffen Jost
c42930d4d0 chore(lms): deactivate lms actions for supervisors 2023-01-17 15:52:38 +01:00
Steffen Jost
a1f82a66de chore(profile): always show mail or post preference to avoid confusion 2023-01-17 15:45:48 +01:00
Steffen Jost
d6f7214b03 chore(lms): add arbritrary text to qualificationBlocked 2023-01-17 14:32:56 +01:00
Steffen Jost
9da61c10b5 chore(mail): add setting to reroute all mails (letters are generated but not sent) 2023-01-17 13:34:37 +01:00
Steffen Jost
18767aa968 chore(lms): introduce flag for cancelled qualifications that will no longer be renewed 2023-01-17 11:33:14 +01:00
Steffen Jost
63d67138ba chore(release): 27.0.8 2023-01-13 19:29:05 +01:00
Steffen Jost
771bcd6993 chore(users): change supervisors in user list 2023-01-13 19:04:36 +01:00
Steffen Jost
b503ced38f Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-01-13 11:55:31 +01:00
Steffen Jost
4db2649007 Merge branch 'revert-b732479d' into 'master'
Revert "Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive"

See merge request fradrive/fradrive!14
2023-01-13 02:29:10 +01:00
Steffen Jost
92d520060f chore(users): clarify new user auth notifications options 2023-01-12 17:32:22 +01:00
Steffen Jost
00b73bd8b5 chore(release): 27.0.7 2023-01-12 17:30:36 +01:00
Steffen Jost
a0338a40a1 Revert "Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive"
This reverts commit b732479d89
2023-01-12 16:59:01 +01:00
Steffen Jost
b732479d89 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2023-01-12 16:58:20 +01:00
Steffen Jost
8456f18bf6 fix(user): add new user failed due to AuthNoLogin not treated in notification template 2023-01-12 16:55:48 +01:00
Steffen Jost
a1516d9116 fix(user): add new user failed due to AuthNoLogin not treated in notification template 2023-01-12 16:52:23 +01:00
Steffen Jost
744b8759fc chore(release): 27.0.6 2023-01-12 12:26:24 +01:00
Steffen Jost
306b54fa3e chore(avs): attempts to fix pagination on avs synch resolve page 2023-01-12 11:55:01 +01:00
Steffen Jost
daa1fe1a37 fix(settings): disable lms jobs by default 2023-01-12 11:19:59 +01:00
Steffen Jost
f69b9eef13 chore(avs): show only 200 avs synch diffs per table - workaround pagination 2023-01-11 17:32:14 +01:00
Steffen Jost
4214c164c4 chore(letter): default pdf passwort card no without leading zeros 2023-01-11 11:50:31 +01:00
Steffen Jost
301b65770d chore(release): 27.0.5 2023-01-10 18:34:21 +01:00
Steffen Jost
850c52b496 fix(avs): import avs users without ldap entry 2023-01-10 18:11:42 +01:00
Steffen Jost
93c83f3833 chore(avs): refine display for unkown avs ids 2023-01-09 17:28:46 +01:00
Steffen Jost
5d64d2fed8 chore(letter): resolve spacing problem with pin field 2023-01-09 17:28:04 +01:00
Steffen Jost
440f78583b chore(release): 27.0.4 2022-12-23 17:37:28 +01:00
Steffen Jost
76e9f7ff66 chore(avs): add company sorting and filtering in avs problem resolution 2022-12-23 17:13:32 +01:00
Steffen Jost
913efb70ba chore(avs): complete AVS synch resolutions options 2022-12-23 16:22:55 +01:00
Steffen Jost
c27646978d chore(release): 27.0.3 2022-12-22 17:37:28 +01:00
Steffen Jost
71c141a08d chore(avs): fix #21 2022-12-22 17:13:29 +01:00
Steffen Jost
b97c28413b chore(avs): distinguish grant vorfeld between up and downgrade 2022-12-22 16:06:03 +01:00
Steffen Jost
6fcc48dea4 Merge branch 'master' into fradrive/api-avs 2022-12-22 10:37:18 +01:00
Steffen Jost
187a3b01ea chore(letter): fix english language renewal letter wording 2022-12-22 10:36:53 +01:00
Steffen Jost
cb94586265 Merge branch 'master' into fradrive/api-avs 2022-12-22 09:06:17 +01:00
Steffen Jost
92b28a7085 chore(avs): avs problem resolution revoke fradrives licences implemented 2022-12-21 18:04:17 +01:00
Steffen Jost
8a9d432a23 chore(mail): fix html meta head, 3rd attempt 2022-12-21 16:43:33 +01:00
Steffen Jost
fca52aa7e6 chore(mail): fix html meta head, 2nd attempt 2022-12-21 16:38:59 +01:00
Steffen Jost
473cc57727 chore(mail): fix html meta head 2022-12-21 16:23:43 +01:00
Steffen Jost
38e47a2e99 chore(mail): fix various typos and formatting problems 2022-12-21 16:03:53 +01:00
Steffen Jost
fb399b8ef0 chore(release): 27.0.2 2022-12-20 17:58:25 +01:00
Steffen Jost
90a5f07c04 fix(mail): fix various minor email attachment problems 2022-12-20 17:39:21 +01:00
Steffen Jost
a748b499ae chore(avs): add licence choice to resolve avs synch 2022-12-20 16:04:52 +01:00
Steffen Jost
635532ec49 chore(avs): synch problems to avs implemented 2022-12-20 15:35:14 +01:00
Steffen Jost
0ffb85cb29 chore(avs): show avs person number on avs problems pages 2022-12-20 13:27:53 +01:00
Steffen Jost
bac476e266 chore(avs): fix qualification validity filtering 2022-12-20 12:52:22 +01:00
Steffen Jost
b203ededaa chore(avs): fix avs synch rowkey ident problem 2022-12-20 09:54:19 +01:00
Steffen Jost
d6cdda10c1 chore(avs): fix problem listing no fd licence but in avs 2022-12-19 16:15:17 +01:00
Steffen Jost
b83fbc114a chore(avs): add min valid duration end date in add tutorial participant 2022-12-16 18:44:01 +01:00
Steffen Jost
cdf6c181a9 chore(avs): add end day for problem resolve in FRADrive 2022-12-16 18:43:34 +01:00
Sarah Vaupel
136e0471d3 chore(release): 27.0.1 2022-12-15 19:58:22 +01:00
Sarah Vaupel
e69821a56f chore: rename unused bindings 2022-12-15 19:25:14 +01:00
Sarah Vaupel
df28d9de4e chore: reintroduce warnings as errors 2022-12-15 19:11:47 +01:00
Sarah Vaupel
a7ed5d637b Merge branch 'master' into fradrive/frontend 2022-12-15 18:51:25 +01:00
Steffen Jost
ce88a2d170 chore(avs): add resolve actions to problems (WIP) 2022-12-15 17:38:46 +01:00
Steffen Jost
d365688ce9 Merge branch 'master' into fradrive/api-avs 2022-12-14 18:17:44 +01:00
Steffen Jost
37b46a3abb chore(avs): WIP fixing avs synch problems 2022-12-14 18:08:35 +01:00
Steffen Jost
df1a816d83 chore(avs): minor improve avs debugging printout 2022-12-14 16:05:03 +01:00
Steffen Jost
2163ed96d0 chore(lms): disable some content from lms overview page for non-admins 2022-12-14 15:37:43 +01:00
Steffen Jost
5f515d7420 Merge branch 'master' into fradrive/api-avs 2022-12-14 14:52:13 +01:00
Steffen Jost
f8d20cd9c8 chore(avs): add problem resolver for unknown avs driving licences 2022-12-14 14:50:35 +01:00
Steffen Jost
f1bd5eb6c7 chore(ui): remove superfluous patch logo rej file 2022-12-14 09:57:12 +01:00
Steffen Jost
ac4d2a6092 chore(ui): change fraport svg logo fill color to white 2022-12-14 09:56:13 +01:00
Steffen Jost
18af47b6d5 chore(ui): remove asidenav 2022-12-14 09:37:59 +01:00
Sarah Vaupel
e368f18bd9 chore(release): 27.0.0 2022-12-14 07:49:54 +01:00
Sarah Vaupel
a0d2fd167c Merge branch 'fradrive/driving-course-participants' into 'master'
Fradrive/driving course participants

Closes #9

See merge request fradrive/fradrive!12
2022-12-14 01:33:39 +01:00
Sarah Vaupel
5a2d2247ad Merge branch 'master' into fradrive/driving-course-participants 2022-12-13 22:23:19 +01:00
Sarah Vaupel
8a001fd2e9 chore(tests): remove applications and allocations from tests 2022-12-13 21:30:00 +01:00
Sarah Vaupel
a6fcbec78a chore: hlint 2022-12-13 21:11:38 +01:00
Sarah Vaupel
f8f3475d30 Merge branch 'fradrive/driving-course-participants' of gitlab.ifi.lmu.de:fradrive/fradrive into fradrive/driving-course-participants 2022-12-13 20:29:22 +01:00
Sarah Vaupel
db3d1b0f70 chore(add-users): fix tutorial audits 2022-12-13 20:26:52 +01:00
Sarah Vaupel
d195daadfc chore(tutorial-users): fix qualification audit 2022-12-13 20:19:45 +01:00
Sarah Vaupel
a4fc235ed4 chore(add-users): audit tutorial participant edit 2022-12-13 20:16:53 +01:00
Sarah Vaupel
b1161f27d0 chore(add-users): audit tutorial edit 2022-12-13 20:11:13 +01:00
Sarah Vaupel
22228ee9c1 chore(tutorial-users): audit qualification edits 2022-12-13 20:08:38 +01:00
Sarah Vaupel
71cde92a1a chore(audit): replace lms audit table with Transaction log entries 2022-12-13 19:58:56 +01:00
Sarah Vaupel
8dc7d18bf1 chore: fix refactor woopsie 2022-12-13 19:57:45 +01:00
Sarah Vaupel
66b4cf8542 refactor!: remove applications and allocations 2022-12-13 19:39:37 +01:00
Steffen Jost
a890179d81 chore(avs): prepare proper avs interface for admin 2022-12-13 18:04:43 +01:00
Steffen Jost
10b443f188 test(pandoc): fix an occasionally erroneously failing test 2022-12-13 10:51:10 +01:00
Steffen Jost
d25dd64eec fix(build): accepting linter suggestions 2022-12-13 08:22:59 +01:00
Steffen Jost
8ebae1bee7 chore(release): 26.6.6 2022-12-12 19:13:49 +01:00
Steffen Jost
3a922ffc7b chore(history): reset version history for initial FRADrive release 2022-12-12 18:26:39 +01:00
Steffen Jost
b1adf99147 chore(avs): add newlines to results of avs test queries 2022-12-12 17:14:27 +01:00
Steffen Jost
3596809192 Revert "chore(avs): avs testpage shows JSON pandoc formatted"
This reverts commit 1216bc0f2f.

Pandoc JSON Parser failes on tshow . ToJSON
2022-12-12 17:06:37 +01:00
Steffen Jost
1216bc0f2f chore(avs): avs testpage shows JSON pandoc formatted 2022-12-12 16:46:22 +01:00
Sarah Vaupel
69de44893c feat(course-users): set new tutorials to Schulung 2022-12-12 15:26:15 +01:00
Sarah Vaupel
2c13defecd refactor(add-users): cleanup add-users handler 2022-12-12 14:01:03 +01:00
Sarah Vaupel
57c9535733 fix(add-users): fix confirm secret field decoding 2022-12-12 13:25:35 +01:00
Sarah Vaupel
727d78cabc fix(add-users): fix and refactor confirm post param handling 2022-12-12 12:28:05 +01:00
Steffen Jost
f352eca7e7 chore(users): add sorting and filtering by supervisor in users list
Closes #8
2022-12-12 11:25:17 +01:00
Sarah Vaupel
56a23b7abf chore(add-users): reformulate messages 2022-12-12 11:23:27 +01:00
Sarah Vaupel
c013ae9efc feat(add-users): connect confirmation form with handler 2022-12-12 10:54:01 +01:00
Sarah Vaupel
8c66686e48 chore(add-users): reformulate messages 2022-12-12 10:46:55 +01:00
Steffen Jost
bbc1b169e8 chore(users): add sorting and filtering by company in users list 2022-12-12 10:43:00 +01:00
Sarah Vaupel
0b3e54022b chore(add-users): display user name in confirmation form 2022-12-12 07:33:52 +01:00
Sarah Vaupel
94a96352cc chore(add-users): add confirmation form 2022-12-12 07:06:55 +01:00
Sarah Vaupel
9850e1dd88 feat(tutorial-users): replace study-fields column with qualifications column 2022-12-12 04:22:22 +01:00
Sarah Vaupel
fa0caba55d feat(tutorial-users): table action for granting qualifications 2022-12-12 03:15:46 +01:00
Sarah Vaupel
3189c420b5 refactor(add-users): modularize add-users handler 2022-12-12 02:02:39 +01:00
Sarah Vaupel
a882a3c0d0 feat(add-users): more page-actions for convenience 2022-12-12 02:01:55 +01:00
Sarah Vaupel
638ce6061e chore(add-users): clarify messages 2022-12-12 02:01:30 +01:00
Sarah Vaupel
9c62c9ee8c feat(add-users): add page-action to add users from TUsersR 2022-12-12 01:22:41 +01:00
Sarah Vaupel
5e02c99c44 fix(add-users): fix typo in message 2022-12-12 01:21:44 +01:00
Sarah Vaupel
fecc752d6c feat(add-users): correctly add users and reroute 2022-12-12 01:16:01 +01:00
Sarah Vaupel
ee90856b50 refactor(add-users): restructure code; add action data types 2022-12-11 17:47:40 +01:00
Sarah Vaupel
dfc017b10a chore(users-add): confirm stub, migrate buttons 2022-12-10 23:23:42 +01:00
Sarah Vaupel
e65d38898e fix(users-add): upsert tutorial only if users not empty 2022-12-10 00:28:35 +01:00
Steffen Jost
6606ccc82c chore(users): show companies in users list 2022-12-09 18:02:26 +01:00
Steffen Jost
acb52c51f4 fix(build): hlint did not like unnecessary monadic code 2022-12-09 16:42:39 +01:00
Steffen Jost
213899eef5 chore(ghc): disable almost all warnings, even under flag pedantic 2022-12-09 12:51:40 +01:00
Sarah Vaupel
662445e8cc feat(users-add): upsert tutorial participants 2022-12-08 20:31:30 +01:00
Sarah Vaupel
93c6853b08 feat(users-add): redirect to different routes depending on tutorial 2022-12-08 19:16:42 +01:00
Steffen Jost
1686a96cc5 chore(avs): prepare function to update all letter receivers 2022-12-08 17:03:10 +01:00
Steffen Jost
612fd9284b refactor(avs): update letter-pin and postal address if unseen before 2022-12-08 11:09:14 +01:00
Steffen Jost
388a89233a chore(admin): admin problem page lists almost all problems now 2022-12-07 16:51:07 +01:00
Steffen Jost
f025b42bfe chore(postal): fix #12 by changing default for userPrefersPostal to True 2022-12-07 10:31:33 +01:00
Sarah Vaupel
e273c60a23 feat(users-add): add error message for users not found in avs 2022-12-06 23:29:45 +01:00
Sarah Vaupel
1445c8f69a chore(users-add): add missing cases of participant result messages 2022-12-06 22:44:39 +01:00
Sarah Vaupel
2235e64444 refactor(users-add): shorten upsert-avs 2022-12-06 22:27:26 +01:00
Steffen Jost
2a98148993 chore(admin): add problem overview on admin main page 2022-12-06 18:20:09 +01:00
Steffen Jost
baedd492d2 Merge branch 'master' into fradrive/api-avs 2022-12-06 14:51:17 +01:00
Steffen Jost
d72f92ff97 Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2022-12-06 14:49:59 +01:00
Steffen Jost
47073d10f4 chore(avs): store and show avs person number, fixes #10 2022-12-06 14:49:50 +01:00
Steffen Jost
214610007c chore(admin): add sql queries for some problems admins have to handle 2022-12-05 18:40:57 +01:00
Steffen Jost
8a08357c3d chore(release): 26.6.5 2022-12-05 16:55:15 +01:00
Steffen Jost
a4716cb92f Merge branch 'master' into fradrive/api-avs 2022-12-05 16:45:34 +01:00
Steffen Jost
4c901239d5 refactor(avs): fix upsertCampusUserByCn 2022-12-05 16:19:10 +01:00
Steffen Jost
63865f86eb chore(avs): ignore multiple feedback for single id in setLicenceAvs 2022-12-05 11:39:56 +01:00
Sarah Vaupel
cba73bf2ca feat(course-users): register avs-upserted users 2022-12-04 19:34:45 +01:00
Sarah Vaupel
ddc71d7fd0 chore(add-users): remove invite functionality, implement avs form stub 2022-12-04 19:13:39 +01:00
Steffen Jost
49593d6fef chore(release): 26.6.4 2022-12-02 13:31:58 +01:00
Steffen Jost
b30260a50e chore(avs): add facilities to debug avs and ldap, chunk set avs licences 2022-12-02 12:19:52 +01:00
Steffen Jost
2c35bd85d1 Merge branch 'master' into fradrive/api-avs 2022-12-01 10:53:15 +01:00
Steffen Jost
d224443721 refactor(addUser): blind attempt to speed up compilation 2022-12-01 09:12:08 +01:00
Steffen Jost
53eba95e4c chore(release): 26.6.3 2022-11-30 19:04:20 +01:00
Steffen Jost
a926cc0774 chore(profile): show company, supervisors and supervisees 2022-11-30 18:42:40 +01:00
Steffen Jost
7d3b527640 fix build 2022-11-30 16:12:49 +01:00
Steffen Jost
b20008d3bc fix(avs): normalize internal personal numbers between LDAP and AVS 2022-11-30 15:42:47 +01:00
Steffen Jost
4b295f44d2 chore(avs): fix avs interface to botched specifications 2022-11-30 13:30:00 +01:00
Steffen Jost
617706b895 fix(build) 2022-11-29 19:04:43 +01:00
Steffen Jost
94300211ad minor 2022-11-29 18:20:26 +01:00
Steffen Jost
8d5836c457 chore(release): 26.6.2 2022-11-29 09:12:33 +01:00
Steffen Jost
2d57a3f631 fix(build) 2022-11-29 08:49:08 +01:00
Sarah Vaupel
4a00907bda feat(course-users): fuse avs register form with CAddUserR 2022-11-28 19:55:14 +01:00
Steffen Jost
2c312c3bc2 chore(release): 26.6.1 2022-11-28 18:51:58 +01:00
Steffen Jost
8d97de096b Merge branch 'fradrive/api-avs' 2022-11-28 18:30:14 +01:00
Steffen Jost
cb58eb3690 chore(avs): add all new avs functions to admin test interface for testing 2022-11-28 18:29:48 +01:00
Steffen Jost
8015775ce6 refactor(avs): set licence chain types 2022-11-28 15:21:39 +01:00
Steffen Jost
fc36161ff2 chore(acs): checkLicences completed 2022-11-28 13:39:02 +01:00
Steffen Jost
59f268a796 chore(avs): E.values working example established 2022-11-28 09:54:27 +01:00
Steffen Jost
3794f7482b chore(avs): avs licence synchronize via anti join (WIP, we see light) 2022-11-25 19:08:46 +01:00
Steffen Jost
15f7a7576a fix(lms): filtering qualifications by supervisor works properly now 2022-11-25 17:14:52 +01:00
Sarah Vaupel
5ef36f1d1c fix(routes): remove redundant auth tag 2022-11-24 18:57:55 +01:00
Sarah Vaupel
64d3ceb56d feat(avs): register course participants for day groups per default 2022-11-24 18:51:00 +01:00
Steffen Jost
6f2e4e060c chore(sap): remove unnecessart system function tag sap 2022-11-24 18:42:31 +01:00
Sarah Vaupel
747d6198c4 feat(avs): add page-action and form handler for registering avs participants 2022-11-24 18:38:22 +01:00
Steffen Jost
1b4911b300 chore(sap): show SAP ids in tooltip; also refactor canonical 2022-11-24 18:19:14 +01:00
Steffen Jost
c30a6003c5 chore(avs): fix build 2022-11-24 10:04:10 +01:00
Steffen Jost
c627d62037 chore(avs): improve avs interface, check licences (WIP) 2022-11-23 19:28:21 +01:00
Steffen Jost
d125bcdc9c test(avs): add more encodings and test cases vor avs datatypes 2022-11-23 19:27:41 +01:00
Steffen Jost
52c9d25ec4 docs(icons): add Fraport AG icons to folder resources 2022-11-23 17:32:26 +01:00
Steffen Jost
afa1ceff20 Merge branch 'master' into fradrive/api-avs 2022-11-23 12:12:51 +01:00
Steffen Jost
adff8082b1 chore(sap): adjust sap interface according to lastest discussion 2022-11-23 11:10:09 +01:00
Steffen Jost
17b3341bba chore(avs): upsertAvsUserById completed 2022-11-22 17:39:19 +01:00
Steffen Jost
0b2fa2c197 Merge branch 'master' into fradrive/api-avs 2022-11-18 20:03:43 +01:00
Steffen Jost
58014c3a32 chore(release): 26.6.0 2022-11-18 19:34:25 +01:00
Steffen Jost
fc513e8251 chore(SAP): add SAP interface direct download 2022-11-18 18:46:44 +01:00
Steffen Jost
42cd3e7f08 chore(lms): write users download to log 2022-11-18 16:44:09 +01:00
Steffen Jost
494f86a5f7 chore(avs): creating new users by cardno or internpersno completed 2022-11-17 18:13:54 +01:00
Steffen Jost
734eb8927e chore(avs): adjust to newly refined VSM specifications (DONE) 2022-11-17 12:55:58 +01:00
Steffen Jost
df559fead1 chore(avs): adjust to newly refined VSM specifications (WIP) 2022-11-17 12:32:08 +01:00
Steffen Jost
39474d169c chore(company): company added by upsertAvsUser 2022-11-16 17:43:46 +01:00
Sarah Vaupel
d4b341ba25 feat(implementation): add paragraph about license (AGPL-3.0-or-later) 2022-11-16 16:25:40 +01:00
Sarah Vaupel
5a88d5c41f feat(footer): add link to source code 2022-11-16 16:12:34 +01:00
Steffen Jost
9bfcbfc568 test(avs): AvsCardNo instances adjusted for 8-digit codes 2022-11-16 16:01:35 +01:00
Steffen Jost
a5010eb61d chore(user): assimilateUsers respects LmsUser and CompanyUser now 2022-11-16 13:47:32 +01:00
Steffen Jost
c04704a549 chore(company): add company db 2022-11-16 13:46:55 +01:00
Steffen Jost
88d0bf03bf chore(avs): work on new avs upsert user (WIP) 2022-11-15 17:26:54 +01:00
Steffen Jost
453bbd6ce4 chore(avs): upsert avs user continued (WIP) 2022-11-15 13:12:57 +01:00
Steffen Jost
6f7282b512 chore(avs): expand avs interface 2022-11-14 18:46:38 +01:00
Steffen Jost
2a6fee30ea Merge branch 'master' into fradrive/api-avs 2022-11-14 16:30:56 +01:00
Steffen Jost
6bea364f48 chore(legal): rework legal information for FRADrive 2022-11-14 16:25:20 +01:00
Steffen Jost
e1f410375c chore(legal): fix build 2022-11-11 18:13:38 +01:00
Steffen Jost
0d9c2963d5 chore(legal): redirect legal to external fraport urls 2022-11-11 17:11:39 +01:00
Steffen Jost
2c12260cee chore(print): test print option for supervisor 2022-11-10 15:57:38 +01:00
Steffen Jost
7528c6ec0b chore(letter): generic supervisor letter working 2022-11-10 13:10:37 +01:00
Steffen Jost
a7949aba9c chore(letter): generalizing letter sending (WIP) 2022-11-09 17:05:57 +01:00
Steffen Jost
2cdc5530ad chore(i18n): working on i18nHamletFile 2022-11-08 18:05:50 +01:00
Steffen Jost
3e848976df chore(mail): supervisor email reroute working 2022-11-08 12:25:49 +01:00
Steffen Jost
6f1a4020ba chore(mail): supervisor info messages (WIP) 2022-11-07 17:52:33 +01:00
Steffen Jost
0cad77c32c Merge branch 'master' into fradrive/api-avs 2022-11-07 08:51:00 +01:00
Steffen Jost
00dc0be032 chore(release): 26.5.14 2022-11-06 18:51:52 +01:00
Steffen Jost
b64be22636 chore(lms): link lms to print center 2022-11-04 17:23:17 +01:00
Steffen Jost
e185015b75 chore(mail): reworked testmail to test named attachments 2022-11-04 16:23:43 +01:00
Steffen Jost
fea058cffc chore(release): 26.5.13 2022-11-03 19:28:01 +01:00
Steffen Jost
2beb5f7b71 chore(lms): minor 2022-11-03 19:00:26 +01:00
Steffen Jost
457f4dd6b1 chore(lms): properly show all print job acknowledgements on lms page 2022-11-03 18:59:35 +01:00
Steffen Jost
030a4be533 chore(mail): add supervisor mail tag only for supervisors 2022-11-03 16:53:54 +01:00
Steffen Jost
8a60cd8c02 chore(lpr): sanitze printjob names, remove unusable printAckFree route 2022-11-03 16:49:43 +01:00
Steffen Jost
a6b62674d2 test(mail): modify sendTestMail to find out how addHtmlMarkdownAlternatives truly works 2022-11-03 15:48:30 +01:00
Steffen Jost
a75c7520b5 chore(mail): modify subject for supervisor 2022-11-03 15:46:50 +01:00
Steffen Jost
40cba1ab9b chore(letter): minor typo fix 2022-11-02 15:00:25 +01:00
Steffen Jost
cc07d700ed chore(letters): fix some spellings and formats 2022-11-01 12:25:26 +01:00
Steffen Jost
2c10a07a15 chore(qualifications): fix build for filter by supervisor 2022-10-31 18:06:16 +01:00
Steffen Jost
1b4ccc458f Merge branch 'master' into fradrive/api-avs 2022-10-31 14:24:24 +01:00
Steffen Jost
ee1469c974 chore(email): userMailT respects supervisors 2022-10-31 13:21:37 +01:00
Steffen Jost
85894c0805 chore(mail): revert supervisor rerouting at notification level 2022-10-31 09:45:55 +01:00
Sarah Vaupel
0990985740 chore(release): 26.5.12 2022-10-31 02:18:48 +01:00
Sarah Vaupel
a2dc7c1385 chore(release): 26.5.11 2022-10-31 01:27:18 +01:00
Sarah Vaupel
786f3923ef chore(release): 26.5.9 2022-10-31 01:15:33 +01:00
Sarah Vaupel
b503e6183f chore(nix): fix well-known output hash 2022-10-30 20:47:17 +01:00
Steffen Jost
e01fd96bb5 chore(supervisor): reroute most notifications (WIP) 2022-10-28 17:59:54 +02:00
Steffen Jost
e9eaa8263f Merge branch 'master' into fradrive/api-avs 2022-10-28 15:08:26 +02:00
Steffen Jost
173468f246 refactor(sql): minor esqueleto refactoring 2022-10-28 14:49:03 +02:00
Steffen Jost
fb82dcbb33 chore(lms): use array_agg for print job acknowledgements 2022-10-28 12:48:11 +02:00
Steffen Jost
0054544d1d Merge branch 'master' of gitlab.ifi.lmu.de:fradrive/fradrive 2022-10-27 17:45:24 +02:00
Steffen Jost
af0bed5bd4 chore(lms): distinct qualifications filter by notExists alternative implemented 2022-10-27 17:23:28 +02:00
Steffen Jost
ad49a5095b chore(lms): fix build, provide alternative print ack date 2022-10-27 15:20:42 +02:00
Sarah Vaupel
15bbf3e8a7 chore: fix flake 2022-10-14 21:48:12 +02:00
Sarah Vaupel
b14a56bda4 chore: migrate flake.nix 2022-10-14 20:09:39 +02:00
Sarah Vaupel
56e9bc2cbd chore: configure pre-commit as git hook 2022-10-14 19:53:15 +02:00
Sarah Vaupel
f5ea1ce9c5 chore: add DCO 2022-10-14 19:51:18 +02:00
Sarah Vaupel
735f54928b chore: fix gitlab-ci scripts 2022-10-14 19:45:28 +02:00
Steffen Jost
e485f2e697 chore(aps): direct route for automatic print job acknowledging 2022-10-14 18:39:31 +02:00
Steffen Jost
56af63adc0 chore(user): assimilateUser considers qualifications (wip) 2022-10-13 18:17:38 +02:00
Steffen Jost
184ccbc7a6 chore(notifications): send notifications to supervisors, but it wont work 2022-10-13 16:24:26 +02:00
Steffen Jost
f0531ba0b0 chore(release): 26.5.8 2022-10-13 09:10:55 +02:00
Steffen Jost
be52096b04 chore: attempt release 2022-10-13 08:33:52 +02:00
Sarah Vaupel
d240cac5f1 chore: fix templates 2022-10-12 09:58:32 +02:00
Sarah Vaupel
5a4aea0062 chore: fix executables 2022-10-12 09:43:42 +02:00
Sarah Vaupel
582b075466 chore: conform to REUSE specification 2022-10-12 09:35:16 +02:00
Sarah Vaupel
9304c55a81 chore: add scripts for license+copyright header and file generation 2022-10-11 23:42:03 +02:00
Sarah Vaupel
a39f85c8a2 chore: add licenses 2022-10-11 23:37:40 +02:00
Sarah Vaupel
70873bae8f chore: migrate dependencies 2022-10-11 23:37:11 +02:00
Steffen Jost
ddca9f6688 chore(supervisor): access tag implemented 2022-10-11 18:52:33 +02:00
Steffen Jost
84e3097706 fix build. No idea what was wrong though. 2022-10-11 17:20:20 +02:00
Steffen Jost
f36b5ee4d0 chore(supervisor): add profile pages for supervisors 2022-10-10 18:09:24 +02:00
Steffen Jost
1f8e76d68b chore(supervisor): adding a supervisor auth tag WIP 2022-10-07 17:49:38 +02:00
Steffen Jost
d323d5e4cf chore(release): 26.5.7 2022-10-07 17:18:00 +02:00
Steffen Jost
59875d9abe chore(test): fix build 2022-10-07 16:41:09 +02:00
Steffen Jost
11648aac2f chore(ldap): allow login with fraport personnel number 2022-10-07 16:22:23 +02:00
Steffen Jost
61991aadc4 chore(avs): wip refactor qualifications view 2022-10-07 16:17:46 +02:00
Steffen Jost
a90ae2653f chore(avs): fix parsing for avs admin status query interface 2022-10-06 12:17:46 +02:00
Steffen Jost
6b6c09b299 chore(nix): add htop for monitoring 2022-10-06 12:16:32 +02:00
Steffen Jost
ef97e19522 chore(ldap): admin interface allows search by personal number 2022-10-06 10:25:09 +02:00
Steffen Jost
86b5f0f175 chore(qualifications): show qualifications on user profile page and send expired notifications 2022-10-05 17:23:48 +02:00
Steffen Jost
24837ec8ae chore(release): 26.5.6 2022-09-30 19:40:15 +02:00
Steffen Jost
7b5940f4cd Merge branch 'master' of gitlab2.rz.ifi.lmu.de:FraDrive/fradrive 2022-09-30 18:22:28 +02:00
Steffen Jost
1731d22ba5 fix(lms): prevent duplicated LmsIdents and Letter sending 2022-09-30 18:21:55 +02:00
Steffen Jost
11fb129f2e chore(settings): use newer fastCDC version thanks to upstream fixes 2022-09-30 15:40:33 +02:00
Steffen Jost
7b152b67ed fix(lms): negating unsigned word auditDuration bug squashed 2022-09-30 15:39:56 +02:00
Sarah Vaupel
061349efb0 fix(frontend): fix typo in navigate-away-prompt 2022-09-30 10:23:53 +02:00
Steffen Jost
32ca2a3280 chore(avs): work on avs person query complete 2022-09-29 17:10:10 +02:00
Steffen Jost
cf9184b72d chore(release): 26.5.5 2022-09-28 20:04:17 +02:00
Steffen Jost
7467c3fad7 chore(build): remove redundant import (2nd attempt) 2022-09-28 19:43:50 +02:00
Steffen Jost
d26c145e55 chore(build): remove redundant import 2022-09-28 19:28:09 +02:00
Steffen Jost
3b34627733 chore(avs): construct comprehensive avs queries 2022-09-28 18:13:23 +02:00
Steffen Jost
9830cb2503 minor 2022-09-28 17:23:30 +02:00
Steffen Jost
c76fb2229d chore(lpr): convenience acknowledgement secured against being outdated by hash 2022-09-28 16:03:58 +02:00
Steffen Jost
9b14a727c0 chore(lms): fix lms filtering by composite notification date 2022-09-28 16:02:42 +02:00
Steffen Jost
c71309aa47 chore(test): fix build by adding needed imports 2022-09-28 16:01:09 +02:00
Steffen Jost
fdd2da2405 chore(lpr+avs): show print ack-date for lms letter invites; refactor avs codes 2022-09-27 18:31:24 +02:00
Steffen Jost
660f80f871 mend 2022-09-27 15:28:54 +02:00
Steffen Jost
c3fe47f50d chore(lms): no longer abort jobs with error 2022-09-27 15:26:08 +02:00
Steffen Jost
116c699a18 chore(avs): fix json tests 2022-09-27 14:24:25 +02:00
Steffen Jost
5793acfbbb chore(avs): adjust arbitrary instances to ensure check succeeding 2022-09-27 11:15:15 +02:00
Steffen Jost
ebd557ff0a chore(avs): add AuthNoLogin authentication mode 2022-09-26 14:31:14 +02:00
Steffen Jost
b4a25df963 chore(avs): more resilient JSON en/decoding 2022-09-26 11:39:07 +02:00
Steffen Jost
a5173bdf22 chore(lpr): convenience buttons for print center 2022-09-23 16:11:08 +02:00
Steffen Jost
d75f741289 fix build 2022-09-23 12:37:25 +02:00
Steffen Jost
a78cf6c301 chore(debug): crop settings debug output 2022-09-23 12:37:10 +02:00
Steffen Jost
f31e509212 fix build 2022-09-22 18:12:00 +02:00
Steffen Jost
9d09ec676a chore(avs): adjust avs interface to latest spec and improve upon 2022-09-21 18:55:51 +02:00
Steffen Jost
a2f22b389a Merge branch 'master' into fradrive/api-avs 2022-09-21 15:02:03 +02:00
Steffen Jost
6a8c743c75 chore(release): 26.5.4 2022-09-21 13:50:05 +02:00
Steffen Jost
1cdd52e96c fix(notifications): qualification renewals are more robust and not sent multiple times at once 2022-09-21 13:25:45 +02:00
Steffen Jost
77fe8051d2 refactor(lms): correct pdf password sanitation and validation 2022-09-21 13:24:27 +02:00
Steffen Jost
25fb169847 chore(lms): add e-learning convenience link to notification email body 2022-09-21 13:21:50 +02:00
Steffen Jost
02c117b579 chore(login): non-ldap logins should work again if laziness permits 2022-09-21 13:19:44 +02:00
Steffen Jost
a92c8f3d08 chore(lpr): attempt to test printing in dev environment 2022-09-21 13:18:10 +02:00
Steffen Jost
69597202df docs(log): add comments about log settings 2022-09-21 13:16:26 +02:00
Sarah Vaupel
790a3a4c16 nix/docker: add locale 2022-09-20 18:07:34 +02:00
Steffen Jost
157d2f7970 chore(lms): proper lms dequeueing now implemented; whole process checked 2022-09-19 19:38:29 +02:00
Steffen Jost
86fd7423b8 refactor(lms): WIP created a nice E.delete that I am no using now 2022-09-19 18:57:53 +02:00
Steffen Jost
6f623c70c5 refactor(email): correct mail formatting 2022-09-19 13:01:38 +02:00
Steffen Jost
1a4c129bfb chore(lms): renew qualification from previous valid until value 2022-09-19 12:42:54 +02:00
Steffen Jost
cba7b4d5c1 chore(release): 26.5.3 2022-09-16 17:43:44 +02:00
Steffen Jost
5a4d8965fc chore(lpr): add lpr dummy for testing 2022-09-16 17:03:17 +02:00
Steffen Jost
20af976357 refactor(lms): lms results and blocked processing reworked 2022-09-16 17:01:02 +02:00
Steffen Jost
d1e81c16c6 chore(lms): add field for suspending qualifications 2022-09-16 15:22:15 +02:00
Steffen Jost
aab9881ad4 chore(db): simplify manual user deletion 2022-09-16 15:08:24 +02:00
Steffen Jost
4dc828f9a2 chore(lms): add suspension to qualifications 2022-09-16 11:22:52 +02:00
Steffen Jost
bd539358bd refactor(lms): send user notifications only after lms acknowleged e-learning 2022-09-15 18:44:53 +02:00
Steffen Jost
4419245e17 refactor(ldap): make ldap response parsing way more lenient 2022-09-15 15:42:55 +02:00
Steffen Jost
4d375e7680 chore(lms): fix convenience link formatting in lms mails and pdf 2022-09-15 15:42:27 +02:00
Steffen Jost
17f760a522 chore(release): 26.5.2 2022-09-14 18:28:19 +02:00
Steffen Jost
44945068c4 chore(mail): fix build 2022-09-14 17:52:19 +02:00
Steffen Jost
3b7d4abd42 chore(lms): better link formatting in letter 2022-09-14 17:51:42 +02:00
Steffen Jost
ae18216331 chore(mail): add link to root to welcome letter 2022-09-14 17:51:14 +02:00
Steffen Jost
cceb60074f fix(lms): trigger userlist job after upload 2022-09-14 17:20:07 +02:00
Steffen Jost
ce277af443 chore(ldap): add ldap parsing test to ldap admin route 2022-09-14 16:00:18 +02:00
Steffen Jost
bb093b1221 chore(release): 26.5.1 2022-09-14 11:20:56 +02:00
Steffen Jost
0c985fef0c chore(ldap): add ldap test interface 2022-09-14 10:52:05 +02:00
Steffen Jost
a9865c4c2d chore(release): 26.5.0 2022-09-09 16:45:58 +02:00
Steffen Jost
cac4870c95 feat(lpr): print center allows filtering by day now 2022-09-09 15:46:18 +02:00
Steffen Jost
fc926c23cb refactor(lpr): fix sender recipient switch and remove printjob uuid column from print center 2022-09-09 13:29:40 +02:00
Steffen Jost
2221b30771 refactor(lpr): lms link switched to https and includes pre-filled login 2022-09-09 12:33:20 +02:00
Steffen Jost
77f76fbe8d refactor(avs): prioritise card color by choosing among several avs cards 2022-09-09 12:32:09 +02:00
Steffen Jost
d174f39530 refactor(lms): lms decoding delimiter is fully optional now 2022-09-09 12:11:13 +02:00
Steffen Jost
b99629b97d chore(release): 26.4.0 2022-09-08 18:51:44 +02:00
Steffen Jost
712f9adcdb chore(lms): fix build 2022-09-08 18:31:38 +02:00
Steffen Jost
0001dfbba9 chore(lms): fix build 2022-09-08 18:21:19 +02:00
Steffen Jost
6159403b27 feat(lms): configurable csv settings for lms direct import and export routes 2022-09-08 18:11:07 +02:00
Steffen Jost
ac0d159db1 chore(avs): better error management 2022-09-08 14:53:05 +02:00
Steffen Jost
243d468c98 mend 2022-09-07 18:00:58 +02:00
Steffen Jost
a1272e38b7 feat(avs): add SetRampDrivingLicence and InfoRampDrivingLicence to AVS interface 2022-09-07 18:00:28 +02:00
Steffen Jost
227970e4b1 refacor(lms): log messages no longer track unencrypted userID 2022-09-07 17:59:44 +02:00
Steffen Jost
68bd7ff51b refactor(lpr): sanitizing cmd argument properly 2022-09-07 17:58:55 +02:00
Steffen Jost
6d7209b3da refactor(pdf): more useful filenames generated 2022-09-06 17:46:01 +02:00
Steffen Jost
655fcf7564 feat(users): allow users to set postal address and email encryption password 2022-09-06 16:49:51 +02:00
Steffen Jost
9f3cb4ffe4 Revert "bad(idea): deactivate failig tests to release - revert me please"
This reverts commit 5b8f77ac97.
2022-09-05 16:06:07 +02:00
Steffen Jost
10e823b0c5 refactor(pandoc): rewrite tests for pandoc applyMetas (2) 2022-09-05 16:04:37 +02:00
Steffen Jost
58cc35d118 refactor(pandoc): rewrite tests for pandoc applyMetas 2022-09-05 15:24:56 +02:00
Steffen Jost
475eb600bb Revert "test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed"
This reverts commit 3081e61e02.
2022-09-05 14:29:04 +02:00
Steffen Jost
5150b6f9b6 Revert "test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed 2"
This reverts commit e0bfa4ce13.
2022-09-05 12:33:30 +02:00
Steffen Jost
d755ff6352 Revert "test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed 3"
This reverts commit 0a25a7cad3.
2022-09-05 12:33:30 +02:00
Steffen Jost
638275582d chore(release): 26.3.1 2022-09-03 12:06:20 +02:00
Steffen Jost
0a25a7cad3 test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed 3 2022-09-03 11:43:08 +02:00
Steffen Jost
e0bfa4ce13 test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed 2 2022-09-03 11:42:07 +02:00
Steffen Jost
3081e61e02 test(pandoc): temporarily disable failing test for applyMetas -- to be reverted and properly fixed 2022-09-03 11:41:03 +02:00
Steffen Jost
5b8f77ac97 bad(idea): deactivate failig tests to release - revert me please 2022-09-03 11:14:15 +02:00
Steffen Jost
1720e1229d fix(build): empty avs config is ignored again 2022-09-03 10:47:43 +02:00
Steffen Jost
ca09ce9663 chore(release): 26.3.0 2022-09-02 23:04:24 +02:00
Steffen Jost
e33ded8584 chore: add avs config to test script 2022-09-02 22:37:10 +02:00
Steffen Jost
d4ea9e8088 Merge branch 'fradrive/letter' 2022-09-02 18:55:10 +02:00
Steffen Jost
20e33bbe13 lms(notify): complete notifications and fix various bugs 2022-09-02 18:53:34 +02:00
Sarah Vaupel
08037ccc75 Merge branch 'u2w-merge' into 'master'
u2w-merge

See merge request FraDrive/fradrive!11
2022-09-02 18:00:28 +02:00
Sarah Vaupel
1aa7a9438a u2w-merge 2022-09-02 18:00:27 +02:00
Steffen Jost
bdfb38d8dc pandoc: restrict exports of print modul to avoid rogue print jobs 2022-09-02 17:05:10 +02:00
Steffen Jost
59fe2819e9 lms: fake users now start over the configuered days instead of validUntil 2022-09-02 15:12:42 +02:00
Steffen Jost
d204d4313d avs: fradrive refuses to start with an incomplete avs configuration 2022-09-02 15:12:32 +02:00
Steffen Jost
7725e97280 test(exam): disable lenghty exam tests while exams are not used 2022-09-02 15:06:26 +02:00
Steffen Jost
1d3c278682 fix(avs): incomplete config throws error 2022-09-02 11:38:03 +02:00
Steffen Jost
7c86293005 fix: build 2022-09-02 11:00:52 +02:00
Steffen Jost
83b8e765c6 lms: add pin passwords to user records 2022-09-01 16:16:56 +02:00
Steffen Jost
3eedff2b9f lms: add interface for create fake users and verify it is working 2022-09-01 12:57:02 +02:00
Steffen Jost
e9485fe22d lms: add fake user generation 2022-08-31 17:55:01 +02:00
Steffen Jost
3e9b62a322 debug: increase level of startup debug message 2022-08-31 17:53:03 +02:00
Steffen Jost
a0d64dff3a test(SemVer): fix Arbitrary SemVer.Version to account for invalid Ord instance 2022-08-31 10:12:27 +02:00
Steffen Jost
f8afca0598 feat(avs): add extraction functions for avs datatypes and tests 2022-08-30 18:27:39 +02:00
Steffen Jost
188f101eed test(user): add new field to fix build 2022-08-30 18:25:52 +02:00
Steffen Jost
8417eb57c9 feat(utils): throwLeftWith to facilitate ldap code 2022-08-26 14:29:46 +02:00
Steffen Jost
5f65e68b26 refactor(ldap): completed refactoring, userDisplayName no longer contains a comma 2022-08-26 11:54:43 +02:00
Steffen Jost
00ab9af2a9 refactor(ldap): merge 2022-08-26 09:54:57 +02:00
Steffen Jost
a804c98520 refactor(ldap): git merge problem 2022-08-26 09:38:33 +02:00
Steffen Jost
7f00455fbb refactor(ldap): correct invalid displaynames and improve ldap code 2022-08-25 16:54:36 +02:00
Steffen Jost
d3314b3e36 lpr: add postal address field to user table 2022-08-24 18:25:34 +02:00
Steffen Jost
1ea047263c lpr: auth tag system-printer fully functional 2022-08-24 14:23:47 +02:00
Steffen Jost
841936178d lpr: add system function printer 2022-08-23 18:43:26 +02:00
Steffen Jost
5c2281bd29 chore(release): 26.2.6 2022-08-16 12:46:24 +02:00
Steffen Jost
3dbdccfa7b lpr: link lpr calls and printJob db entries for actual printing 2022-08-16 12:02:28 +02:00
Steffen Jost
839b126c6a refactor(lpr): minor code cleaning after testing 2022-08-15 16:18:09 +02:00
Steffen Jost
5e7b511eb2 chore(lpr): make lpr settings configurable via env or yml 2022-08-15 14:07:16 +02:00
Steffen Jost
f9f5e0cd65 chore(release): 26.2.5 2022-07-29 17:24:23 +02:00
Steffen Jost
4dbf5f35be chore(lpr): call lpr in qualfication renewal message 2022-07-29 16:55:22 +02:00
Steffen Jost
3ac2151451 chore(renewal-letter): i18n of subject line 2022-07-29 16:54:31 +02:00
Steffen Jost
20422a76e2 refactor(lms): cvs export for qualifcation overview working and clean 2022-07-29 16:03:15 +02:00
Steffen Jost
bb7ddcdd20 refactor: add compileTime via template Haskell to Utils.DateTime 2022-07-29 14:58:56 +02:00
Steffen Jost
439520794d chore(lms): more testdata 2022-07-29 14:57:36 +02:00
Steffen Jost
b6254bc399 chore(lms): csv export compiles again -- horray! 2022-07-29 10:54:49 +02:00
Steffen Jost
8aab8b7b6b chore(lms): full export (WIP) 2022-07-28 17:25:04 +02:00
Steffen Jost
7a532e9778 chore(email): set name for pdf file attachment 2022-07-28 16:58:52 +02:00
Steffen Jost
1a67063ec3 chore(lms): add csv export to overview table (wip) 2022-07-26 14:35:49 +02:00
Steffen Jost
34cc6354d2 chore(release): 26.2.4 2022-07-25 18:43:05 +02:00
Steffen Jost
33f133b5de chore(lms): email notifications send encrypted pdfs now 2022-07-25 18:16:08 +02:00
Steffen Jost
56c2847b45 chore(pdf): use pdf encryption on admin test page 2022-07-25 13:14:58 +02:00
Steffen Jost
09b2a88b4e chore(pdf): encrypt pdfs with password using external pdftk 2022-07-25 12:31:37 +02:00
Steffen Jost
a0271009b2 refactor(printing): switch from cups to busybox-lpr 2022-07-25 09:55:13 +02:00
Steffen Jost
085b7ba3e8 refactor(tests): pandoc tests simplified 2022-07-20 17:31:05 +02:00
Steffen Jost
d5214e49ab chore(letter): adjust pin box position yet again 2022-07-20 12:45:33 +02:00
Steffen Jost
a2f18a2272 chore(letter): adjust pin box once more; include recipients name in address field 2022-07-20 10:23:32 +02:00
Steffen Jost
e7075b3650 chore(letter): adjust margins, positioning and colors according to apc feedback 2022-07-19 17:01:15 +02:00
Steffen Jost
aa45c2b550 chore(release): 26.2.3 2022-07-18 18:18:25 +02:00
Steffen Jost
cfc1609eac refactor(letter): extract user processing for letter meta data 2022-07-18 16:48:59 +02:00
Steffen Jost
94feda10c2 chore(letter): sending of multiple user letter with proper language interpolation 2022-07-18 16:28:05 +02:00
Steffen Jost
db48d11ba6 chore(release): 26.2.2 2022-07-16 12:52:29 +02:00
Steffen Jost
ed3ca8c3d6 fix(build): tests were overzealous 2022-07-16 00:03:00 +02:00
Steffen Jost
399b2d3fc6 chore(letter): fix build and add filters to print center 2022-07-15 19:00:08 +02:00
Steffen Jost
efc13f4498 chore(letter): implement print center acknowledging list 2022-07-15 17:45:40 +02:00
Steffen Jost
ea2873476b chore(pandoc): improved tests for helper functions like addMeta 2022-07-15 17:45:15 +02:00
Steffen Jost
e63a3af926 chore(pandoc): add more tests 2022-07-14 19:09:30 +02:00
Steffen Jost
8b14cd6c4c test(pandoc): add more tests for pandoc helper functions 2022-07-14 18:20:57 +02:00
Sarah Vaupel
246cf4f646 chore: hlint 2022-07-14 18:18:43 +02:00
Sarah Vaupel
b0be3ec6a6 chore(tests): fix pandoc tests 2022-07-14 18:17:36 +02:00
Sarah Vaupel
79253ff48c chore(print-center): work on dbtable contd 2022-07-14 18:10:20 +02:00
Sarah Vaupel
a398580b3f chore(print-center): work on dbtable contd 2022-07-14 18:03:48 +02:00
Sarah Vaupel
9fa12dc758 chore(print-center): work on dbtable 2022-07-14 17:57:40 +02:00
Sarah Vaupel
ac78edd99c chore: pandoc test stub 2022-07-14 17:57:08 +02:00
Sarah Vaupel
957bf4c966 fix(print-center): fix syntax 2022-07-14 16:58:06 +02:00
Sarah Vaupel
9258ba7665 fix(datetime): remove redundant constraints 2022-07-14 16:57:31 +02:00
Steffen Jost
8e2edbda91 Merge branch 'fradrive/letter' of gitlab2.rz.ifi.lmu.de:FraDrive/fradrive into fradrive/letter 2022-07-14 15:46:15 +02:00
Steffen Jost
8a57dfad23 chore(letter): minor fix build 2022-07-14 15:46:12 +02:00
Sarah Vaupel
ad44855910 chore(datetime): add timeFormatUser 2022-07-14 15:46:04 +02:00
Steffen Jost
5e671f1f76 chore(letter): show list of printjobs (wip) 2022-07-14 15:14:12 +02:00
Steffen Jost
51339ac289 chore(print): add prinjobs to model 2022-07-13 17:08:19 +02:00
Steffen Jost
21c0015ba0 chore(letter): applying metadata to template working now as intended 2022-07-12 17:43:20 +02:00
Steffen Jost
104794a210 chore(letter): letter generation in handler; debugging 2022-07-08 19:02:00 +02:00
Steffen Jost
cd6e560b4b chore(letter): connect letter sending form 2022-07-08 12:55:58 +02:00
Steffen Jost
d078257a70 refactor(letter): i18n renewal letter templating 2022-07-07 18:56:10 +02:00
Steffen Jost
a6782d8637 chore(print): add route for print overview and reorganise existing apc route 2022-07-07 13:09:11 +02:00
Steffen Jost
226f718f8a chore(print): various, also add caching to pdf generation 2022-07-06 18:02:31 +02:00
Steffen Jost
5fd28c0150 chore(print): generalise pdf generation with din5008 2022-07-06 14:55:24 +02:00
Steffen Jost
0eb165da9b refactor(pandoc): avoid unnecessary explicit dependency for doctemplates, which is now a hidden dependency of pandoc again 2022-07-06 08:56:15 +02:00
Steffen Jost
249019189f chore(print): generalize pandoc printing 2022-07-05 18:20:40 +02:00
Steffen Jost
a35341d4b7 fix(build): remove redundant import 2022-07-04 13:05:28 +02:00
Steffen Jost
f166cf4a5a chore(apc): add packages textpos for pin letter 2022-07-01 17:42:22 +02:00
Steffen Jost
7a6ea92063 refactor(avs): account for 404 response instead of empty search results, more quickcheck tests 2022-07-01 16:31:12 +02:00
Steffen Jost
390b1424c9 chore(release): 26.2.1 2022-06-30 20:47:53 +02:00
Steffen Jost
ab32d9d5e9 refactor(avs): add case-insensitive aeson parsing facilities 2022-06-30 17:59:52 +02:00
Steffen Jost
3587e5cc75 chore(avs): add test cases and fix bugs 2022-06-30 17:16:25 +02:00
Steffen Jost
7a717923b2 chore(avs): formalize all avs responses to proper datatypes 2022-06-30 16:38:52 +02:00
Steffen Jost
a8dc8f6d90 refactor(avs): get rid of awkward signatures and contain AVS api to one module 2022-06-30 13:32:30 +02:00
Steffen Jost
885d268d50 chore(avs): ToJSON and FromJSON instances to deal with avs interface quirks in response 2022-06-30 11:27:48 +02:00
Steffen Jost
2a3b36ff71 chore(avs): parse status response 2022-06-29 15:37:05 +02:00
Sarah Vaupel
a4f221fd13 chore(release): 26.2.0 2022-06-29 01:44:44 +02:00
Sarah Vaupel
89aff47152 fix(avs): fix tests (do not exit with failure on empty avs config) 2022-06-29 01:25:24 +02:00
Sarah Vaupel
e03282fedd chore: hlint 2022-06-28 22:20:56 +02:00
Sarah Vaupel
3de3c03fa1 chore: merge master 2022-06-28 21:51:44 +02:00
Sarah Vaupel
66dd1a8b70 feat(avs): disable certificate validation for avs api 2022-06-28 21:50:54 +02:00
Steffen Jost
3be0cf95aa chore(printing): minor changes 2022-06-28 17:13:38 +02:00
Steffen Jost
3d14aee7ee chore(printer): add stub for apc printing tests 2022-06-28 16:07:30 +02:00
Steffen Jost
a0cfe7807b chore(avs): add person status query demo interface 2022-06-28 12:41:44 +02:00
Steffen Jost
f4aa8d803f chore(release): 26.1.4 2022-06-27 17:10:10 +02:00
Steffen Jost
75ba27d74a chore(worklfow): remove system message about workflows 2022-06-27 16:52:15 +02:00
Steffen Jost
5b56017683 chore(avs): connect avs form with server request 2022-06-27 16:50:29 +02:00
Steffen Jost
27b4529c17 chore(avs): add avs query form 2022-06-24 18:36:50 +02:00
Steffen Jost
caa96ce184 chore(avs): add avs settings 2022-06-24 16:41:26 +02:00
Steffen Jost
548a85ead6 chore(avs): alternatves for servant specification 2022-06-24 16:32:02 +02:00
Steffen Jost
b7e8c89777 fix(build) 2022-06-23 19:25:03 +02:00
Steffen Jost
4818b8518e chore(avs): add basic servant api for person search 2022-06-23 19:10:38 +02:00
Steffen Jost
0a68ea8591 chore(release): 26.1.3 2022-06-17 12:35:42 +02:00
Steffen Jost
b76c414220 fix(pdf): embed din5008 templates within binary 2022-06-17 12:20:42 +02:00
Steffen Jost
9628cb5463 chore(jobs): better error message for job failures 2022-06-15 17:01:28 +02:00
Steffen Jost
c2e3693490 fix(build): fix frontend vulnerability 2022-06-15 16:57:33 +02:00
Steffen Jost
b813442012 fix(ratio): more attempts to fix ratio bug 2022-06-15 16:00:25 +02:00
Steffen Jost
7984cd9ecb chore(lms): hide lms pin column by default 2022-06-14 18:21:51 +02:00
Steffen Jost
588820f068 chore(users): show company department and personal number in user list 2022-06-14 18:20:49 +02:00
Steffen Jost
882ca7c582 fix(haddock): fix accidental haddock comments 2022-06-14 18:17:08 +02:00
Sarah Vaupel
94fb7f7ae0 chore(release): 26.1.2 2022-06-10 19:35:35 +02:00
Sarah Vaupel
173f4b21fa Merge branch 'fradrive-dbselectif' into 'master'
Fradrive dbselectif

See merge request FraDrive/fradrive!10
2022-06-10 19:12:07 +02:00
Steffen Jost
dd8910c3c4 Fradrive dbselectif 2022-06-10 19:12:07 +02:00
Sarah Vaupel
99e39bc27a fix: remove merge artifacts 2022-06-10 16:49:11 +02:00
Sarah Vaupel
5ede13824b chore: add servant-quickcheck to stack flake 2022-06-09 21:12:46 +02:00
Sarah Vaupel
e62cbfa4da chore: node2nix 2022-06-09 21:12:46 +02:00
Sarah Vaupel
2c2a456bcb chore: npm update 2022-06-09 21:12:46 +02:00
Sarah Vaupel
f2cf9344e7 Merge branch master of gitlab2.rz.ifi.lmu.de:uni2work/uni2work 2022-06-09 21:09:18 +02:00
Steffen Jost
77f09f05f5 chore(pdf): pdf generation working with texlive-basic-scheme 2022-06-09 11:59:19 +02:00
Steffen Jost
c0eafdd1c8 chore(pdf): add din5008 letter templating 2022-06-08 18:26:14 +02:00
Steffen Jost
5015dba5e3 fix: minor corrections, also fix luatex dependencies 2022-06-08 16:31:56 +02:00
Steffen Jost
74ad8dbe26 chore(release): 25.24.5 2022-06-07 18:01:35 +02:00
Steffen Jost
0778548285 Merge branch 'demo-pandoc' 2022-06-07 17:49:26 +02:00
Steffen Jost
d8d75edafe fix(build): add some guards at calls to (%) for issue #34 2022-06-07 17:49:00 +02:00
Steffen Jost
cba748e94e fix(build): user basic texlive package with required packages only 2022-06-07 16:51:27 +02:00
Steffen Jost
caa2278e32 chore(release): 25.24.4 2022-06-07 13:11:32 +02:00
Steffen Jost
ae60271a46 Merge branch 'demo-pandoc' 2022-06-07 12:59:26 +02:00
Steffen Jost
e95eb73d87 chore(pdf): fix build, switch latex package 2022-06-07 12:59:02 +02:00
Sarah Vaupel
47fd77838e Merge branch 'csv-osis-demo' into 'master'
Merge branch csv osis demo into master

See merge request FraDrive/fradrive!9
2022-06-03 20:08:08 +02:00
Steffen Jost
20be959aff Merge branch csv osis demo into master 2022-06-03 20:08:07 +02:00
Steffen Jost
6848758ee4 chore(pdf): add latex template 2022-06-03 11:20:12 +02:00
Steffen Jost
33df8e6fdc chore(pdf): pdf generation demo working 2022-05-31 18:03:46 +02:00
Sarah Vaupel
e3aa6aede0 chore(shell.nix): add texlive basic scheme 2022-05-30 09:04:11 +02:00
Steffen Jost
c5e8a38cd7 chore(pdf): send PDF with proper file download mechanics 2022-05-23 18:25:12 +02:00
Steffen Jost
62e1694b6e chore(pdf): add initial hello-world demo 2022-05-23 16:41:03 +02:00
Steffen Jost
9a432746fc chore(pdf): add initial test frame 2022-05-20 16:28:35 +02:00
2728 changed files with 128439 additions and 123405 deletions

3
..develop.cmd.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -0,0 +1,65 @@
# SPDX-FileCopyrightText: 2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: releaseTag
type: string
- name: releaseEndpoint
type: string
default: 'devfra'
values:
- 'devfra'
- 'prodfra'
jobs:
- job: Release
displayName: Release ${{ parameters.releaseTag }}
container:
image: devfra.azurecr.io/de.fraport.build/tools:1.1.0
endpoint: devfra
steps:
# Download required artifacts from pipeline
- task: DownloadPipelineArtifact@2
displayName: Download FraDrive binaries
inputs:
artifactName: Build_backend
patterns: 'Build_backend/bin/*'
targetPath: '$(Build.Repository.LocalPath)'
- task: Docker@2
displayName: Login to container registry
inputs:
command: login
containerRegistry: '${{ parameters.releaseEndpoint }}'
- task: Bash@3
displayName: Build FraDrive container
inputs:
targetType: inline
script: |
cp docker/fradrive/Dockerfile .
docker build \
--tag $(buildImageUpstream)/fradrive:$(Build.BuildNumber) \
--tag $(buildImageUpstream)/fradrive:${{parameters.releaseTag}} \
--build-arg FROM_IMG=devfra.azurecr.io/de.fraport.trusted/ubuntu \
--build-arg FROM_TAG=20.04 \
--build-arg PROJECT_DIR=$(Build.Repository.LocalPath) \
--build-arg IN_CI=true \
--build-arg IN_CONTAINER=true \
--build-arg HTTPS_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg HTTP_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg NO_PROXY='localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io' \
--build-arg FRAPORT_NOPROXY=dev.azure.com,*.dev.azure.com,*.fraport.de,*.frankfurt-airport.de \
.
- task: Docker@2
displayName: Push container to registry
inputs:
command: push
repository: 'de.fraport.fradrive.build/fradrive'
tags: '$(Build.BuildNumber),${{parameters.releaseTag}}'
- task: Docker@2
displayName: Logout from container registry
inputs:
command: logout
containerRegistry: '${{ parameters.releaseEndpoint }}'

View File

@ -0,0 +1,61 @@
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: serviceName
type: string
- name: dependenciesCaches
type: object
default: []
- name: dependenciesBuildPool
type: string
default: 'Prod Private Agent Pool'
values:
- 'Prod Private Agent Pool'
- 'Prod Private Agent Pool DS2'
- 'Prod Private Agent Pool DS3'
- name: dependenciesBuildCores
type: number
default: 1
- name: dependenciesBuildTimeout
type: number
default: 60
jobs:
- job: SetupDependencies_${{parameters.serviceName}}
displayName: Install ${{parameters.serviceName}} dependencies
dependsOn: SetupImage_${{parameters.serviceName}}
${{ if eq(variables.setupImages, true) }}:
condition: succeeded()
${{ else }}:
condition: always()
pool: '${{parameters.dependenciesBuildPool}}'
timeoutInMinutes: ${{parameters.dependenciesBuildTimeout}}
container:
${{ if variables.setupImages }}:
image: $(buildImageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber)
${{ else }}:
image: $(buildImageUpstream)/${{parameters.serviceName}}:latest
endpoint: devfra
env:
PROJECT_DIR: $(Build.Repository.LocalPath)
IN_CONTAINER: true
IN_CI: true
steps:
# Restore previously-built dependencies from caches
- ${{ each cache in parameters.dependenciesCaches }}:
- template: ./../../steps/cache.yaml
parameters:
cacheIdent: '${{parameters.serviceName}}-dependencies'
cacheKeys: '${{cache.key}}'
cachePath: '${{cache.path}}'
# Compile dependencies
- template: ./../../steps/make.yaml
parameters:
makeJob: dependencies
makeService: ${{parameters.serviceName}}
makeVars: 'CPU_CORES=${{parameters.dependenciesBuildCores}} STACK_CORES=-j${{parameters.dependenciesBuildCores}}'
# (Note: a post-job for updating the dependency cache is automatically created, so no further step is due here.)

View File

@ -0,0 +1,72 @@
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: imageName
type: string
- name: imageBase
type: object
jobs:
- job: SetupImage_${{parameters.imageName}}
displayName: Build ${{parameters.imageName}} image
condition: eq(variables.setupImages, true)
container:
image: devfra.azurecr.io/de.fraport.build/tools:1.1.0
endpoint: devfra
steps:
- task: Docker@2
displayName: Login to container registry
inputs:
command: login
containerRegistry: devfra
- task: Bash@3
displayName: Build ${{parameters.imageName}} image
inputs:
targetType: inline
script: |
cp docker/${{parameters.imageName}}/Dockerfile .
docker build \
--tag $(buildImageUpstream)/${{parameters.imageName}}:$(Build.BuildNumber) \
--build-arg FROM_IMG=${{parameters.imageBase.image}} \
--build-arg FROM_TAG=${{parameters.imageBase.tag}} \
--build-arg HTTPS_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg HTTP_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg NO_PROXY='localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io' \
--build-arg FRAPORT_NOPROXY=dev.azure.com,*.dev.azure.com,*.fraport.de,*.frankfurt-airport.de \
--build-arg PROJECT_DIR=$(Build.Repository.LocalPath) \
--build-arg IN_CI=true \
--build-arg IN_CONTAINER=true \
.
- task: Bash@3
displayName: Push ${{parameters.imageName}} image
inputs:
targetType: inline
script: |
docker push $(buildImageUpstream)/${{parameters.imageName}}:$(Build.BuildNumber)
- task: Bash@3
displayName: Update latest ${{parameters.imageName}} image
condition: or(eq(variables.forcePushLatest, true), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
inputs:
targetType: inline
script: |
docker tag $(buildImageUpstream)/${{parameters.imageName}}:$(Build.BuildNumber) $(buildImageUpstream)/${{parameters.imageName}}:latest
docker push $(buildImageUpstream)/${{parameters.imageName}}:latest
- task: Bash@3
displayName: Save image for publication
inputs:
targetType: inline
script: |
docker image save --output=$(Build.ArtifactStagingDirectory)/${{parameters.imageName}}.tar $(buildImageUpstream)/${{parameters.imageName}}:$(Build.BuildNumber)
- task: PublishBuildArtifacts@1
displayName: Publish image as artifact
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: Image_${{parameters.imageName}}
publishLocation: 'Container'
- task: Docker@2
displayName: Logout from container registry
inputs:
command: logout
containerRegistry: devfra

View File

@ -0,0 +1,141 @@
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: serviceName
type: string
default: serviceName
- name: serviceBase
type: object
default:
image: baseImage
tag: baseImageTag
- name: servicePool
type: string
default: 'Prod Private Agent Pool'
- name: serviceTimeout
type: number
default: 60
# extraBuildOptions: ''
- name: serviceDependsOn
type: object
default: []
- name: serviceRequiredArtifacts
type: object
default: []
- name: serviceArtifacts
type: string
default: ''
- name: buildSteps
type: object
stages:
- stage: ${{ parameters.serviceName }}
dependsOn: ${{ parameters.serviceDependsOn }}
pool: '${{ parameters.servicePool }}'
jobs:
- job: ImageBuild_${{parameters.serviceName}}
displayName: Build ${{parameters.serviceName}} image
condition: or(eq(variables.forcePushLatest, true), eq(variables.onMasterBranch, true), eq(variables.onUpdateBranch, true))
container:
image: devfra.azurecr.io/de.fraport.build/tools:1.1.0
endpoint: devfra
steps:
- checkout: self
- task: Docker@2
displayName: Login to container registry
inputs:
command: login
containerRegistry: devFra
- script: |
ls -a .
pwd
find .
- task: Bash@3
displayName: Build ${{parameters.serviceName}} image
inputs:
targetType: inline
script: |
cp docker/${{parameters.serviceName}}/Dockerfile .
docker build \
--tag $(buildImageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber) \
--build-arg FROM_IMG=${{parameters.serviceBase.image}} \
--build-arg FROM_TAG=${{parameters.serviceBase.tag}} \
--build-arg HTTPS_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg HTTP_PROXY=http://proxy.frankfurt-airport.de:8080 \
--build-arg NO_PROXY='localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io' \
--build-arg FRAPORT_NOPROXY=dev.azure.com,*.dev.azure.com,*.fraport.de,*.frankfurt-airport.de \
--build-arg PROJECT_DIR=$(Build.Repository.LocalPath) \
--build-arg IN_CI=true \
--build-arg IN_CONTAINER=true \
.
- task: Bash@3
displayName: Push ${{ parameters.serviceName }} image
inputs:
targetType: inline
script: |
docker push $(buildImageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber)
- task: Bash@3
displayName: Update latest ${{parameters.serviceName}} image
condition: or(eq(variables.forcePushLatest, true), eq(variables.onMasterBranch, true))
inputs:
targetType: inline
script: |
docker tag $(buildImageUpstream)/${{parameters.serviceName}}:$(Build.BuildNumber) $(buildImageUpstream)/${{parameters.serviceName}}:latest
docker push $(buildImageUpstream)/${{parameters.serviceName}}:latest
- task: Docker@2
displayName: Logout from container registry
inputs:
command: logout
containerRegistry: devFra
- job: Build_${{parameters.serviceName}}
displayName: Build ${{parameters.serviceName}}
dependsOn:
- ImageBuild_${{parameters.serviceName}}
condition: in(dependencies.ImageBuild_${{parameters.serviceName}}.result, 'Succeeded', 'Skipped')
timeoutInMinutes: ${{ parameters.serviceTimeout }}
container:
# TODO: use BuildNumber instead of latest in update branches
# image: devfra.azurecr.io/de.fraport.fradrive.build/frontend:$(Build.BuildNumber)
image: $(buildImageUpstream)/${{parameters.serviceName}}:latest
endpoint: devfra
env:
PROJECT_DIR: $(Build.Repository.LocalPath)
IN_CONTAINER: true
IN_CI: true
steps:
- checkout: self
- ${{ each dependency in parameters.serviceRequiredArtifacts }}:
- task: DownloadPipelineArtifact@2
displayName: Download artifacts from ${{ dependency.name }} dependency
continueOnError: ${{ dependency.continueOnError }}
condition: ${{ dependency.condition }}
inputs:
artifactName: ${{ dependency.artifact }}
source: ${{ dependency.source }}
project: 'Fahrerausbildung'
pipeline: $(System.DefinitionId)
buildVersionToDownload: '${{ dependency.version }}'
tags: '${{ dependency.artifact }}'
allowPartiallySucceededBuilds: true
allowFailedBuilds: true
patterns: '${{ dependency.patterns }}'
targetPath: '$(Build.Repository.LocalPath)'
- ${{ each buildStep in parameters.buildSteps }}:
- template: ./service/build-step.yaml
parameters:
service: ${{ parameters.serviceName }}
buildStep: ${{ buildStep }}
- task: CopyFiles@2
displayName: Copy ${{parameters.serviceName}} artifacts
inputs:
Contents: ${{ parameters.serviceArtifacts }}
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: Publish ${{parameters.serviceName}} artifacts
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: '${{parameters.serviceName}}'
publishLocation: 'Container'

View File

@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: 2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: artifactName
type: string
steps:
- task: DownloadPipelineArtifact@2
displayName: Download artifacts from ${{parameters.artifactName}}
inputs:
source: 'current'
artifactName: '${{parameters.artifactName}}'
targetPath: '$(Build.Repository.LocalPath)'

View File

@ -0,0 +1,18 @@
# SPDX-FileCopyrightText: 2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: cacheIdent
type: string
- name: cacheKeys
type: string
- name: cachePath
type: string
steps:
- task: Cache@2
displayName: Restore ${{parameters.cacheIdent}} cache
inputs:
key: '"${{parameters.cacheIdent}}" | ${{parameters.cacheKeys}}'
path: '${{parameters.cachePath}}'

View File

@ -0,0 +1,35 @@
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
parameters:
- name: makeJob
type: string
values:
- dependencies
- compile
- lint
- test
- name: makeService
type: string
values:
- frontend
- backend
- name: makeVars
type: string
default: ''
steps:
- task: Bash@3
name: ${{parameters.makeJob}}_${{parameters.makeService}}
displayName: make ${{parameters.makeJob}}-${{parameters.makeService}}
env:
HTTPS_PROXY: http://proxy.frankfurt-airport.de:8080
HTTP_PROXY: http://proxy.frankfurt-airport.de:8080
NO_PROXY: 'localhost,127.0.0.1,*.docker.internal,*.azmk8s.io,devfra.azurecr.io,devfra.westeurope.data.azurecr.io'
FRAPORT_NOPROXY: 'dev.azure.com,*.dev.azure.com,*.fraport.de,*.frankfurt-airport.de'
PROJECT_DIR: $(Build.Repository.LocalPath)
inputs:
targetType: inline
script: |
make -- --${{parameters.makeJob}}-${{parameters.makeService}} IN_CONTAINER=true IN_CI=true PROJECT_DIR=${PROJECT_DIR} ${{parameters.makeVars}}

View File

@ -1,10 +0,0 @@
{
"presets": [
["@babel/preset-env", { "useBuiltIns": "usage" }]
],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", { "loose": true }],
["@babel/transform-runtime"]
]
}

3
.dir-locals.el.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -1,6 +0,0 @@
[Dolphin]
Timestamp=2019,6,26,19,32,25
Version=4
[Settings]
HiddenFilesShown=true

View File

@ -1 +0,0 @@
**/*

3
.envrc.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -1,29 +0,0 @@
{
"env": {
"browser": true,
"es6": true,
"jasmine": true
},
"extends": "eslint:recommended",
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly",
"flatpickr": "readonly",
"$": "readonly"
},
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2018,
"ecmaFeatures": {
"legacyDecorators": true
}
},
"rules": {
"no-console": "off",
"no-extra-semi": "off",
"semi": ["error", "always"],
"comma-dangle": ["error", "always-multiline"],
"quotes": ["error", "single"],
"no-var": "error"
}
}

34
.gitignore vendored
View File

@ -1,5 +1,13 @@
.Dockerfile
dist*
develop
node_modules/
.npm/
.node_repl_history
**/assets/icons
**/assets/favicons
bin/
assets/fonts/
*.hi
*.o
*.sqlite3
@ -7,7 +15,14 @@ node_modules/
*.sqlite3-wal
.hsenv*
cabal-dev/
.stack-work/
.cache/
.stack/
.stack-work
.job-*/
.dev-port-http
.dev-port-https
.bash_history
.lesshst
yesod-devel/
.cabal-sandbox
cabal.sandbox.config
@ -27,18 +42,19 @@ src/Handler/Assist.bak
src/Handler/Course.SnapCustom.hs
*.orig
/instance
backend/instance
.stack-work-*
.stack-work.lock
.directory
tags
test.log
*.dump-splices
/.stack-work.lock
/.npmrc
/config/webpack.yml
/config/manifest.json
tunnel.log
/static
/well-known
/.well-known-cache
static
well-known
.well-known-cache
manifest.json
/.nix-well-known
/**/tmp-*
/testdata/bigAlloc_*.csv
@ -50,4 +66,6 @@ tunnel.log
.develop.env
**/result
**/result-*
.develop.cmd
.develop.cmd
/.vscode
backend/.ghc/ghci_history

3
.gitignore.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Felix Hamann <felix.hamann@campus.lmu.de>,Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -1,375 +1,588 @@
workflow:
rules:
- if: '$CI_PIPELINE_SOURCE == "push"'
when: always
- when: never
# SPDX-FileCopyrightText: 2022-2024 Sarah Vaupel <sarah.vaupel@uniworx.de>, Gregor Kleen <gregor@kleen.consulting>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
### IMPORTANT NOTICE ###
# Our pipeline consists of static and dynamic parts.
#
# This file only contains the static parts of our pipeline.
# Dynamic jobs are defined in .gitlab-ci/frontend.yml and .gitlab-ci/backend.yml.
# These are used as a template to generate downstream (child) pipelines during
# the runtime of the upstream (parent) pipeline.
###
# workflow:
# rules:
# - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
# - if: $CI_MERGE_REQUEST_ID
# - if: $CI_COMMIT_TAG =~ /^v/
# - if: $CI_COMMIT_TAG =~ /^t/
# - if: $CI_COMMIT_TAG =~ /^d/
variables:
IMAGE_BUILDER: quay.io/buildah/stable:latest
FRONTEND_IMAGE_DEPENDENCIES:
docker/frontend/Dockerfile
package.json
package-lock.json
webpack.config.js
BACKEND_IMAGE_DEPENDENCIES:
docker/backend/Dockerfile
package.yaml
stack.yaml
stack.yaml.lock
default:
image:
name: registry.gitlab.com/fradrive/fradrive/nix-unstable:0.1.0
name: ${CI_REGISTRY}/uniworx/containers/debian:12.5
entrypoint: [""]
docker:
platform: x86_64
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
variables:
NIX_PATH: "nixpkgs=http://nixos.org/channels/nixos-21.05/nixexprs.tar.xz"
AWS_SHARED_CREDENTIALS_FILE: "/etc/aws/credentials"
TRANSFER_METER_FREQUENCY: "2s"
stages:
- frontend:build
- backend:build
- test
- docker
- prepare release
- setup
- frontend
- backend
- release
node dependencies:
stage: frontend:build
script:
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworxNodeDependencies"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > node-dependencies.nar.xz
before_script: &nix-before
- mkdir -p /etc/nix
- install -m 0644 .gitlab-ci/nix-bootstrap.conf /etc/nix/nix.conf
- .gitlab-ci/write-minio-creds.sh
- .gitlab-ci/make-minio-bucket.sh
- cp -pr --reflink=auto -L .gitlab-ci/upload-to-cache.sh /etc/nix/upload-to-cache.sh
- install -m 0644 .gitlab-ci/nix.conf /etc/nix/nix.conf
- git config --global init.defaultBranch master
- install -v -m 0700 -d ~/.ssh
- install -v -T -m 0644 "${SSH_KNOWN_HOSTS}" ~/.ssh/known_hosts
- install -v -T -m 0400 "${SSH_DEPLOY_KEY}" ~/.ssh/deploy && echo "IdentityFile ~/.ssh/deploy" >> ~/.ssh/config;
- install -v -T -m 0644 "${FONTAWESOME_NPM_AUTH_FILE}" /etc/fontawesome-token
- |
if [ -n "${REGISTRY_AUTHFILE}" ]; then
mkdir -p ~/.docker
install -v -T -m 0400 "${REGISTRY_AUTHFILE}" ~/.docker/config.json
fi
artifacts:
paths:
- node-dependencies.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
well known:
stage: frontend:build
setup:dynamic:
stage: setup
before_script:
- apt-get -y update
- apt-get -y install git
variables:
GIT_DEPTH: 99999
GIT_STRATEGY: clone
GIT_LOG_COMMAND: 'git log --max-count=1 --date=format:%Y-%m-%dT%H-%M --pretty=format:%cd'
script:
- xzcat node-dependencies.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworxWellKnown"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > well-known.nar.xz
before_script: *nix-before
needs:
- job: node dependencies
artifacts: true
- echo "${FRONTEND_IMAGE_DEPENDENCIES}"
- echo "${BACKEND_IMAGE_DEPENDENCIES}"
- FRONTEND_IMAGE_VERSION=`${GIT_LOG_COMMAND} ${FRONTEND_IMAGE_DEPENDENCIES} | tee frontend-image-version`
- BACKEND_IMAGE_VERSION=`${GIT_LOG_COMMAND} ${BACKEND_IMAGE_DEPENDENCIES} | tee backend-image-version`
- 'echo "FRONTEND_IMAGE_VERSION: ${FRONTEND_IMAGE_VERSION}, BACKEND_IMAGE_VERSION: ${BACKEND_IMAGE_VERSION}"'
- cat .gitlab-ci/frontend.yml | .gitlab-ci/dynamci.pl FRONTEND_IMAGE_VERSION=${FRONTEND_IMAGE_VERSION} > frontend.yml
- cat .gitlab-ci/backend.yml | .gitlab-ci/dynamci.pl BACKEND_IMAGE_VERSION=${BACKEND_IMAGE_VERSION} PARENT_PIPELINE_ID=${CI_PIPELINE_ID} > backend.yml
artifacts:
paths:
- well-known.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
- frontend-image-version
- backend-image-version
- frontend.yml
- backend.yml
rules:
- when: always
setup:containers:frontend: &setup-container
stage: setup
needs:
- setup:dynamic
image: ${IMAGE_BUILDER}
variables:
IMAGE_TYPE: frontend
before_script: &container-before
- IMAGE_VERSION=`cat ${IMAGE_TYPE}-image-version`
- IMAGE_TAG=${CI_COMMIT_REF_SLUG}/${IMAGE_TYPE}:${IMAGE_VERSION}
- REGISTRY_DESTINATION=${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/${IMAGE_TYPE}:${IMAGE_VERSION}
script:
- curl --request GET --header "PRIVATE-TOKEN:${REGISTRY_AUTH_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/registry/repositories?tags=true" > .gitlab-ci/.container-registry-contents.json
- cat .gitlab-ci/.container-registry-contents.json
- IMAGE_EXISTS=`grep \""${REGISTRY_DESTINATION}"\" .gitlab-ci/.container-registry-contents.json || :`
- echo "${IMAGE_EXISTS}"
- test "${CI_JOB_MANUAL}" = true && echo "Force rebuilding container."
- >
if [ -z "${IMAGE_EXISTS}" -o "${CI_JOB_MANUAL}" = true ] ; then
echo "Building image ${REGISTRY_DESTINATION}..."
buildah bud -t ${IMAGE_TAG} --build-arg PROJECT_DIR=${CI_PROJECT_DIR} --build-arg MOUNT_DIR=/mnt/${CI_PROJECT_DIR} --volume ${CI_PROJECT_DIR}:/mnt/${CI_PROJECT_DIR} --file docker/${IMAGE_TYPE}/Dockerfile
buildah push --creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" ${IMAGE_TAG} ${REGISTRY_DESTINATION}
else
echo "Image ${IMAGE_TAG} already exists in the container registry. Skipping build."
fi
rules:
- if: $CI_MERGE_REQUEST_ID
when: never
- when: always
setup:containers:frontend:wait: &setup-container-wait
stage: setup
needs:
- setup:dynamic
before_script: *container-before
variables:
GIT_STRATEGY: none
IMAGE_TYPE: frontend
script:
- apt-get -y update && apt-get -y install curl
- >
while ! curl --request GET --header "PRIVATE-TOKEN:${REGISTRY_AUTH_TOKEN}" "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/registry/repositories?tags=true" | grep \""${REGISTRY_DESTINATION}"\" ; do
echo "Waiting for container ${IMAGE_TAG} to appear in the container registry..."
sleep 5
done
- echo "Image ${IMAGE_TAG} has been found in the container registry. Proceeding with the pipeline."
rules:
- if: $CI_MERGE_REQUEST_ID
when: always
- when: never
retry: 0
interruptible: true
timeout: 3h
setup:containers:backend:
<<: *setup-container
variables:
IMAGE_TYPE: backend
setup:containers:backend:wait:
<<: *setup-container-wait
variables:
GIT_STRATEGY: none
IMAGE_TYPE: backend
frontend:
stage: frontend:build
script:
- xzcat node-dependencies.nar.xz | nix-store --import
- xzcat well-known.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworxFrontend"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > frontend.nar.xz
before_script: *nix-before
stage: frontend
variables:
GIT_STRATEGY: clone
needs:
- job: node dependencies
artifacts: true
- job: well known
artifacts: true
artifacts:
paths:
- frontend.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
- setup:dynamic
- job: setup:containers:frontend
optional: true
trigger:
strategy: depend
include:
- artifact: frontend.yml
job: setup:dynamic
uniworx:lib:uniworx:
stage: backend:build
script:
- xzcat frontend.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworx:lib:uniworx"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > uniworx:lib:uniworx.nar.xz
before_script: *nix-before
backend:dev: &backend
stage: backend
variables:
GIT_STRATEGY: clone
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend
artifacts: true
artifacts:
paths:
- uniworx:lib:uniworx.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
- setup:dynamic
- job: setup:containers:backend
optional: true
- frontend
trigger:
strategy: depend
include:
- artifact: backend.yml
job: setup:dynamic
uniworx:exe:uniworx:
stage: backend:build
backend:prod:
<<: *backend
variables:
PROD_BUILD: -prod
release:changelog:
stage: release
rules: &release-rules
- if: $CI_COMMIT_TAG =~ /^v[0-9\.]+$/
- if: $CI_COMMIT_TAG =~ /^v[0-9\.]+-test-.*$/
script:
- xzcat uniworx:lib:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworx:exe:uniworx"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > uniworx:exe:uniworx.nar.xz
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend # tranitive
artifacts: false
- job: uniworx:lib:uniworx
artifacts: true
artifacts:
paths:
- uniworx:exe:uniworx.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
uniworx:exe:uniworxdb:
stage: backend:build
script:
- xzcat uniworx:lib:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworx:exe:uniworxdb"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > uniworx:exe:uniworxdb.nar.xz
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend # tranitive
artifacts: false
- job: uniworx:lib:uniworx
artifacts: true
artifacts:
paths:
- uniworx:exe:uniworxdb.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
uniworx:exe:uniworxload:
stage: backend:build
script:
- xzcat uniworx:lib:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworx:exe:uniworxload"
- nix-store --export $(nix-store -qR result) | xz -T0 -2 > uniworx:exe:uniworxload.nar.xz
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend # tranitive
artifacts: false
- job: uniworx:lib:uniworx
artifacts: true
artifacts:
paths:
- uniworx:exe:uniworxload.nar.xz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
check:
stage: test
script:
- xzcat frontend.nar.xz | nix-store --import
- xzcat uniworx:lib:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L flake check ${FLAKE}
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend
artifacts: true
- job: uniworx:lib:uniworx
artifacts: true
retry: 2
interruptible: true
# demo docker:
# stage: docker
# script:
# - xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
# - xzcat uniworx:exe:uniworxdb.nar.xz | nix-store --import
# - source .gitlab-ci/construct-flake-url.sh
# - nix -L build -o result "${FLAKE}#uniworxDemoDocker"
# - cp -pr --reflink=auto -L result uniworx-demo.tar.gz
# before_script: *nix-before
# needs:
# - job: node dependencies # transitive
# artifacts: false
# - job: well known # transitive
# artifacts: false
# - job: frontend # tranitive
# artifacts: false
# - job: uniworx:lib:uniworx # transitive
# artifacts: false
# - job: uniworx:exe:uniworx
# artifacts: true
# - job: uniworx:exe:uniworxdb
# artifacts: true
# - job: check # sanity
# artifacts: false
# artifacts:
# paths:
# - uniworx-demo.tar.gz
# name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
# expire_in: "1 day"
# retry: 2
# interruptible: true
# rules:
# - if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
# when: manual
# allow_failure: true
docker:
stage: docker
script:
- xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L build -o result "${FLAKE}#uniworxDocker"
- cp -pr --reflink=auto -L result uniworx.tar.gz
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend # tranitive
artifacts: false
- job: uniworx:lib:uniworx # transitive
artifacts: false
- job: uniworx:exe:uniworx
artifacts: true
- job: check # sanity
artifacts: false
artifacts:
paths:
- uniworx.tar.gz
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
when: manual
allow_failure: true
parse changelog:
stage: prepare release
needs:
- job: node dependencies
artifacts: true
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
when: on_success
before_script: *nix-before
script:
- xzcat node-dependencies.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L run "${FLAKE}#jqChangelogJson" -- -r '.versions[0].version' > .current-version
- nix -L run "${FLAKE}#jqChangelogJson" -- -r '.versions[0].body' > .current-changelog.md
- echo "Preparing release..."
- ./.gitlab-ci/version.pl > .current-version
- echo "VERSION=$(cat .current-version)" >> build.env
- ./.gitlab-ci/version.pl -changelog CHANGELOG.md
artifacts:
reports:
dotenv: build.env
paths:
- .current-version
- .current-changelog.md
- .changelog.md
name: "changelog-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
upload docker:
stage: docker
script:
- xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
- source .gitlab-ci/construct-flake-url.sh
- nix -L run "${FLAKE}#pushUniworxDocker"
before_script: *nix-before
needs:
- job: node dependencies # transitive
artifacts: false
- job: well known # transitive
artifacts: false
- job: frontend # tranitive
artifacts: false
- job: uniworx:lib:uniworx # transitive
artifacts: false
- job: uniworx:exe:uniworx
artifacts: true
- job: check # sanity
artifacts: false
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
when: on_success
# upload demo docker:
# stage: docker
# script:
# - xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
# - xzcat uniworx:exe:uniworxdb.nar.xz | nix-store --import
# - source .gitlab-ci/construct-flake-url.sh
# - nix -L run "${FLAKE}#pushUniworxDemoDocker"
# before_script: *nix-before
# needs:
# - job: node dependencies # transitive
# artifacts: false
# - job: well known # transitive
# artifacts: false
# - job: frontend # tranitive
# artifacts: false
# - job: uniworx:lib:uniworx # transitive
# artifacts: false
# - job: uniworx:exe:uniworx
# artifacts: true
# - job: uniworx:exe:uniworxdb
# artifacts: true
# - job: check # sanity
# artifacts: false
# rules:
# - if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
# when: on_success
release:
release:container:
stage: release
rules: *release-rules
variables:
GIT_STRATEGY: none
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules:
- if: $CI_COMMIT_REF_NAME =~ /^v[0-9].*/
when: on_success
image: ${IMAGE_BUILDER}
script:
- release-cli create --name "${VERSION}" --tag-name $CI_COMMIT_TAG --description .current-changelog.md
- echo "Building container for release ${VERSION}..."
- buildah bud --tag fradrive:${VERSION} --file docker/fradrive/Dockerfile
- buildah add --chown uniworx:uniworx bin/uniworx /bin/uniworx
- echo "Pushing container ${VERSION} to container registry..."
- buildah push --creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" fradrive:${VERSION} ${CI_REGISTRY_IMAGE}/fradrive:${VERSION}
needs:
- job: check # sanity
artifacts: false
- job: parse changelog
artifacts: true
- frontend # sanity
- backend:prod # sanity
- release:changelog
release:release:
stage: release
rules: *release-rules
variables:
GIT_STRATEGY: none
image: registry.gitlab.com/gitlab-org/release-cli:latest
script:
- echo "Creating release ${VERSION}"
release:
name: "${VERSION}"
tag_name: "{$CI_COMMIT_TAG}"
description: .changelog.md
needs:
- frontend # sanity
- backend:prod # sanity
- release:changelog
- release:container
retry: 0
# frontend dependencies:
# stage: setup
# cache:
# - &npm-cache
# key: default-npm
# paths: &npm-paths
# - node_modules/
# - .npm/
# - .npmrc
# script:
# - make node_modules
# artifacts:
# paths: *npm-paths
# well-known:
# stage: setup
# script:
# - make well-known
# needs:
# - job: frontend dependencies
# artifacts: true
# cache:
# - &frontend-cache
# key: default-frontend
# paths:
# - .well-known-cache
# artifacts:
# paths:
# - well-known/
# - .well-known-cache/
# # TODO: cache is always uploaded even if up-to-date; prevent re-upload when up-to-date
# backend dependencies:
# stage: setup
# cache:
# - &stack-cache
# key: default-stack
# paths:
# - .stack/
# - .stack-work/
# script:
# - make backend-dependencies-prod
# artifacts:
# paths:
# - .stack/
# - .stack-work/
# frontend build:
# stage: build
# cache:
# - *frontend-cache
# script:
# - make frontend-build
# needs:
# - job: frontend dependencies
# artifacts: true
# - job: well-known
# artifacts: true
# artifacts:
# paths:
# - static/
# - config/webpack.yml
# # TODO: .stack-work cache not working
# backend build:
# stage: build
# cache:
# - *stack-cache
# script:
# - make bin/uniworx
# # - find .stack-work
# # - cp $(stack path --dist-dir)/build/hlint/hlint bin/test-hlint
# # - cp $(stack path --dist-dir)/build/yesod/yesod bin/test-yesod
# needs:
# - job: frontend dependencies # transitive
# artifacts: false
# - job: well-known
# artifacts: true
# - job: backend dependencies
# artifacts: true
# - job: frontend build
# artifacts: true
# artifacts:
# paths:
# - bin/
# resource_group: ram
# # TODO: part of backend build; probably deprecated
# # uniworxdb:
# # stage: build
# # script:
# # - make bin/uniworxdb
# # needs:
# # # TODO: no frontend needed
# # - job: frontend dependencies # transitive
# # artifacts: false
# # - job: frontend build # transitive
# # artifacts: false
# # artifacts:
# # paths:
# # - bin/uniworxdb
# # TODO: part of backend build; probably deprecated
# # TODO: rewrite
# # uniworx:exe:uniworxload:
# # stage: build
# # script:
# # - xzcat uniworx:lib:uniworx.nar.xz | nix-store --import
# # - nix -L build -o result ".#uniworx:exe:uniworxload"
# # - nix-store --export $(nix-store -qR result) | xz -T0 -2 > uniworx:exe:uniworxload.nar.xz
# # needs:
# # - job: frontend dependencies # transitive
# # artifacts: false
# # - job: frontend build # transitive
# # artifacts: false
# # artifacts:
# # paths:
# # - uniworx:exe:uniworxload.nar.xz
# frontend lint:
# stage: lint
# script:
# - make frontend-lint
# cache:
# - *frontend-cache
# needs:
# - job: frontend dependencies
# artifacts: true
# - job: well-known # TODO: is this really needed?
# artifacts: true
# backend lint:
# stage: lint
# cache:
# - *stack-cache
# script:
# # TODO: - make backend-lint-dev
# - make backend-lint-prod
# needs:
# - job: backend dependencies
# artifacts: true
# - job: backend build
# artifacts: true
# - job: frontend build
# artifacts: true
# - job: well-known
# artifacts: true
# frontend test:
# stage: test
# script:
# - make frontend-test
# cache: *frontend-cache
# needs:
# - job: frontend dependencies
# artifacts: true
# # TODO: configure report artifacts
# backend test:
# stage: test
# script:
# - make backend-test-prod
# cache: *stack-cache
# needs:
# - job: well-known
# artifacts: true
# - job: frontend build
# artifacts: true
# - job: backend dependencies
# artifacts: true
# - job: backend build
# artifacts: true
# # TODO: configure report artifacts
# # TODO: unify prod and test versions
# # TODO: rewrite
# container:
# stage: container
# script:
# - xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
# - cp -pr --reflink=auto -L $(nix build --print-out-paths ".#uniworxDocker") uniworx.tar.gz
# needs:
# - job: frontend dependencies # transitive
# artifacts: false
# - job: frontend build # transitive
# artifacts: false
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# artifacts:
# paths:
# - uniworx.tar.gz
# rules: &release-rules
# - if: $CI_COMMIT_TAG =~ /^v/
# # TODO: rewrite
# test container:
# stage: container
# script:
# - xzcat uniworx:exe:uniworx.nar.xz | nix-store --import
# - cp -pr --reflink=auto -L $(nix build --print-out-paths ".#uniworxTestDocker") uniworx.tar.gz
# needs:
# - job: frontend dependencies # transitive
# artifacts: false
# - job: frontend build # transitive
# artifacts: false
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# artifacts:
# paths:
# - uniworx.tar.gz
# rules: &test-release-rules
# - if: $CI_COMMIT_TAG =~ /^t/
# # TODO: unify prod and test versions
# # TODO: rewrite
# parse changelog:
# stage: prepare release
# needs:
# - job: frontend dependencies
# artifacts: true
# rules: *release-rules
# script:
# - xzcat node-dependencies.nar.xz | nix-store --import
# - nix -L run ".#jqChangelogJson" -- -r '.versions[0].version' > .current-version
# - nix -L run ".#jqChangelogJson" -- -r '.versions[0].body' > .current-changelog.md
# - echo "VERSION=$(cat .current-version)" >> build.env
# artifacts:
# reports:
# dotenv: build.env
# paths:
# - .current-version
# - .current-changelog.md
# name: "changelog-${CI_COMMIT_SHORT_SHA}"
# expire_in: "1 day"
# # TODO: rewrite
# parse test changelog:
# stage: prepare release
# needs:
# - job: frontend dependencies
# artifacts: true
# rules: *test-release-rules
# script:
# - xzcat node-dependencies.nar.xz | nix-store --import
# - nix -L run ".#jqChangelogJson" -- -r '.versions[0].version' > .current-version
# - nix -L run ".#jqChangelogJson" -- -r '.versions[0].body' > .current-changelog.md
# - echo "VERSION=$(cat .current-version)" >> build.env
# artifacts:
# reports:
# dotenv: build.env
# paths:
# - .current-version
# - .current-changelog.md
# name: "changelog-${CI_COMMIT_SHORT_SHA}"
# # TODO: unify prod and test versions
# # TODO: rewrite
# upload container:
# variables:
# GIT_STRATEGY: none
# stage: release
# image: quay.io/skopeo/stable:latest
# script:
# - skopeo --insecure-policy copy --dest-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" docker-archive://$(pwd)/uniworx.tar.gz docker://${CI_REGISTRY_IMAGE}:${VERSION}
# - skopeo --insecure-policy copy --src-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" --dest-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" docker://${CI_REGISTRY_IMAGE}:${VERSION} docker://${CI_REGISTRY_IMAGE}:latest
# needs:
# - job: frontend dependencies # transitive
# artifacts: false
# - job: frontend build # transitive
# artifacts: false
# - job: container
# artifacts: true
# - job: parse changelog
# artifacts: true
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# rules: *release-rules
# # TODO: rewrite
# upload test container:
# variables:
# GIT_STRATEGY: none
# stage: release
# image: quay.io/skopeo/stable:latest
# script:
# - skopeo --insecure-policy copy --dest-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" docker-archive://$(pwd)/uniworx.tar.gz docker://${CI_REGISTRY}/fradrive/fradrive/test:${CI_COMMIT_REF_NAME}
# - skopeo --insecure-policy copy --src-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" --dest-creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" docker://${CI_REGISTRY}/fradrive/fradrive/test:${CI_COMMIT_REF_NAME} docker://${CI_REGISTRY}/fradrive/fradrive/test:latest
# needs:
# - job: frontend dependencies # transitive
# artifacts: false
# - job: frontend build # transitive
# artifacts: false
# - job: test container
# artifacts: true
# - job: parse test changelog
# artifacts: true
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# rules: *test-release-rules
# # TODO: unify prod and test versions
# # TODO: rewrite
# release:
# variables:
# GIT_STRATEGY: none
# stage: release
# image: registry.gitlab.com/gitlab-org/release-cli:latest
# rules: *release-rules
# script:
# - echo "Will create release ${VERSION}..."
# release:
# name: '$VERSION'
# tag_name: '$CI_COMMIT_TAG'
# description: .current-changelog.md
# needs:
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# - job: parse changelog
# artifacts: true
# retry: 0
# # TODO: rewrite
# test release:
# variables:
# GIT_STRATEGY: none
# stage: release
# image: registry.gitlab.com/gitlab-org/release-cli:latest
# rules: *test-release-rules
# script:
# - echo "Will create test release ${VERSION}-test..."
# release:
# name: "${VERSION}-test"
# tag_name: '$CI_COMMIT_TAG'
# description: .current-changelog.md
# needs:
# - job: frontend test # sanity
# artifacts: false
# - job: backend test # sanity
# artifacts: false
# - job: parse test changelog
# artifacts: true
# retry: 0

77
.gitlab-ci/backend.yml Normal file
View File

@ -0,0 +1,77 @@
# SPDX-FileCopyrightText: 2024 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
### IMPORTANT NOTICE ###
# Our pipeline consists of static and dynamic parts.
#
# This file only contains the dynamic backend parts of our pipeline.
# Static jobs are defined in .gitlab-ci.yml.
#
# The marker "#dyn#" (without quotes) will be replaced by concrete values.
###
variables:
BACKEND_IMAGE_VERSION: #dyn#
PARENT_PIPELINE_ID: #dyn#
stages:
- compile
- lint
- test
- release
default:
image:
name: ${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/backend:${BACKEND_IMAGE_VERSION}
entrypoint: [""]
docker:
platform: x86_64
before_script:
- ./.gitlab-ci/pull-frontend-artifacts.pl "${REGISTRY_AUTH_TOKEN}" "${PARENT_PIPELINE_ID}"
- unzip ./.artifacts.tmp/artifacts.zip
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
compile:
stage: compile
script:
- make -- compile${PROD_BUILD}-backend IN_CI=true IN_CONTAINER=true
artifacts:
paths:
- ${CI_PROJECT_DIR}/.stack-work/
- bin/
cache: &backend-cache
lint:
stage: lint
script:
- make -- lint${PROD_BUILD}-backend IN_CI=true IN_CONTAINER=true
cache: *backend-cache
test:
stage: test
needs:
- compile
script:
- make -- test${PROD_BUILD}-backend IN_CI=true IN_CONTAINER=true
cache: *backend-cache
container:
stage: release
image: ${IMAGE_BUILDER}
needs:
- compile
- lint
- test
script:
- IMAGE_TAG=`./.gitlab-ci/version.pl`
- buildah bud -t ${IMAGE_TAG} --volume ${CI_PROJECT_DIR}/bin/:/tmp/uniworx-bin --file docker/fradrive/Dockerfile
- buildah push --creds "${CI_REGISTRY_USER}:${CI_JOB_TOKEN}" ${IMAGE_TAG} ${CI_REGISTRY_IMAGE}/${IMAGE_TAG}
rules:
- if: '"${PROD_BUILD}" == "-prod"'
when: always

View File

@ -1,6 +0,0 @@
if [ -n "${CI_COMMIT_TAG}" ]; then
ref="refs/tags/${CI_COMMIT_TAG}"
else
ref="refs/heads/${CI_COMMIT_BRANCH}"
fi
export FLAKE="git+${CI_REPOSITORY_URL}?rev=${CI_COMMIT_SHA}&ref=${ref}"

View File

@ -1,25 +0,0 @@
diff --git a/src/libstore/filetransfer.cc b/src/libstore/filetransfer.cc
index 514ab3bf9..25dab18bb 100644
--- a/src/libstore/filetransfer.cc
+++ b/src/libstore/filetransfer.cc
@@ -696,6 +696,8 @@ struct curlFileTransfer : public FileTransfer
std::string scheme = get(params, "scheme").value_or("");
std::string endpoint = get(params, "endpoint").value_or("");
+ debug("enqueueFileTransfer: scheme: %s", scheme);
+
S3Helper s3Helper(profile, region, scheme, endpoint);
// FIXME: implement ETag
diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc
index 6bfbee044..ff406e5e4 100644
--- a/src/libstore/s3-binary-cache-store.cc
+++ b/src/libstore/s3-binary-cache-store.cc
@@ -126,6 +126,7 @@ ref<Aws::Client::ClientConfiguration> S3Helper::makeConfig(const string & region
initAWS();
auto res = make_ref<Aws::Client::ClientConfiguration>();
res->region = region;
+ debug("configuring scheme %s", scheme);
if (!scheme.empty()) {
res->scheme = Aws::Http::SchemeMapper::FromString(scheme.c_str());
}

43
.gitlab-ci/dynamci.pl Executable file
View File

@ -0,0 +1,43 @@
#!/usr/bin/env perl
use strict;
use warnings;
my %kv = ();
for(@ARGV) {
if(!m#^\s*([^=\s]+)\s*=\s*(.*?)\s*$#) {
die "$0: Bad parameter '$_': Not a key=value pair\n"
}
$kv{$1} = $2;
}
my $invar = 0;
LOOP: while(my $line = <STDIN>) {
if(1==$invar) {
if($line=~m/^(\s+)(\S+)(\s*:\s*)(\S+)(.*)/) {
my ($pre1, $key, $pre2, $var, $post) = ($1, $2, $3, $4, $5);
if('#dyn#' eq $var) {
if(not exists $kv{$key}) {
die "$0: No value given for key '$key' in the parameters but it is defined in input!\n"
}
my $v = $kv{$key};
delete $kv{$key};
print "$pre1$key$pre2$v$post\n";
next LOOP;
}
} elsif($line=~m/^[^#\t ]/) {
$invar = 2
}
}
if(0==$invar and $line=~m#^\s*variables\s*:\s*$#) {
$invar = 1;
}
print $line;
}
my @rem = sort keys %kv;
die "$0: Variables occur in parameter but not in input: @rem!\n" if @rem;

View File

@ -1,13 +0,0 @@
diff --git a/src/libstore/s3-binary-cache-store.cc b/src/libstore/s3-binary-cache-store.cc
index 6bfbee044..51d86c4e6 100644
--- a/src/libstore/s3-binary-cache-store.cc
+++ b/src/libstore/s3-binary-cache-store.cc
@@ -209,7 +209,7 @@ struct S3BinaryCacheStoreImpl : virtual S3BinaryCacheStoreConfig, public virtual
S3Helper s3Helper;
S3BinaryCacheStoreImpl(
- const std::string & scheme,
+ const std::string & uriScheme,
const std::string & bucketName,
const Params & params)
: StoreConfig(params)

63
.gitlab-ci/frontend.yml Normal file
View File

@ -0,0 +1,63 @@
# SPDX-FileCopyrightText: 2024 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
### IMPORTANT NOTICE ###
# Our pipeline consists of static and dynamic parts.
#
# This file only contains the dynamic frontend parts of our pipeline.
# Static jobs are defined in .gitlab-ci.yml.
#
# The marker "#dyn#" (without quotes) will be replaced by concrete values.
###
variables:
FRONTEND_IMAGE_VERSION: #dyn#
stages:
- compile
- lint
- test
default:
image:
name: ${CI_REGISTRY_IMAGE}/${CI_COMMIT_REF_SLUG}/frontend:${FRONTEND_IMAGE_VERSION}
entrypoint: [""]
docker:
platform: x86_64
artifacts:
name: "${CI_JOB_NAME}-${CI_COMMIT_SHORT_SHA}"
expire_in: "1 day"
retry: 2
interruptible: true
compile:
stage: compile
script:
- make -- compile-frontend IN_CI=true IN_CONTAINER=true
artifacts:
paths:
- ${CI_PROJECT_DIR}/node_modules
- ${CI_PROJECT_DIR}/well-known
- ${CI_PROJECT_DIR}/config/webpack.yml
cache:
- &frontend-cache
key: default-frontend
paths:
- ${CI_PROJECT_DIR}/.npm/
- ${CI_PROJECT_DIR}/.well-known-cache/
lint:
stage: lint
script:
- make -- lint-frontend IN_CI=true IN_CONTAINER=true
cache: *frontend-cache
test:
stage: test
needs:
- compile
script:
- make -- test-frontend IN_CI=true IN_CONTAINER=true
cache: *frontend-cache

View File

@ -1,5 +0,0 @@
#!/usr/bin/bash
export MC_HOST_minio=http://$(cat /minio-gitlab-runner-cache/accesskey):$(cat /minio-gitlab-runner-cache/secretkey)@minio-gitlab-runner-cache
mc mb --ignore-existing minio/nix-cache

View File

@ -1,5 +0,0 @@
sandbox = true
experimental-features = nix-command flakes ca-references
substituters = https://hydra.iohk.io https://cache.nixos.org/
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
require-sigs = true

View File

@ -1,6 +0,0 @@
sandbox = true
experimental-features = nix-command flakes ca-references
substituters = https://hydra.iohk.io https://cache.nixos.org/ s3://nix-cache?scheme=http&endpoint=minio-gitlab-runner-cache
trusted-public-keys = hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ= cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= minio-gitlab-runner-cache:ZN5neq93MHqpnieHSBlxGgWvCL0WKrZ2S9QS+U5Bnro=
require-sigs = true
post-build-hook = /etc/nix/upload-to-cache.sh

View File

@ -1,4 +0,0 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.nixUnstable.overrideAttrs (oldAttrs: {
patches = oldAttrs.patches or [] ++ [ ./fix-aws-scheme.patch ];
})

View File

@ -0,0 +1,52 @@
#!/usr/bin/env perl
use strict;
use warnings;
my $dir = ".artifacts.tmp";
my ($token, $id) = @ARGV;
die "usage: $0 [token] [id]" unless defined $token and defined $id;
die "id in bad format" unless $id=~m#^[0-9]+$#;
if(!-d $dir) {
mkdir($dir) or die "Cannot create directory '$dir', because: $!\n";
}
system(qq(curl --globoff --header "PRIVATE-TOKEN: $token" "https://gitlab.uniworx.de/api/v4/projects/5/pipelines/$id/bridges" > $dir/bridges));
my $pips = pparse("$dir/bridges", {id=>qq#."downstream_pipeline"."id"#}, {name=>""});
my $fe = $pips->{frontend}{id};
die "No frontend pipeline found!" unless $fe;
system(qq(curl --globoff --header "PRIVATE-TOKEN: $token" "https://gitlab.uniworx.de/api/v4/projects/5/pipelines/$fe/jobs" > $dir/fe-jobs));
my $arte = pparse("$dir/fe-jobs", {id=>""}, {name=>"", web_url=>"", artifacts=>""});
system(qq#curl --output $dir/artifacts.zip --location --header "PRIVATE-TOKEN: $token" "https://gitlab.uniworx.de/api/v4/projects/5/jobs/$arte->{compile}{id}/artifacts"#);
sub pparse {
my ($file, $numerical, $alpha) = @_;
my %all = ();
for my $k(keys %$numerical) {
$all{$k} = $numerical->{$k} || qq#."$k"#;
}
for my $k(keys %$alpha) {
$all{$k} = $alpha->{$k} || qq#."$k"#;
}
my $select = join ', ', map {qq#"$_": $all{$_}#} sort keys %all;
my $cont = qx(cat $file | jq -c '.[] | {$select}');
my @cont = split m/\R/, $cont;
my %ret = ();
for my $c(@cont) {
my %block = ();
for(keys %$numerical) {
$block{$_} = $1 if $c=~m#"$_":([0-9]+)#;
}
for(keys %$alpha) {
$block{$_} = $1 if $c=~m#"$_":"([^"]*)"#;
}
$ret{$block{name}} =\%block;
}
return \%ret
}

View File

@ -1,8 +0,0 @@
#!/usr/bin/bash
set -eu
set -f # disable globbing
export IFS=' '
echo "Signing and uploading paths" $OUT_PATHS
exec nix copy --to "s3://nix-cache?region=us-east-1&scheme=http&endpoint=minio-gitlab-runner-cache&secret-key=${NIX_CACHE_KEYFILE}" $OUT_PATHS

View File

@ -1,8 +0,0 @@
#!/usr/bin/bash
mkdir -p $(dirname ${AWS_SHARED_CREDENTIALS_FILE})
cat > ${AWS_SHARED_CREDENTIALS_FILE} <<EOF
[default]
aws_access_key_id = $(cat /minio-gitlab-runner-cache/accesskey)
aws_secret_access_key = $(cat /minio-gitlab-runner-cache/secretkey)
EOF

3
.gitmodules.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

28
.gnumake/Error.Mak Normal file
View File

@ -0,0 +1,28 @@
# This Makefile contains targets that are deprecated, commonly mispelled or otherwise "faulty".
################################
##### DEPRECATED TARGETS #####
# Deprecated since: 2024-10-18
.PHONY: serve
.PHONY: serve-%
serve-%: serve;
serve:
@echo "The serve targets have been deprecated. Please use the new start (and stop) targets instead."
@exit 1
##### DEPRECATED TARGETS #####
################################
#############################
##### COMMON MISTAKES #####
.PHONY: build
.PHONY: build-%
build-%: build;
build:
@echo "No recipe for build. Did you mean compile?"
@exit 1
##### COMMON MISTAKES #####
#############################

View File

@ -1,7 +1,9 @@
Gregor Kleen <gregor.kleen@ifi.lmu.de> <kleen@cip.ifi.lmu.de>
Gregor Kleen <gregor.kleen@ifi.lmu.de> <gkleen@yggdrasil.li>
Gregor Kleen <gregor@kleen.consulting> <gregor.kleen@ifi.lmu.de>
Gregor Kleen <gregor@kleen.consulting> <kleen@cip.ifi.lmu.de>
Gregor Kleen <gregor@kleen.consulting> <gkleen@yggdrasil.li>
Felix Hamann <felix.hamann@campus.lmu.de> <felix.hamann@satellytes.com>
Steffen Jost <jost@tcs.ifi.lmu.de> <jost@tcs.ifi.lmu.de>
Steffen Jost <s.jost@fraport.de> <jost@tcs.ifi.lmu.de>
Steffen Jost <s.jost@fraport.de> <jost@cip.ifi.lmu.de>
Sarah Vaupel <vaupel.sarah@campus.lmu.de> <vaupel@cip.ifi.lmu.de>
Sarah Vaupel <vaupel.sarah@campus.lmu.de> Sarah Vaupel <>
Winnie Ros <winnie.ros@campus.lmu.de> <ros@cip.ifi.lmu.de>

3
.mailmap.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -1,12 +0,0 @@
#!/usr/bin/env bash
set -e
if command -V gup 1>&- 2>&-; then
gup --always
fi
cat >${1:-.npmrc} <<EOF
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${FONTAWESOME_NPM_AUTH_TOKEN}
EOF

9
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,9 @@
# SPDX-FileCopyrightText: 2022 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
repos:
- repo: https://github.com/fsfe/reuse-tool
rev: v1.0.0
hooks:
- id: reuse

9
.reuse/dep5 Normal file
View File

@ -0,0 +1,9 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: FraDrive
Upstream-Contact: Sarah Vaupel <sarah.vaupel@uniworx.de>
Source: https://gitlab.uniworx.de/fradrive/fradrive
Files: assets/fonts/fradrive/*
Copyright: 2010 Google Corporation with Reserved Font Arimo, Tinos and Cousine
Copyright: 2012 Red Hat, Inc. with Reserved Font Name Liberation
License: OFL-1.1-RFN

View File

@ -1,35 +1,39 @@
// SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@cip.ifi.lmu.de>
//
// SPDX-License-Identifier: AGPL-3.0-or-later
const standardVersionUpdaterYaml = require.resolve('standard-version-updater-yaml');
module.exports = {
scripts: {
// postbump: './sync-versions.hs && git add -- package.yaml', // moved to bumpFiles
postchangelog: 'sed \'s/^### \\[/## [/g\' -i CHANGELOG.md'
postchangelog: 'sed \'s/^### \\[/## [/g\' -i CHANGELOG.md',
},
packageFiles: ['package.json', 'package.yaml'],
bumpFiles: [
{
filename: 'package.json',
type: 'json'
type: 'json',
},
{
filename: 'package-lock.json',
type: 'json'
type: 'json',
},
{
filename: 'package.yaml',
updater: standardVersionUpdaterYaml
updater: standardVersionUpdaterYaml,
},
{
filename: 'nix/docker/version.json',
type: 'json'
type: 'json',
},
{
filename: 'nix/docker/demo-version.json',
type: 'json'
}
type: 'json',
},
],
commitUrlFormat: 'https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/commit/{{hash}}',
compareUrlFormat: 'https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/compare/{{previousTag}}...{{currentTag}}',
issueUrlFormat: 'https://gitlab2.rz.ifi.lmu.de/uni2work/uni2work/issues/{{id}}',
userUrlFormat: 'https://gitlab2.rz.ifi.lmu.de/{{user}}'
userUrlFormat: 'https://gitlab2.rz.ifi.lmu.de/{{user}}',
};

View File

@ -1,3 +0,0 @@
{
"AllAutocomplete.showCurrentDocument": false
}

79
.vscode/tasks.json vendored
View File

@ -1,79 +0,0 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "./build.sh",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated",
"clear": true,
"showReuseMessage": false
}
},
{
"label": "start",
"type": "shell",
"command": "./start.sh",
"group": "build",
"presentation": {
"echo": true,
"reveal": "silent",
"focus": false,
"panel": "dedicated",
"showReuseMessage": false
},
"problemMatcher": []
},
{
"label": "test",
"type": "shell",
"command": "./test.sh",
"group": "test",
"presentation": {
"echo": true,
"reveal": "always",
"focus": true,
"panel": "dedicated",
"showReuseMessage": false
}
},
{
"type": "npm",
"script": "yesod:lint",
"problemMatcher": []
},
{
"type": "npm",
"script": "yesod:start",
"problemMatcher": []
},
{
"type": "npm",
"script": "start",
"problemMatcher": []
},
{
"type": "npm",
"script": "frontend:lint",
"problemMatcher": []
},
{
"type": "npm",
"script": "lint",
"problemMatcher": []
},
{
"type": "npm",
"script": "release",
"problemMatcher": []
}
]
}

File diff suppressed because it is too large Load Diff

3
CHANGELOG.md.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>,Steffen Jost <jost@cip.ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

33
CONTRIBUTING Normal file
View File

@ -0,0 +1,33 @@
Version 1.1
Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

3
CONTRIBUTING.license Normal file
View File

@ -0,0 +1,3 @@
# SPDX-FileCopyrightText: Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
#
# SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -0,0 +1,235 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software.
A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public.
The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version.
An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license.
The precise terms and conditions for copying, distribution and modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based on the Program.
To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work.
A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.
The Corresponding Source for a work in source code form is that same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.
When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified it, and giving a relevant date.
b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices".
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.
A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:
a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.
A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.
If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).
The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or authors of the material; or
e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.
All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).
However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.
Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.
If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.
A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph.
Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation.
If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program.
Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.
You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <http://www.gnu.org/licenses/>.

View File

@ -0,0 +1,27 @@
FRAPORT CORPORATE DESIGN LICENSE
Version 1, 11 October 2022
Copyright (C) 2022 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
This is an inofficial statement that solely serves informative purposes and does not claim legal validity.
An english translation of the original (german) statement is included below.
GERMAN / DEUTSCH
Das Fraport-Logo als Teil der Marke Frankfurt Airport ist eine geschützte Marke der Fraport AG.
Das Fraport-Logo darf nur von Personen oder Unternehmen verwendet werden, denen durch vertragliche Vereinbarung das Recht dazu eingeräumt wurde.
Die angewandten Designgrundsätze sind Teil des Corporate Design der Fraport AG.
Die Anwendung und Umsetzung des Corporate Design der Fraport AG erfolgt in vertraglichem Dienstverhältnis mit der Fraport AG.
ENGLISH / ENGLISCH
The Fraport logo as part of the brand Frankfurt Airport is a protected brand of the Fraport AG.
The Fraport logo may only be used by persons or corporations who have obtained the right of utilization by contractual agreement.
The applied design principles are part of the Corporate Design of the Fraport AG.
The application and implementation of the Corporate Design of the Fraport AG is carried out in a contractual business relationship with the Fraport AG.

102
LICENSES/OFL-1.1-RFN.txt Normal file
View File

@ -0,0 +1,102 @@
Digitized data copyright (c) 2010 Google Corporation
with Reserved Font Arimo, Tinos and Cousine.
Copyright (c) 2012 Red Hat, Inc.
with Reserved Font Name Liberation.
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
PREAMBLE The goals of the Open Font License (OFL) are to stimulate
worldwide development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to provide
a free and open framework in which fonts may be shared and improved in
partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves.
The fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such.
This may include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components
as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting ? in part or in whole ?
any of the components of the Original Version, by changing formats or
by porting the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical writer
or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining a
copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole, must
be distributed entirely under this license, and must not be distributed
under any other license. The requirement for fonts to remain under
this license does not apply to any document created using the Font
Software.
TERMINATION
This license becomes null and void if any of the above conditions are not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER
DEALINGS IN THE FONT SOFTWARE.

123
Makefile Normal file
View File

@ -0,0 +1,123 @@
export SHELL=bash
export CLEAN_DEPENDENCIES ?= false
export CLEAN_IMAGES ?= false
export ENTRYPOINT ?= bash
export SRC
.PHONY: help
# HELP: print out this help message
help:
docker compose run help
.PHONY: clean
# HELP: clean compilation caches
clean:
$(MAKE) clean-frontend CLEAN_DEPENDENCIES=$(CLEAN_DEPENDENCIES) CLEAN_IMAGES=$(CLEAN_IMAGES)
$(MAKE) clean-backend CLEAN_DEPENDENCIES=$(CLEAN_DEPENDENCIES) CLEAN_IMAGES=$(CLEAN_IMAGES)
.PHONY: clean-all
# HELP: clean everything, including dependency and image caches
clean-all: CLEAN_DEPENDENCIES = true
clean-all: CLEAN_IMAGES = true
clean-all: clean ;
.PHONY: clean-%
# HELP(clean-$SERVICE): invalidate caches for a given service. Supported services: frontend, backend.
clean-%:
$(MAKE) stop-$*
@$(MAKE) -- --clean-$*
@echo "Cleaned $* build files and binaries."
ifeq ("$(CLEAN_DEPENDENCIES)", "true")
@$(MAKE) -- --clean-$*-deps
@echo "Cleaned $* dependencies."
endif
ifeq ("$(CLEAN_IMAGES)", "true")
$(MAKE) kill-$*
docker compose rm --force --volumes
docker compose down --rmi 'all' --volumes
@echo "Cleaned $* image."
endif
--clean-frontend:
-rm -rf assets/icons assets/favicons
-rm -rf static well-known
--clean-frontend-deps:
-rm -rf frontend/node_modules
-rm -rf frontend/.npm
--clean-backend:
-rm -rf backend/.stack-work
-rm -rf bin/
--clean-backend-deps:
-rf -rf backend/.stack
# TODO: only release when build and tests are passing!!!
.PHONY: release
# HELP: create, commit and push a new release
release:
VERSION=`./utils/version.pl -changelog CHANGELOG.md -v` ; \
git add CHANGELOG.md ; \
git commit -m "chore(release): $${VERSION}" ; \
git push ; \
git tag $${VERSION} ; \
git push origin $${VERSION}
.PHONY: compile
# HELP: perform full compilation (frontend and backend)
compile: compile-frontend compile-backend ;
.PHONY: compile-%
# HELP(compile-$SERVICE): compile a given service once
compile-%:
docker compose run --remove-orphans --build --no-deps $* make compile
.PHONY: start
# HELP: start complete development environment with a fresh test database
start: start-postgres start-maildev start-memcached start-minio start-backend
docker compose exec backend make start
.PHONY: start-%
# HELP(start-$SERVICE): start a given service
start-%:
docker compose up -d --build $*
.PHONY: shell-%
# HELP(shell-$SERVICE): launch a (bash) shell inside a given service
shell-%:
docker compose run --build --no-deps --entrypoint="$(ENTRYPOINT)" $*
.PHONY: ghci
# HELP: launch ghci instance. Use in combination with SRC to specify the modules to be loaded by ghci: make ghci SRC=src/SomeModule.hs
ghci: ENTRYPOINT=stack ghci $(SRC)
ghci: shell-backend ;
.PHONY: stop
# HELP: stop all services
stop:
docker compose down
.PHONY: stop-%
# HELP(stop-$SERVICE): stop a given service
stop-%:
docker compose down $*
.PHONY: kill-%
# HELP(kill-$SERVICE): kill a given service the hard way. Use this if the servive does not respond to stop.
kill-%:
docker compose kill $*
.PHONY: status
# HELP: print an overview of currently running services and their health
status:
docker compose ps
.PHONY: top
# HELP: print an overview of the ressource usage of the currently running services
top:
docker compose stats
.PHONY: list-projects
# HELP: list all currently running projects on this machine
list-projects:
docker compose ls
.PHONY: log-%
# HELP(log-$SERVICE): follow the output of a given service. Service must be running.
log-%:
docker compose logs --follow --timestamps $*
.PHONY: --%
.SUFFIXES: # Delete all default suffixes

3
README.md.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Sarah Vaupel <vaupel.sarah@campus.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

View File

@ -1,53 +0,0 @@
Most roles are school dependent, i.e. a lecturer for the Math-department can only create new lectures that have Math-department in their school field.
Administrator for a school
- top-level rights, can access everything other roles can within the same school
- restrictions only apply to routes containing a different school; then no special rights are given
- may appoint further administrators and lecturers for his school
- all school-independent routes, such as help-requests and user-list are accessible
- can impersonate any other user with lesser rights, i.e. lecturers within same school, all students, etc.
- a user can be administrator for more than one school
Lecturer for a school
- can create courses for their school for all active terms
- can view participants of his courses and record notes for participants
- can create sheets for their courses
- can view homework submissions for his courses, including marks and plain user-names
- can mark homework
- may appoint correctors for sheets belonging to his courses
- may assign submitted homework to correctors
- a user can be lecturer for more than one school
- all rights correctors for his courses have
Corrector for a sheet
- may download their assigned anonymous homework submissions (submissions are identify through crypto-ids, no user-names)
- may upload corrected and marked homework submissions for their assignments
- may always download solution and sheet description files for their sheet, ignoring deadline constraints
- may create homework submissions in the name of students (which identify themselves to the corrector by pseudonym; no association with real identity needed) for homework assignments which have their submission-mode set to "Submission external with pseudonym" by a lecturer
Tutor for a tutorial of a course
- yet unimplemented, likely similar to corrector; ie. can access sheets and solutions earlier than participants
User (logged-in)
- all logged-in users may use this role
- no special school restrictions
- may enroll in courses from any school; enrollment is associated with a field of study the user had at the time
- may submit homework for marking in enrolled courses
- all rights that not logged-in users have
User (not logged-in)
- can view course descriptions
- can download course materials from courses that allow this for all un-enrolled users
- can requests help from administrators
- can log in with their campus-id creating a new user record in the process and elevating rights to "logged-in"
Terminology:
- participants: a logged-in users that is enrolled in a specific course

3
TODO.md.license Normal file
View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

14
add-license-to-all.sh Executable file
View File

@ -0,0 +1,14 @@
#!/usr/bin/env zsh
# SPDX-FileCopyrightText: 2022 Sarah Vaupel <sarah.vaupel@ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
for ext in $2; do
for x in `find $1 -type f -name "*.$ext"`; do
./new-file.sh tmp.$ext $x $3
echo '' >> tmp.$ext
cat tmp.$ext | cat - $x > temp && mv temp $x
rm tmp.$ext
done
done

View File

@ -1,6 +0,0 @@
{-# LANGUAGE PackageImports #-}
import "uniworx" Application (develMain)
import Prelude (IO)
main :: IO ()
main = develMain

View File

@ -1,5 +0,0 @@
import Prelude (IO)
import Application (appMain)
main :: IO ()
main = appMain

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,16 @@
AUTHORS
Current Contributors (sorted alphabetically):
- Vishal Vijayraghavan <vishalvvr at fedoraproject dot org>
Project Owner/ Maintainer (Current)
Red Hat, Inc.
Previous Contributors
- Pravin Satpute <psatpute at redhat dot com>
Project Owner/ Maintainer
Red Hat, Inc.
- Steve Matteson
Original Designer
Ascender, Inc.

View File

@ -0,0 +1,79 @@
* Thu Sep 30 2021 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.5 version
- Resolves #40: More fixes to Superscript and subscript Numbers missing issues
-- fixed inconsistent weight, missing glyphs and GSUB issues
* Tue May 04 2021 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.4 version
- Resolves #40: Superscript and subscript Numbers missing
- Resolves #24: Gender symbol are inconsistent in Sans
* Tue Feb 23 2021 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.3 version
- Resolves #37: U+2262,2669,266C too wide
- Resolves Bugzilla #1464310: Tilded G not works with Liberation Sans and Serif
* Mon Dec 21 2020 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.2 version
- Resolves #25: liberation-fonts doesn't have proper <==> symbol
- Resolves #33: Liberation Mono: U+20BF is too wide
- Resolves #14: Liberation mono fonts are not recognized as monospace by fontconfig and cairo
* Wed Jun 03 2020 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.1 version
- Few more fixes to Bugzilla #1072095: Liberation Sans renders most Latin combining characters incorrectly
* Mon Feb 10 2020 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.1.0 version
- Updated release versioning scheme
- Resolved Bugzilla #1072095: Liberation Sans renders most Latin combining characters incorrectly
- Resolved Pagure issue-11: Combining diaerasis below does not work except U
- Resolved GitHub issue-19: Incorrect glyph name mapped to unicode
- Resolved Pagure issue-5: Incorrect glyph of Cent sign (U+00A2) in Sans and Mono style
- Resolved Pagure issue-28 : U+25D2 and U+25D3 circle with lower / upper half black are backwards
* Mon Mar 4 2019 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.00.5 version
- Resolved issue-10: Improving lowercase Cyrillic glyps localized for Macedonian and Serbian, Patch fix by Dimitrij Mijoski
- Resolved #1014357: U+266B incorrect glyph with extra beam
-- Added two new glyphs U+266C and U+2669
- Resolved issue-13: COMBINING LONG SOLIDUS OVERLAY (U+0338) not centred on base character.
- Validated Missing Points at Extrema, Non-integral coordinates, Wrong Direction issues for newly added and existing glyphs
* Mon Nov 05 2018 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Releasing liberation-fonts 2.00.4 version, it includes few bug fixes and enhancements as follows:
-- Added Bitcoin sign #1533798
-- Fixed Incorrect lowercase Cyrillic BE for Macedonian language in liberation v2 (look like Greek delta), Patch fix by Dimitrij Mijoski #1574410
-- Fixed Liberation Sans Mono Enhancement Request: Modification needed for "l" Character, Patch fix by Nikolaus Waxweiler #1574410
* Tue Sep 18 2018 Vishal Vijayraghavan <vishalvijayraghavan@gmail.com>
- Resolved #1574410: Incorrect lowercase Cyrillic BE for Macedonian language in liberation v2 (look like Greek delta)
- Patch fix by Dimitrij Mijoski: https://pagure.io/liberation-fonts/pull-request/21
- Updated LiberationMono-Bold, LiberationMono-Regular, LiberationSans-Bold, LiberationSans-Regular, LiberationSerif-Bold, LiberationSerif-Regular
* Thu May 17 2018 Pravin Satpute <psatpute AT redhat DOT com> - 2.00.3
- Releasing liberation-fonts 2.00.3 version, it includes fix for few bugs.
- This release was pending from long time, will work on other open bugs
post this release.
* Tue Oct 14 2014 Pravin Satpute <psatpute AT redhat DOT com>
- Resolved #1096336: Liberation 2.00.x missing unicode hyphen (U+2010)
- Added U+2007 character in Liberation Mono
- Imported missing gpos tables from Arimo #1072095
- Missing MIDDLE DOT (u+00B7) glyph for Liberation Sans Italic #1084493
- Rendering of Unicode tie bars could be improved #1076190
* Thu Oct 04 2012 Pravin Satpute <psatpute AT redhat DOT com>
- Resolved "Glyphs with multiple unicode encodings inhibit subsetting" #851790
- Resolved #851791, #854601 and #851825
- Following GASP table version as per Liberation old version. (Anti-aliasing disabled)
- Added support for Serbian glyphs for wikipedia #657849
- In Monospace fonts, isFixedPitch bit set via script for getting it recognized as Monospace in putty.exe
* Fri Jul 06 2012 Pravin Satpute <psatpute AT redhat DOT com>
- Initial version of Liberation fonts based on croscore fonts version 1.21.0
- Converted TTF files into SFD files to be open source.
- Update Copyright and License file
- set fsType bit to 0, Installable Embedding is allowed.
- Absolute value in HHeadAscent/Descent values for maintaining Metric compatibility.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,86 @@
Liberation Fonts
=================
The Liberation Fonts is font collection which aims to provide document
layout compatibility as usage of Times New Roman, Arial, Courier New.
Requirements
=================
* [fontforge](http://fontforge.sourceforge.net)
* [python fonttools](https://pypi.org/project/fonttools/)
Install
============
1. Get source
```
$ git clone https://github.com/liberationfonts/liberation-fonts.git
```
- Or downloading the tar.gz file from [releases](https://github.com/fontforge/fontforge/releases).
- Extract the tar file:
```
$ tar zxvf liberation-fonts-[VERSION].tar.gz
```
2. Build from the source
```
$ cd liberation-fonts or $ cd liberation-fonts-[VERSION]
$ make
```
The binary font files will be available in 'liberation-fonts-ttf-[VERSION]' directory.
3. Install to system
Fedora Users :
- One can manually install the fonts by copying the TTFs to `~/.fonts` for user wide usage
- and/or to `/usr/share/fonts/liberation` for system-wide availability.
- Then, run `fc-cache` to let that cached.
Other distributions :
please check out corresponding documentation.
Usage
==========
Simply select preferred liberation font in applications and start using.
License
============
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
Please read file "LICENSE" for details.
For Maintainers
====================
1. Before packaging a new release based on a new source tarball, you have to update the version suffix in the Makefile:
```
VER = [NEW_VERSION]
```
2. After updating Makefile VER attribute, update all font metadata by executing:
```
$ make versionupdate
```
can verfy changes using ftinfo/otfinfo or fontforge itself.
3. It is highly recommended that file 'ChangeLog' is updated to reflect changes.
4. Create a tarball with the following command:
```
$ make dist
```
The new versioned tarball will be available in the dist/ folder as `liberation-fonts-[NEW_VERSION].tar.gz.`
5. Create github tag for that [NEW_VERSION] and upload dist tarball
Credits
============
Please read file "AUTHORS" for list of contributors.

View File

@ -0,0 +1,4 @@
Here are todo for next release
1) Serbian glyph for wikipedia https://bugzilla.redhat.com/show_bug.cgi?id=657849
2) Liberation Mono not recognizing as Mono in Windows application #861003
- presently it is patch, we have to update zero width characters to fixed width

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Fraport AG
SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Fraport AG
SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Fraport AG
SPDX-License-Identifier: LicenseRef-Fraport-Corporate-Design

View File

@ -0,0 +1,108 @@
{
"/defaultExtension": "svg",
"/license": "SPDX-FileCopyrightText: 2024 Fonticons, Inc. (https://fontawesome.com)\n\nSPDX-License-Identifier: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)\n",
"new": "seedling",
"ok": "check",
"not-ok": "xmark",
"warning": "exclamation",
"problem": "bolt",
"visible": "eye",
"invisible": "eye-slash",
"course-favourite-manual": "star",
"course-favourite-automatic": "star-half-stroke",
"course-favourite-off": "slash",
"enrol-true": "user-plus",
"enrol-false": "user-slash",
"planned": "gear",
"announce": "bullhorn",
"exam": "square-poll-horizontal",
"exam-register-true": "calendar-check",
"exam-register-false": "calendar-xmark",
"exam-auto-occurrence-nudge-up": "user-plus",
"exam-auto-occurrence-nudge-down": "user-minus",
"exam-auto-occurrence-ignore": "user-slash",
"exam-auto-occurrence-reconsider": "users",
"comment-true": "comment",
"comment-false": "comment-slash",
"link": "link",
"file-donwload": "file-arrow-down",
"file-upload": "file-arrow-up",
"file-zip": "file-zipper",
"file-csv": "file-csv",
"file-missing": "file-circle-minus",
"sft-question": "circle-question",
"sft-hint": "life-ring",
"sft-solution": "circle-exclamation",
"sft-marking": "circle-check",
"email": "envelope",
"register-template": "file-lines",
"no-correctors": "user-slash",
"remove-user": "user-slash",
"tooltip-default": "circle-question",
"notification-success": "circle-check",
"notification-info": "circle-info",
"notification-warning": "circle-exclamation",
"notification-error": "triangle-exclamation",
"notification-nonactive": "info",
"favourite": "star",
"language": "flag",
"nav-container-close": "chevron-up",
"page-action-children-close": "chevron-up",
"menu-news": "bullhorn",
"menu-help": "question",
"menu-profile": "gears",
"menu-login": "right-to-bracket",
"menu-logout": "right-from-bracket",
"breadcrumbs-home": "house",
"menu-extra": "ellipsis",
"menu-course-list": "chalkboard-user",
"menu-corrections": "check",
"menu-exams": "square-poll-horizontal",
"menu-admin": "screwdriver",
"menu-lms": "list-check",
"menu-qualification": "graduation-cap",
"page-action-primary-expand": "bars",
"page-action-secondary": "ellipsis",
"breadcrumb-separator": "angle-right",
"file-upload-session": "file-arrow-up",
"standalone-field-error": "exclamation",
"file-user": "address-card",
"notification": "envelope",
"notification-sent": "envelope-open",
"no-notification": "bell-slash",
"personal-identification": "id-card",
"menu-workflows": "diagram-project",
"video": "video",
"submission-user-duplicate": "copy",
"submission-no-users": "user-slash",
"reset": "arrow-rotate-left",
"blocked": "ban",
"certificate": "car-side",
"print-center": "envelopes-bulk",
"letter": "envelopes-bulk",
"at": "at",
"supervisor": "person",
"supervisor-foreign": "person-rays",
"superior": "user-tie",
"waiting-for-user": "user-gear",
"expired": "hourglass-end",
"locked": "lock",
"unlocked": "unlock",
"trash": "trash",
"reset-tries": "trash-can-arrow-up",
"company": "building",
"company-warning": "building-circle-exclamation",
"edit": "pen-to-square",
"user-edit": "user-pen",
"loading": "spinner",
"placeholder": "notdef",
"reroute": "diamond-turn-right",
"top": "award",
"wildcard": "asterisk",
"user-unknown": "user-slash",
"user-badge": "id-badge",
"glasses": "glasses",
"missing": "question",
"pin-protect": "key"
}

View File

@ -1,41 +0,0 @@
{
"name": "App",
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

197
azure-pipelines.yaml Executable file
View File

@ -0,0 +1,197 @@
# SPDX-FileCopyrightText: 2024-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
trigger:
branches:
include:
- '*'
tags:
include:
- '*'
#paths:
# exclude:
# - CHANGELOG.md
parameters:
- name: services
type: object
default:
- name: frontend
imageBase:
image: devfra.azurecr.io/de.fraport.build/npm
tag: node-20
# extraBuildOptions: |
# --build-arg NPM_CUSTOM_REGISTRY=https://pkgs.dev.azure.com/fraport/_packaging/packages/npm/registry/
dependsOn: []
dependenciesCaches:
- key: package.json | package-lock.json
path: node_modules/
- key: package.json | package-lock.json
path: .npm/
- key: package.json | esbuild.config.mjs | utils/renamer.pl | utils/faviconize.pl | frontend/src/icons.scss
path: assets/icons/
- key: package.json | esbuild.config.mjs | utils/renamer.pl | utils/faviconize.pl | frontend/src/icons.scss
path: assets/favicons/
buildPool: 'Prod Private Agent Pool'
buildCores: 1
buildTimeout: 60
buildArtifacts: |
assets/icons/fradrive/*.svg
assets/favicons/*.png
assets/favicons/include.html
frontend/src/env.sass
config/manifest.json
static/**/*
well-known/**/*
- name: backend
imageBase:
image: devfra.azurecr.io/de.fraport.build/haskell
tag: 8.10.4
dependsOn:
- Build_frontend
dependenciesCaches:
- key: stack.yaml | stack.yaml.lock
path: .stack/
buildPool: 'Prod Private Agent Pool DS3'
buildCores: 3
buildTimeout: 1440
buildArtifacts: |
bin/*
variables:
buildImageUpstream: devfra.azurecr.io/de.fraport.fradrive.build
setupImages: $[ or( eq(variables.forcePushLatest, true), eq(variables['Build.SourceBranch'], 'refs/heads/master'), startsWith(variables['Build.SourceBranch'], 'refs/heads/update'), startsWith(variables['Build.SourceBranch'], 'refs/tags/') ) ]
pool: 'Prod Private Agent Pool'
stages:
- stage: Setup
jobs:
- ${{ each service in parameters.services }}:
- template: .azure-pipelines/templates/jobs/setup_image.yaml
parameters:
imageName: ${{service.name}}
imageBase: ${{service.imageBase}}
- template: .azure-pipelines/templates/jobs/setup_dependencies.yaml
parameters:
serviceName: ${{service.name}}
dependenciesCaches: ${{service.dependenciesCaches}}
dependenciesBuildPool: ${{service.buildPool}}
dependenciesBuildCores: ${{service.buildCores}}
dependenciesBuildTimeout: ${{service.buildTimeout}}
- stage: Build
dependsOn: Setup
jobs:
- ${{ each service in parameters.services }}:
- job: Build_${{service.name}}
displayName: Compile ${{service.name}}
dependsOn: ${{service.dependsOn}}
pool: '${{service.buildPool}}'
timeoutInMinutes: ${{service.buildTimeout}}
container:
${{ if eq(variables.setupImages, true) }}:
image: $(buildImageUpstream)/${{service.name}}:$(Build.BuildNumber)
${{ else }}:
image: $(buildImageUpstream)/${{service.name}}:latest
endpoint: devfra
env:
PROJECT_DIR: $(Build.Repository.LocalPath)
IN_CONTAINER: true
IN_CI: true
steps:
- ${{ each dependencyCache in service.dependenciesCaches }}:
- template: .azure-pipelines/templates/steps/cache.yaml
parameters:
cacheIdent: '${{service.name}}-dependencies'
cacheKeys: '${{dependencyCache.key}}'
cachePath: '${{dependencyCache.path}}'
- ${{ each dependency in service.dependsOn }}:
- template: .azure-pipelines/templates/steps/artifact-download.yaml
parameters:
artifactName: '${{dependency}}'
- template: .azure-pipelines/templates/steps/make.yaml
parameters:
makeJob: compile
makeService: ${{service.name}}
makeVars: 'CPU_CORES=${{service.buildCores}} STACK_CORES=-j${{service.buildCores}}'
- task: CopyFiles@2
displayName: Prepare ${{service.name}} build artifacts for upload
inputs:
Contents: '${{service.buildArtifacts}}'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
displayName: Publish ${{service.name}} build artifacts
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'Build_${{service.name}}'
publishLocation: 'Container'
# - stage: Test
# dependsOn: Build
# condition: eq(variables.skipTests, false)
# jobs:
# - ${{ each service in parameters.services }}:
# - job: Test_${{service.name}}
# displayName: Run ${{service.name}} tests
# pool: '${{service.buildPool}}'
# timeoutInMinutes: ${{service.buildTimeout}}
# container:
# # TODO: do not use latest on update branches
# image: $(buildImageUpstream)/${{service.name}}:latest
# endpoint: devfra
# env:
# PROJECT_DIR: $(Build.Repository.LocalPath)
# IN_CONTAINER: true
# IN_CI: true
# steps:
# - ${{ each dependencyCache in service.dependenciesCaches }}:
# - template: .azure-pipelines/templates/steps/cache.yaml
# parameters:
# cacheIdent: '${{service.name}}-dependencies'
# cacheKeys: '${{dependencyCache.key}}'
# cachePath: '${{dependencyCache.path}}'
# - ${{ each dependency in service.dependsOn }}:
# - template: .azure-pipelines/templates/steps/artifact-download.yaml
# parameters:
# artifactName: '${{dependency}}'
# - task: Docker@2
# displayName: Login to container registry
# inputs:
# command: login
# containerRegistry: devfra
# - task: Bash@3
# displayName: Start database container for testing
# inputs:
# targetType: inline
# script: |
# docker run -d devfra.azurecr.io/de.fraport.trusted/postgres:16.1-bookworm
# - template: .azure-pipelines/templates/steps/make.yaml
# parameters:
# makeJob: lint
# makeService: ${{service.name}}
# makeVars: 'CPU_CORES=${{service.buildCores}} STACK_CORES=-j${{service.buildCores}}'
# - template: .azure-pipelines/templates/steps/make.yaml
# parameters:
# makeJob: test
# makeService: ${{service.name}}
# makeVars: 'CPU_CORES=${{service.buildCores}} STACK_CORES=-j${{service.buildCores}}'
# - task: Docker@2
# displayName: Logout from container registry
# inputs:
# command: logout
# containerRegistry: devfra
# - job: TestReport_${{service.name}}
# displayName: Upload test reports for ${{service.name}}
# steps:
# - script: echo "Work in progress" # TODO
- stage: Release
dependsOn: Build # TODO Test
condition: or(eq(variables.forceRelease, true), startsWith(variables['Build.SourceBranch'], 'refs/tags/'))
jobs:
- template: .azure-pipelines/templates/jobs/release.yaml
parameters:
releaseTag: ${{split(variables['Build.SourceBranch'], '/')[2]}}

View File

View File

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# HLint configuration file
# https://github.com/ndmitchell/hlint
##########################

40
backend/Dockerfile Normal file
View File

@ -0,0 +1,40 @@
ARG FROM_IMG=docker.io/library/debian
ARG FROM_TAG=12.5
FROM ${FROM_IMG}:${FROM_TAG}
ENV LANG=de_DE.UTF-8
# basic dependencies
RUN apt-get -y update && apt-get -y install git
RUN apt-get -y update && apt-get -y install haskell-stack
RUN apt-get -y update && apt-get -y install llvm
RUN apt-get -y update && apt-get install -y --no-install-recommends locales locales-all
# compile-time dependencies
RUN apt-get -y update && apt-get install -y libpq-dev libsodium-dev
RUN apt-get -y update && apt-get -y install g++ libghc-zlib-dev libpq-dev libsodium-dev pkg-config
RUN apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata
# run-time dependencies for uniworx binary
RUN apt-get -y update && apt-get -y install fonts-roboto
# RUN apt-get -y update && apt-get -y install pdftk
# RUN apt-get -y update && apt-get -y install \
# texlive texlive-latex-recommended texlive-luatex texlive-plain-generic texlive-lang-german texlive-lang-english
RUN apt-get -y update && apt-get -y install texlive
# RUN ls /usr/local/texlive
# RUN chown -hR root /usr/local/texlive/2018
# RUN tlmgr init-usertree
# RUN tlmgr option repository ftp://tug.org/historic/systems/texlive/2018/tlnet-final
# RUN tlmgr update --self --all
ARG PROJECT_DIR=/fradrive
ENV PROJECT_DIR=${PROJECT_DIR}
# RUN mkdir -p "${PROJECT_DIR}"; chmod -R 777 "${PROJECT_DIR}"
WORKDIR ${PROJECT_DIR}
ENV HOME=${PROJECT_DIR}
ENV STACK_ROOT="${PROJECT_DIR}/.stack"
ENV STACK_SRC=""
ENV STACK_ENTRY="ghci ${STACK_SRC}"
ENTRYPOINT stack ${STACK_ENTRY}

51
backend/Makefile Normal file
View File

@ -0,0 +1,51 @@
export CPU_CORES = $(shell cat /proc/cpuinfo | grep '^processor' | wc -l)
export STACK_CORES = $(shell echo $(($(CPU_CORES)/2)))
ifeq ($(PROD),true)
export --DEVELOPMENT=--flag uniworx:-dev
else
export --DEVELOPMENT=--flag uniworx:dev
endif
.PHONY: dependencies
dependencies:
stack install hpack; stack install yesod-bin; \
stack build -j2 --only-dependencies
.PHONY: compile
compile: dependencies
stack build $(STACK_CORES) --fast --profile --library-profiling --executable-profiling --flag uniworx:-library-only $(--DEVELOPMENT) --local-bin-path $$(pwd)/bin --copy-bins
.PHONY: lint
lint:
stack build $(STACK_CORES) --test --fast --flag uniworx:library-only $(--DEVELOPMENT) uniworx:test:hlint
.PHONY: test
test:
stack build $(STACK_CORES) --test --coverage --fast --flag uniworx:library-only $(--DEVELOPMENT)
# For Reverse Proxy Problem see: https://groups.google.com/g/yesodweb/c/2EO53kSOuy0/m/Lw6tq2VYat4J
.PHONY: start
start: dependencies
export YESOD_IP_FROM_HEADER=true; \
export DEV_PORT_HTTP=3000; \
export DEV_PORT_HTTPS=3443; \
export HOST=127.0.0.1 ; \
export PORT=$${PORT:-$${DEV_PORT_HTTP}} ; \
export DETAILED_LOGGING=$${DETAILED_LOGGING:-true} ; \
export LOG_ALL=$${LOG_ALL:-false} ; \
export LOGLEVEL=$${LOGLEVEL:-info} ; \
export DUMMY_LOGIN=$${DUMMY_LOGIN:-true} ; \
export SERVER_SESSION_ACID_FALLBACK=$${SERVER_SESSION_ACID_FALLBACK:-true} ; \
export SERVER_SESSION_COOKIES_SECURE=$${SERVER_SESSION_COOKIES_SECURE:-false} ; \
export COOKIES_SECURE=$${COOKIES_SECURE:-false} ; \
export ALLOW_DEPRECATED=$${ALLOW_DEPRECATED:-true} ; \
export ENCRYPT_ERRORS=$${ENCRYPT_ERRORS:-false} ; \
export RIBBON=$${RIBBON:-$${HOST:-localhost}} ; \
export APPROOT=$${APPROOT:-http://localhost:$${DEV_PORT_HTTP}} ; \
export AVSPASS=$${AVSPASS:-nopasswordset} ; \
stack $(STACK_CORES) exec --local-bin-path $$(pwd)/bin --copy-bins -- yesod devel -p "$${DEV_PORT_HTTP}" -q "$${DEV_PORT_HTTPS}"
.PHONY: clean
clean:
rm -rf .stack-work .stack uniworx.cabal .ghc

View File

@ -1,3 +1,7 @@
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
-- | Running your app inside GHCi.
--
-- To start up GHCi for usage with Yesod, first make sure you are in dev mode:

10
backend/app/devel.hs Normal file
View File

@ -0,0 +1,10 @@
-- SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
{-# LANGUAGE PackageImports #-}
import "uniworx" Application (develMain)
import Prelude (IO)
main :: IO ()
main = develMain

9
backend/app/main.hs Normal file
View File

@ -0,0 +1,9 @@
-- SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
import Prelude (IO)
import Application (appMain)
main :: IO ()
main = appMain

View File

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2022 Sarah Vaupel <vaupel.sarah@campus.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Simple list of mime-types corresponding to archive-formats
#
# Comments are empty lines and any line for which the first non-whitespace symbol is #

View File

@ -0,0 +1,32 @@
# SPDX-FileCopyrightText: 2024 Steffen Jost <s.jost@fraport.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Values formatted like "_env:ENV_VAR_NAME:default_value" can be overridden by the specified environment variable.
# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables
# NB: If you need a numeric value (e.g. 123) to parse as a String, wrap it in single quotes (e.g. "_env:PGPASS:'123'")
# See https://github.com/yesodweb/yesod/wiki/Configuration#parsing-numeric-values-as-strings
# DEVELOPMENT ONLY, NOT TO BE USED IN PRODUCTION
avs-licence-synch:
times: [12]
level: 4
reason-filter: "(firm|block)"
max-changes: 999
mail-reroute-to:
name: "FRADrive-QA-Umleitungen"
email: "FRADrive-TEST-Umleitungen@fraport.de"
# Enqueue at specified hour, a few minutes later
job-lms-qualifications-enqueue-hour: 16
job-lms-qualifications-dequeue-hour: 4
# Using these setting kills the job-workers somehow
# job-workers: 5
# job-flush-interval: 600
# job-stale-threshold: 3600
# job-move-threshold: 60

5
backend/config/i18n.json Normal file
View File

@ -0,0 +1,5 @@
{
"_i18n": true,
"de-de-formal": "Ein webbasiertes Schulungsverwaltungssystem",
"en-eu": "A web-based training management system"
}

View File

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <vaupel.sarah@campus.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Mapping of mime-types to file extensions
#
# Comments are empty lines and any line for which the first non-whitespace symbol is #

View File

@ -1,3 +1,7 @@
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
$# Syntax:
$# - Leere zeilen werden ignoriert
$# - Zeilen, die mit '$#' beginnen, werden ignoriert

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

328
backend/config/settings.yml Normal file
View File

@ -0,0 +1,328 @@
# SPDX-FileCopyrightText: 2022-2025 Sarah Vaupel <sarah.vaupel@uniworx.de>, Gregor Kleen <gregor.kleen@ifi.lmu.de>,Sarah Vaupel <sarah.vaupel@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>,Wolfgang Witt <Wolfgang.Witt@campus.lmu.de>,Steffen Jost <s.jost@fraport.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Values formatted like "_env:ENV_VAR_NAME:default_value" can be overridden by the specified environment variable.
# See https://github.com/yesodweb/yesod/wiki/Configuration#overriding-configuration-values-with-environment-variables
# NB: If you need a numeric value (e.g. 123) to parse as a String, wrap it in single quotes (e.g. "_env:PGPASS:'123'")
# See https://github.com/yesodweb/yesod/wiki/Configuration#parsing-numeric-values-as-strings
static-dir: "_env:STATIC_DIR:static"
well-known-dir: "_env:WELL_KNOWN_DIR:well-known"
well-known-link-file: include.html
bundler-manifest: "_env:BUNDLER_MANIFEST:config/manifest.json"
host: "_env:HOST:*4" # any IPv4 host
port: "_env:PORT:3000"
ip-from-header: "_env:IP_FROM_HEADER:false"
approot: "_env:APPROOT:http://localhost:3000"
# approot:
# default: "http://localhost:3000"
# user-generated: "http://127.0.0.1:3000"
mail-from:
name: "_env:MAILFROM_NAME:Uni2work"
email: "_env:MAILFROM_EMAIL:uniworx@localhost"
mail-object-domain: "_env:MAILOBJECT_DOMAIN:localhost"
mail-use-replyto-instead-sender: "_env:MAIL_USES_REPLYTO:true"
mail-reroute-to:
name: "_env:MAIL_REROUTE_TO_NAME:"
email: "_env:MAIL_REROUTE_TO_EMAIL:"
#mail-verp:
# separator: "_env:VERP_SEPARATOR:+"
# prefix: "_env:VERP_PREFIX:bounce"
mail-support:
name: "_env:MAILSUPPORT_NAME:"
email: "_env:MAILSUPPORT:uni2work@ifi.lmu.de"
mail-retain-sent: 31470547
legal-external:
- language: "en"
imprint: "https://www.fraport.com/en/tools/imprint.html"
data-protection: "https://www.fraport.com/en/our-group/data-protection-statement.html"
terms-of-use: "https://www.fraport.com/en/tools/legal-information.html"
payments: "https://www.fraport.com/de/geschaeftsfelder/service/geschaeftspartner/richtlinien-und-zahlungsbedingungen.html"
- language: "de"
imprint: "https://www.fraport.com/de/tools/impressum.html"
data-protection: "https://www.fraport.com/de/konzern/datenschutz.html"
terms-of-use: "https://www.fraport.com/de/tools/disclaimer.html"
payments: "https://www.fraport.com/de/geschaeftsfelder/service/geschaeftspartner/richtlinien-und-zahlungsbedingungen.html"
job-workers: "_env:JOB_WORKERS:10"
job-flush-interval: "_env:JOB_FLUSH:30"
job-cron-interval: "_env:CRON_INTERVAL:60"
job-stale-threshold: 1800
job-move-threshold: 30
notification-rate-limit: 3600
notification-collate-delay: 7200
notification-expiration: 259200
session-timeout: 7200
bearer-expiration: 604800
bearer-encoding: HS256
maximum-content-length: "_env:MAX_UPLOAD_SIZE:805306368"
session-files-expire: 3600
prune-unreferenced-files-within: 604801
prune-unreferenced-files-interval: 3600
keep-unreferenced-files: 86400
health-check-interval:
matching-cluster-config: "_env:HEALTHCHECK_INTERVAL_MATCHING_CLUSTER_CONFIG:600"
http-reachable: "_env:HEALTHCHECK_INTERVAL_HTTP_REACHABLE:600"
ldap-admins: "_env:HEALTHCHECK_INTERVAL_LDAP_ADMINS:600"
smtp-connect: "_env:HEALTHCHECK_INTERVAL_SMTP_CONNECT:600"
widget-memcached: "_env:HEALTHCHECK_INTERVAL_WIDGET_MEMCACHED:600"
active-job-executors: "_env:HEALTHCHECK_INTERVAL_ACTIVE_JOB_EXECUTORS:60"
does-flush: "_env:HEALTHCHECK_INTERVAL_DOES_FLUSH:15"
health-check-delay-notify: "_env:HEALTHCHECK_DELAY_NOTIFY:true"
health-check-http: "_env:HEALTHCHECK_HTTP:true" # Can we assume, that we can reach ourselves under APPROOT via HTTP (reverse proxies or firewalls might prevent this)?
health-check-active-job-executors-timeout: "_env:HEALTHCHECK_ACTIVE_JOB_EXECUTORS_TIMEOUT:5"
health-check-active-widget-memcached-timeout: "_env:HEALTHCHECK_ACTIVE_WIDGET_MEMCACHED_TIMEOUT:2"
health-check-smtp-connect-timeout: "_env:HEALTHCHECK_SMTP_CONNECT_TIMEOUT:5"
health-check-ldap-admins-timeout: "_env:HEALTHCHECK_LDAP_ADMINS_TIMEOUT:60"
health-check-http-reachable-timeout: "_env:HEALTHCHECK_HTTP_REACHABLE_TIMEOUT:2"
health-check-matching-cluster-config-timeout: "_env:HEALTHCHECK_MATCHING_CLUSTER_CONFIG_TIMEOUT:2"
synchronise-ldap-users-within: "_env:SYNCHRONISE_LDAP_WITHIN:1209600" # 14 Tage in Sekunden
synchronise-ldap-users-interval: "_env:SYNCHRONISE_LDAP_INTERVAL:3600" # jede Stunde
synchronise-ldap-users-expire: "_env:SYNCHRONISE_LDAP_EXPIRE:15897600" # halbes Jahr in Sekunden
synchronise-avs-users-within: "_env:SYNCHRONISE_AVS_WITHIN:5702400" # alle 66 Tage
synchronise-avs-users-interval: "_env:SYNCHRONISE_AVS_INTERVAL:21600" # alle 6 Stunden
study-features-recache-relevance-within: 172800
study-features-recache-relevance-interval: 293
log-settings:
detailed: "_env:DETAILED_LOGGING:false"
all: "_env:LOG_ALL:false"
minimum-level: "_env:LOGLEVEL:warn"
destination: "_env:LOGDEST:stderr"
serializable-transaction-retry-limit: 2
ip-retention-time: 1209600
# Debugging
auth-dummy-login: "_env:DUMMY_LOGIN:false"
allow-deprecated: "_env:ALLOW_DEPRECATED:false"
encrypt-errors: "_env:ENCRYPT_ERRORS:true"
server-session-acid-fallback: "_env:SERVER_SESSION_ACID_FALLBACK:false"
auth-pw-hash:
algorithm: pbkdf2
strength: 14
# Optional values with the following production defaults.
# In development, they default to the opposite.
# reload-templates: false
# mutable-static: false
# skip-combining: false
# clear-cache: false
database:
user: "_env:PGUSER:uniworx"
password: "_env:PGPASS:uniworx"
host: "_env:PGHOST:localhost"
port: "_env:PGPORT:5432"
# See config/test-settings.yml for an override during tests
database: "_env:PGDATABASE:uniworx"
poolsize: "_env:PGPOOLSIZE:990"
auto-db-migrate: '_env:AUTO_DB_MIGRATE:true'
ldap:
- host: "_env:LDAPHOST:"
tls: "_env:LDAPTLS:"
port: "_env:LDAPPORT:389"
user: "_env:LDAPUSER:"
pass: "_env:LDAPPASS:"
baseDN: "_env:LDAPBASE:"
scope: "_env:LDAPSCOPE:WholeSubtree"
timeout: "_env:LDAPTIMEOUT:5"
search-timeout: "_env:LDAPSEARCHTIME:5"
pool:
stripes: "_env:LDAPSTRIPES:1"
timeout: "_env:LDAPTIMEOUT:20"
limit: "_env:LDAPLIMIT:10"
ldap-re-test-failover: 60
lms-direct:
upload-header: "_env:LMSUPLOADHEADER:true"
upload-delimiter: "_env:LMSUPLOADDELIMITER:"
download-header: "_env:LMSDOWNLOADHEADER:true"
download-delimiter: "_env:LMSDOWNLOADDELIMITER:,"
download-cr-lf: "_env:LMSDOWNLOADCRLF:true"
orphan-deletion-days: "_env:LMSORPHANDELETIONDAYS:33"
orphan-deletion-batch: "_env:LMSORPHANDELETIONBATCH:12"
orphan-deletion-repeat-hours: "_env:LMSORPHANDELETIONREPEATHOURS:24"
avs:
host: "_env:AVSHOST:skytest.fra.fraport.de"
port: "_env:AVSPORT:443"
user: "_env:AVSUSER:fradrive"
pass: "_env:AVSPASS:\"0000\""
timeout: "_env:AVSTIMEOUT:42"
cache-expiry: "_env:AVSCACHEEXPIRY:420"
lpr:
host: "_env:LPRHOST:fravm017173.fra.fraport.de"
port: "_env:LPRPORT:515"
queue: "_env:LPRQUEUE:fradrive"
smtp:
host: "_env:SMTPHOST:"
port: "_env:SMTPPORT:25"
ssl: "_env:SMTPSSL:starttls"
auth:
type: login
user: "_env:SMTPUSER:"
pass: "_env:SMTPPASS:"
pool:
stripes: "_env:SMTPSTRIPES:1"
timeout: "_env:SMTPTIMEOUT:20"
limit: "_env:SMTPLIMIT:10"
widget-memcached:
host: "_env:WIDGET_MEMCACHED_HOST:localhost"
port: "_env:WIDGET_MEMCACHED_PORT:11211"
auth: []
limit: "_env:WIDGET_MEMCACHED_LIMIT:1024"
timeout: "_env:WIDGET_MEMCACHED_TIMEOUT:20"
base-url: "_env:WIDGET_MEMCACHED_ROOT:"
expiration: "_env:WIDGET_MEMCACHED_EXPIRATION:3600"
session-memcached:
host: "_env:SESSION_MEMCACHED_HOST:localhost"
port: "_env:SESSION_MEMCACHED_PORT:11211"
auth: []
limit: "_env:SESSION_MEMCACHED_LIMIT:1024"
timeout: "_env:SESSION_MEMCACHED_TIMEOUT:20"
expiration: "_env:SESSION_MEMCACHED_EXPIRATION:28807"
# TODO: this one seems to be required!
memcached:
host: "_env:MEMCACHED_HOST:localhost"
port: "_env:MEMCACHED_PORT:11211"
auth: []
limit: "_env:MEMCACHED_LIMIT:1024"
timeout: "_env:MEMCACHED_TIMEOUT:20"
expiration: "_env:MEMCACHED_EXPIRATION:300"
memcache-auth: true
upload-cache:
host: "_env:UPLOAD_S3_HOST:localhost" # should be optional, but all file transfers will be empty without an S3 cache
port: "_env:UPLOAD_S3_PORT:9000"
access-key: "_env:UPLOAD_S3_KEY_ID:minioadmin"
secret-key: "_env:UPLOAD_S3_KEY:minioadmin"
is-secure: "_env:UPLOAD_S3_SSL:false"
region: "_env:UPLOAD_S3_REGION:"
auto-discover-region: "_env:UPLOAD_S3_AUTO_DISCOVER_REGION:true"
disable-cert-validation: "_env:UPLOAD_S3_DISABLE_CERT_VALIDATION:false"
upload-cache-bucket: "uni2work-uploads"
upload-tmp-bucket: "uni2work-tmp"
inject-files: 601
rechunk-files: 1201
check-missing-files: 7207
file-upload-db-chunksize: 4194304 # 4MiB
file-chunking-target-exponent: 21 # 2MiB
file-chunking-hash-window: 4096
server-sessions:
idle-timeout: 28807
absolute-timeout: 604801
timeout-resolution: 601
persistent-cookies: true
session-token-start: null
session-token-expiration: 28807
session-token-encoding: HS256
session-token-clock-leniency-start: 5
bearer-token-clock-leniency-start: 5
upload-token-clock-leniency-start: 5
cookies:
SESSION:
same-site: lax
http-only: true
secure: "_env:SERVER_SESSION_COOKIES_SECURE:true"
XSRF-TOKEN:
expires: null
same-site: strict
http-only: false
secure: "_env:COOKIES_SECURE:true"
LANG:
expires: 12622780800
same-site: lax
http-only: false
secure: "_env:COOKIES_SECURE:true"
SYSTEM-MESSAGE-STATE:
expires: 12622780800
same-site: lax
http-only: false
secure: "_env:COOKIES_SECURE:true"
ACTIVE-AUTH-TAGS:
expires: 12622780800
same-site: lax
http-only: true
secure: "_env:COOKIES_SECURE:true"
external-apis-ping-interval: 300
external-apis-pong-timeout: 600
external-apis-expiry: 1200
user-defaults:
max-favourites: 0
max-favourite-terms: 2
theme: Default
date-time-format: "%d.%m.%Y %R"
date-format: "%d.%m.%y"
time-format: "%R"
download-files: false
warning-days: 1209600
show-sex: false
exam-office-get-synced: true
exam-office-get-labels: true
prefers-postal: true
instance-id: "_env:INSTANCE_ID:instance"
ribbon: "_env:RIBBON:"
favourites-quick-actions-burstsize: 40
favourites-quick-actions-avg-inverse-rate: 50e3 # µs/token
favourites-quick-actions-timeout: 40e-3 # s
favourites-quick-actions-cache-ttl: 120 # s
token-buckets:
inject-files:
depth: 20971520 # 20MiB
inv-rate: 9.5e-7 # 1MiB/s
initial-value: 0
inject-files-count:
depth: 100
inv-rate: 1
initial-value: 0
prune-files:
depth: 1572864000 # 1500MiB
inv-rate: 1.9e-6 # 2MiB/s
initial-value: 0
rechunk-files:
depth: 20971520 # 20MiB
inv-rate: 9.5e-7 # 1MiB/s
initial-value: 0
fallback-personalised-sheet-files-keys-expire: 2419200
download-token-expire: 604801
bot-mitigations:
- only-logged-in-table-sorting
- unauthorized-form-honeypots
volatile-cluster-settings-cache-time: 10
communication-attachments-max-size: 20971520 # 20MiB

View File

@ -0,0 +1,21 @@
$# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
$#
$# SPDX-License-Identifier: AGPL-3.0-or-later
$# Syntax:
$# - Leere zeilen werden ignoriert
$# - Zeilen, die mit '$#' beginnen, werden ignoriert
$# - Verbleibende Zeilen werden jeweils als `Glob`-Pattern kompiliert
$# Ignoriere rekursiv alle Ordner __MACOSX und ihren Inhalt
**/__MACOSX
**/__MACOSX/*
**/__MACOSX/**/*
$# Ignoriere rekursiv alle Dateien .DS_Store (Mac OS)
**/.DS_Store
$# Ignoriere VI-Style-Backup-Files
**/*~
$# Ignoriere Emacs-Style-Backup-Files
**/.#*#

View File

@ -0,0 +1,19 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
database:
database: "_env:PGDATABASE_TEST:uniworx_test"
upload-cache-bucket: "uni2work-test-uploads"
upload-tmp-bucket: "uni2work-test-tmp"
log-settings:
detailed: true
all: true
minimum-level: debug
destination: test.log
auth-dummy-login: true
server-session-acid-fallback: true
job-workers: 20

View File

@ -1,3 +1,7 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# Simple list of mime-types corresponding to video-formats
#
# Comments are empty lines and any line for which the first non-whitespace symbol is #

View File

@ -0,0 +1,3 @@
SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
SPDX-License-Identifier: AGPL-3.0-or-later

8
backend/hlint/Hlint.hs Normal file
View File

@ -0,0 +1,8 @@
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
{-# OPTIONS_GHC
-F -pgmF hlint-test
-optF src
#-}

View File

@ -1,3 +1,7 @@
-- SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
--
-- SPDX-License-Identifier: AGPL-3.0-or-later
{-# OPTIONS_GHC -fno-warn-unused-top-binds #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# OPTIONS_GHC -fno-warn-deprecations #-}
@ -16,6 +20,7 @@ import qualified Data.Text as Text
import qualified Data.Map.Strict as Map
import Data.Ratio ((%))
import Data.Random.Normal
import qualified Control.Monad.Random.Class as Random
import System.Random (RandomGen)
@ -53,7 +58,7 @@ import qualified Control.Retry as Retry
data Normal k = Normal
{ dAvg :: k
, dRelDev :: Centi
} deriving (Eq, Ord, Read, Show, Generic, Typeable)
} deriving (Eq, Ord, Read, Show, Generic)
sampleN :: (Random.MonadSplit g m, RandomGen g) => (k -> Centi -> k) -> Normal k -> m k
sampleN scale Normal{..}
@ -91,12 +96,12 @@ sampleIntegral = sampleN scaleIntegral
instance PathPiece DiffTime where
toPathPiece = (toPathPiece :: Pico -> Text) . MkFixed . diffTimeToPicoseconds
fromPathPiece t = fromPathPiece t <&> \(MkFixed ps :: Pico) -> picosecondsToDiffTime ps
data LoadSimulation
= LoadSheetDownload
| LoadSheetSubmission
deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic, Typeable)
deriving (Eq, Ord, Read, Show, Enum, Bounded, Generic)
deriving anyclass (Universe, Finite)
nullaryPathPiece ''LoadSimulation $ camelToPathPiece' 1
@ -107,7 +112,7 @@ data LoadOptions = LoadOptions
, loadToken :: Maybe Jwt
, loadTerm :: TermId, loadSchool :: SchoolId, loadCourse :: CourseShorthand, loadSheet :: SheetName
, loadUploadChunks :: Normal Natural, loadUploadChunkSize :: Normal Natural
} deriving (Eq, Ord, Show, Generic, Typeable)
} deriving (Eq, Ord, Show, Generic)
instance Default LoadOptions where
def = LoadOptions
@ -122,7 +127,7 @@ instance Default LoadOptions where
data SimulationOptions = SimulationOptions
{ simParallel :: Natural
, simDelay, simDuration :: Normal DiffTime
} deriving (Eq, Ord, Show, Generic, Typeable)
} deriving (Eq, Ord, Show, Generic)
instance Default SimulationOptions where
def = SimulationOptions
@ -209,13 +214,13 @@ runSimulation sim = do
delays <- replicateM (fromIntegral p) $ do
d <- view $ _2 . _simDelay
sampleNDiffTime d
forConcurrently_ ([1..p] `zip` sort delays) $ \(n, d') -> do
begin <- liftIO getCurrentTime
dur <- view $ _2 . _simDuration
tDuration <- sampleNDiffTime dur
let MkFixed us = realToFrac d' :: Micro
threadDelay $ fromInteger us
start <- liftIO getCurrentTime
@ -263,7 +268,7 @@ runSimulation' LoadSheetSubmission = do
-- Just formData <- return . getFormData FIDsubmission $ resp ^. responseBody
-- Just addButtonData <- return . flip (runFormScraper FIDsubmission) (resp ^. responseBody) $ do
-- let btnSel = "button" Scalpel.@: [Scalpel.hasClass "btn-mass-input-add"]
-- name <- Scalpel.attr "name" btnSel
-- value <- Scalpel.attr "value" btnSel
-- guard $ value == "add__0__0"
@ -283,7 +288,7 @@ runSimulation' LoadSheetSubmission = do
yieldMany (zip [0..] chunks)
.| runReaderC simCtx
( C.mapM $ \(ci, cs) ->
fromIntegral cs <$ delayRemaining (1 % (genericLength chunks - ci) :: Rational)
fromIntegral cs <$ delayRemaining ((1 % max 1 (genericLength chunks - ci)) :: Rational)
)
.| generateDownload' uploadSeed
-- print $ ala Sum foldMap chunks
@ -300,7 +305,7 @@ runSimulation' LoadSheetSubmission = do
procEnd <- join $ asks runtime
print ("proc", procEnd - procStart)
resp3 <- liftIO . httpRetry $ Session.post session (uriToString id formURI mempty) subData
void . evaluate $! resp3
where
@ -323,11 +328,11 @@ runSimulation' LoadSheetSubmission = do
-> m ()
logRetry shouldRetry err status = liftIO . putStrLn . pack $ Retry.defaultLogMsg shouldRetry err status
-- runSimulation' other = terror $ "Not implemented: " <> tshow other
runFormScraper :: FormIdentifier -> Scalpel.Scraper Lazy.ByteString a -> Lazy.ByteString -> Maybe a
runFormScraper fid innerS = fmap join . flip Scalpel.scrapeStringLike $
runFormScraper fid innerS = fmap join . flip Scalpel.scrapeStringLike $
fmap listToMaybe . Scalpel.chroots "form" $ do
fid' <- Scalpel.attr "value" $ "input" Scalpel.@: ["name" Scalpel.@= "form-identifier"]
guard $ fid' == encodeUtf8 (fromStrict $ toPathPiece fid)
@ -336,11 +341,11 @@ runFormScraper fid innerS = fmap join . flip Scalpel.scrapeStringLike $
getFormData :: FormIdentifier -> Lazy.ByteString -> Maybe [FormParam]
getFormData = flip runFormScraper $
Scalpel.chroots ("input") $ do
Scalpel.chroots "input" $ do
name <- Scalpel.attr "name" Scalpel.anySelector
value <- Scalpel.attr "value" Scalpel.anySelector <|> pure ""
return $ toStrict name := value
newLoadSession :: ReaderT SimulationContext IO Session
newLoadSession = do
@ -349,7 +354,7 @@ newLoadSession = do
let withToken = case loadToken of
Nothing -> id
Just (Jwt bs) -> (:) (hAuthorization, "Bearer " <> bs) . filter ((/= hAuthorization) . fst)
liftIO . Session.newSessionControl (Just mempty) $ tlsManagerSettings
{ managerModifyRequest = \req -> return $ req { requestHeaders = withToken $ requestHeaders req }

9
backend/lpr Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env bash
# SPDX-FileCopyrightText: 2022 Steffen Jost <jost@tcs.ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
printf "lpr dummy called, arguments ignored.\n"
printf "Nothing is printed."
exit 0

View File

@ -0,0 +1,8 @@
# SPDX-FileCopyrightText: 2022 Gregor Kleen <gregor.kleen@ifi.lmu.de>,Steffen Jost <jost@tcs.ifi.lmu.de>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
CampusIdentPlaceholder: V.Nachname@fraport.de / E12345
CampusIdent: Fraport Kennung
CampusPassword: Passwort
CampusPasswordPlaceholder: Passwort

Some files were not shown because too many files have changed in this diff Show More