Skip to content

Commit

Permalink
Merge branch 'develop' of github.com:ls1intum/Artemis into feature/be…
Browse files Browse the repository at this point in the history
…arer-support
  • Loading branch information
iyannsch committed Nov 18, 2024
2 parents 8df1a6b + 745c7f7 commit 288a1eb
Show file tree
Hide file tree
Showing 549 changed files with 16,096 additions and 8,379 deletions.
16 changes: 6 additions & 10 deletions .github/issue-labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ assessment:

athena:
- athena
- ai feedback
- request (ai )?feedback
- caseSensitive: false

atlas:
Expand Down Expand Up @@ -48,8 +50,6 @@ core:
- authority
- data export
- migration
- user
- group
- caseSensitive: false

exam:
Expand Down Expand Up @@ -79,20 +79,19 @@ iris:
- iris
- llm
- chatbot
- ai
- \b(?<!\S)ai(?!\S)\b
- caseSensitive: false

lecture:
- lecture
- attachment
- online
- slide
- video
- text unit
- caseSensitive: false

lti:
- lti
- \b(?<!\S)lti(?!\S)\b
- online course
- caseSensitive: false

Expand All @@ -111,15 +110,14 @@ programming:
- build
- build plan
- code hint
- git
- \b(?<!\S)git(?!\S)\b
- testwise coverage
- ide
- \b(?<!\S)ide(?!\S)\b
- submission policy
- aeolus
- penalty
- auxilary
- commit
- project
- static code analysis
- caseSensitive: false

Expand All @@ -134,11 +132,9 @@ quiz:
- caseSensitive: false

text:
- text
- block
- caseSensitive: false

tutorialgroup:
- tutorialgroup
- session
- caseSensitive: false
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for
The following command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine):

```shell
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.7.0.war
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-7.7.2.war
```

## Architecture
Expand Down
1 change: 1 addition & 0 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"markdown-it-highlightjs",
"mobile-drag-drop",
"papaparse",
"pako",
"pepjs",
"prop-types",
"react",
Expand Down
34 changes: 19 additions & 15 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ plugins {
}

group = "de.tum.cit.aet.artemis"
version = "7.7.0"
version = "7.7.2"
description = "Interactive Learning with Individual Feedback"

java {
Expand Down Expand Up @@ -55,11 +55,15 @@ idea {
}

spotless {

// allows to execute the code formatting commands ./gradlew spotlessApply and ./gradlew spotlessCheck
java {
target {
fileTree(rootDir) {
include "**/*.java"
include (
"src/main/java/**/*.java",
"src/test/java/**/*.java",
)
exclude(
"**/src/test/resources/test-data/repository-export/EncodingISO_8559_1.java",
"**/node_modules/**",
Expand All @@ -71,7 +75,6 @@ spotless {
"**/src/main/resources/templates/**",
"/docker/**",
"checked-out-repos/**",
"**/src/main/java/org/eclipse/**",
"supporting_scripts/**"
)
}
Expand Down Expand Up @@ -177,7 +180,7 @@ jacocoTestCoverageVerification {
counter = "INSTRUCTION"
value = "COVEREDRATIO"
// TODO: in the future the following value should become higher than 0.92
minimum = 0.892
minimum = 0.895
}
limit {
counter = "CLASS"
Expand Down Expand Up @@ -249,6 +252,7 @@ dependencies {

implementation "de.jplag:c:${jplag_version}"
implementation "de.jplag:cpp:${jplag_version}"
implementation "de.jplag:csharp:${jplag_version}"
implementation "de.jplag:java:${jplag_version}"
implementation "de.jplag:javascript:${jplag_version}"
implementation "de.jplag:kotlin:${jplag_version}"
Expand Down Expand Up @@ -313,15 +317,15 @@ dependencies {
implementation "ch.qos.logback:logback-classic:${logback_version}"
implementation "ch.qos.logback:logback-core:${logback_version}"
// required by eureka client
implementation "com.thoughtworks.xstream:xstream:1.4.20"
implementation "com.thoughtworks.xstream:xstream:1.4.21"
// required by JPlag
implementation "xerces:xercesImpl:2.12.2"
// required by JPlag
implementation "xalan:xalan:2.7.3"
// required by JPlag
implementation "xalan:serializer:2.7.3"
// required by Saml2
implementation "org.apache.santuario:xmlsec:4.0.2"
implementation "org.apache.santuario:xmlsec:4.0.3"

implementation "org.jsoup:jsoup:1.18.1"
implementation "commons-codec:commons-codec:1.17.1" // needed for spring security saml2
Expand All @@ -347,7 +351,7 @@ dependencies {

implementation "tech.jhipster:jhipster-framework:${jhipster_dependencies_version}"
implementation "org.springframework.boot:spring-boot-starter-cache:${spring_boot_version}"
implementation "io.micrometer:micrometer-registry-prometheus:1.13.6"
implementation "io.micrometer:micrometer-registry-prometheus:1.14.1"
implementation "net.logstash.logback:logstash-logback-encoder:8.0"

// Defines low-level streaming API, and includes JSON-specific implementations
Expand All @@ -373,7 +377,7 @@ dependencies {
implementation "javax.cache:cache-api:1.1.1"
implementation "org.hibernate.orm:hibernate-core:${hibernate_version}"

implementation "com.zaxxer:HikariCP:6.0.0"
implementation "com.zaxxer:HikariCP:6.1.0"

implementation "org.apache.commons:commons-text:1.12.0"
implementation "org.apache.commons:commons-math3:3.6.1"
Expand All @@ -399,7 +403,7 @@ dependencies {
implementation "org.springframework.boot:spring-boot-starter-oauth2-resource-server:${spring_boot_version}"
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:${spring_boot_version}"

implementation "org.springframework.ldap:spring-ldap-core:3.2.7"
implementation "org.springframework.ldap:spring-ldap-core:3.2.8"
implementation "org.springframework.data:spring-data-ldap:3.3.5"

implementation("org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:4.1.3") {
Expand All @@ -410,8 +414,8 @@ dependencies {
implementation "org.springframework.cloud:spring-cloud-starter-config:4.1.3"
implementation "org.springframework.cloud:spring-cloud-commons:4.1.4"

implementation "io.netty:netty-all:4.1.114.Final"
implementation "io.projectreactor.netty:reactor-netty:1.1.23"
implementation "io.netty:netty-all:4.1.115.Final"
implementation "io.projectreactor.netty:reactor-netty:1.2.0"
implementation "org.springframework:spring-messaging:6.1.14"
implementation "org.springframework.retry:spring-retry:2.0.10"

Expand All @@ -421,7 +425,7 @@ dependencies {
implementation "org.springframework.security:spring-security-oauth2-core:${spring_security_version}"
implementation "org.springframework.security:spring-security-oauth2-client:${spring_security_version}"
// use newest version of nimbus-jose-jwt to avoid security issues through outdated dependencies
implementation "com.nimbusds:nimbus-jose-jwt:9.45"
implementation "com.nimbusds:nimbus-jose-jwt:9.47"

implementation "org.springframework.security:spring-security-oauth2-jose:${spring_security_version}"
implementation "org.springframework.security:spring-security-crypto:${spring_security_version}"
Expand Down Expand Up @@ -532,10 +536,10 @@ dependencies {
testImplementation "org.mockito:mockito-core:${mockito_version}"
testImplementation "org.mockito:mockito-junit-jupiter:${mockito_version}"

testImplementation "io.github.classgraph:classgraph:4.8.177"
testImplementation "io.github.classgraph:classgraph:4.8.179"
testImplementation "org.awaitility:awaitility:4.2.2"
testImplementation "org.apache.maven.shared:maven-invoker:3.3.0"
testImplementation "org.gradle:gradle-tooling-api:8.10.2"
testImplementation "org.gradle:gradle-tooling-api:8.11"
testImplementation "org.apache.maven.surefire:surefire-report-parser:3.5.2"
testImplementation "com.opencsv:opencsv:5.9"
testImplementation("io.zonky.test:embedded-database-spring-test:2.5.1") {
Expand Down Expand Up @@ -617,7 +621,7 @@ tasks.withType(Test).configureEach {
}

wrapper {
gradleVersion = "8.10.2"
gradleVersion = "8.11"
}

tasks.register("stage") {
Expand Down
8 changes: 0 additions & 8 deletions docker/playwright-E2E-tests-multi-node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,14 +109,6 @@ services:
condition: service_healthy
environment:
PLAYWRIGHT_DB_TYPE: 'MySQL'
command: >
sh -c '
cd /app/artemis/src/test/playwright &&
chmod 777 /root &&
npm ci &&
npm run playwright:setup &&
npm run playwright:test
'

networks:
artemis:
Expand Down
8 changes: 0 additions & 8 deletions docker/playwright-E2E-tests-mysql-localci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,14 +47,6 @@ services:
condition: service_healthy
environment:
PLAYWRIGHT_DB_TYPE: 'MySQL'
command: >
sh -c '
cd /app/artemis/src/test/playwright &&
chmod 777 /root &&
npm ci &&
npm run playwright:setup &&
npm run playwright:test
'

networks:
artemis:
Expand Down
8 changes: 0 additions & 8 deletions docker/playwright-E2E-tests-mysql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,6 @@ services:
condition: service_healthy
environment:
PLAYWRIGHT_DB_TYPE: 'MySQL'
command: >
sh -c '
chmod 777 /root &&
cd /app/artemis/src/test/playwright &&
npm ci &&
npm run playwright:setup &&
npm run playwright:test
'

networks:
artemis:
Expand Down
8 changes: 0 additions & 8 deletions docker/playwright-E2E-tests-postgres.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,6 @@ services:
condition: service_healthy
environment:
PLAYWRIGHT_DB_TYPE: 'Postgres'
command: >
sh -c '
chmod 777 /root &&
cd /app/artemis/src/test/playwright &&
npm ci &&
npm run playwright:setup &&
npm run playwright:test
'

networks:
artemis:
Expand Down
12 changes: 11 additions & 1 deletion docker/playwright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,17 @@ services:
TEST_TIMEOUT_SECONDS: '${bamboo_test_timeout_seconds}'
TEST_RETRIES: '${bamboo_test_retries}'
TEST_WORKER_PROCESSES: '${bamboo_test_worker_processes}'
command: sh -c "cd /app/artemis/src/test/playwright && chmod 777 /root && npm ci && npm run playwright:test"
SLOW_TEST_TIMEOUT_SECONDS: '${bamboo_slow_test_timeout_seconds}'
FAST_TEST_TIMEOUT_SECONDS: '${bamboo_fast_test_timeout_seconds}'
command: >
sh -c '
cd /app/artemis/src/test/playwright &&
chmod 777 /root &&
npm ci &&
npm run playwright:setup &&
npm run playwright:test;
rm ./test-reports/results-fast.xml ./test-reports/results-slow.xml
'
volumes:
- ..:/app/artemis
networks:
Expand Down
47 changes: 47 additions & 0 deletions docs/admin/cleanup-service.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
.. _cleanup:

Cleanup Service
===============

Artemis provides a feature to delete data from older courses.

.. _cleanup-menu:

.. figure:: cleanup/cleanup-menu.png
:align: center
:alt: Cleanup view

As shown in the image, administrators can delete the following data types:

* Plagiarism results with an undecided outcome
* Orphaned data
* Non-rated results from older courses
* Rated results from older courses

Since orphaned data has no connections to other data by nature, it is deleted without considering specific dates.
For other types, administrators can track the related exercises and courses.
When a cleanup operation is performed with specified "from" and "to" dates, all data associated with that type and related to courses that started after the "from" date and ended before the "to" date is deleted.

Data Deletion by Operation Type
------------------------------------------

1. **Orphaned Data**:
- Long Feedback Text with feedback that has no results
- Text Block with feedback that has no results
- Feedback records without results
- Student and team scores where either a student or a team is specified
- Long Feedback Text where both participation and submission are missing
- Text Block where the referenced feedback has no associated participation or submission
- Feedback with no associated participation or submission
- All Ratings where the related result has no associated participation or submission
- Results without associated participation or submission

2. **Plagiarism Results with an Undecided Outcome**:
- All plagiarism comparisons related to courses within the specified dates and marked as undecided.

3. **Rated and Non-rated Results**:
- Both types follow the same logic, except for the rating status of results (rated vs. non-rated).
- For each type, only the latest valid result within a participation is retained, while all others are deleted.
- Because direct result deletion is restricted due to data integrity reasons, Artemis first removes associated data for results scheduled for deletion, including Long Feedback Text, Text Block, Feedback, Student Score, and Team Score.

Artemis also records the date of the last cleanup operation, as seen in the last column of the table shown in the image.
Binary file added docs/admin/cleanup/cleanup-menu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 288a1eb

Please sign in to comment.