Compare commits

...

2 Commits

Author SHA1 Message Date
7ef581ad2c Project level and credits active participations and opposition ()
Fixes 

Previously accessing the final seminar view for active participations students could only see the project title on the top of the page,
the project level (bachelor, master ...) and credits for the level where missing.

In other places of the application we are showing the title, project level and credits.

Now the title, project level and credits are shown in the view following the same pattern as in other places of the application

How to test:
- Log in as beata@example.com
- Select 'All Final Seminars' tab
- Select radio button 'Past final seminars'
- Select project 'A bachelor thesis'
- Verify that title, project type and credits are shown.

Reviewed-on: 
Reviewed-by: Andreas Svanberg <andreass@dsv.su.se>
Co-authored-by: Nico Athanassiadis <nico@dsv.su.se>
Co-committed-by: Nico Athanassiadis <nico@dsv.su.se>
2025-04-29 14:34:58 +02:00
3477c8f0c5 Add foreign key constraint from table 'idea_student' to table 'program' ()
Fixes 

Reviewed-on: 
Reviewed-by: Andreas Svanberg <andreass@dsv.su.se>
Co-authored-by: Tom Zhao <tom.zhao@dsv.su.se>
Co-committed-by: Tom Zhao <tom.zhao@dsv.su.se>
2025-04-25 10:59:23 +02:00
4 changed files with 75 additions and 2 deletions
core/src/main/resources/db/migration
test-data/src/main/java/se/su/dsv/scipro/testdata/populators
view/src/main/java/se/su/dsv/scipro/finalseminar

@ -0,0 +1,4 @@
alter table idea_student
add constraint fk_idea_student_program_id
foreign key (program_id) references program (id)
on update cascade on delete set null;

@ -0,0 +1,53 @@
package se.su.dsv.scipro.testdata.populators;
import java.time.LocalDate;
import java.util.Date;
import org.springframework.stereotype.Service;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
import se.su.dsv.scipro.finalseminar.FinalSeminarService;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.project.ProjectService;
import se.su.dsv.scipro.system.Language;
import se.su.dsv.scipro.system.User;
import se.su.dsv.scipro.testdata.BaseData;
import se.su.dsv.scipro.testdata.Factory;
import se.su.dsv.scipro.testdata.TestDataPopulator;
@Service
public class ProjectLevelTitleCredits implements TestDataPopulator {
private final ProjectService projectService;
private final FinalSeminarService finalSeminarService;
public ProjectLevelTitleCredits(ProjectService projectService, FinalSeminarService finalSeminarService) {
this.projectService = projectService;
this.finalSeminarService = finalSeminarService;
}
@Override
public void populate(BaseData baseData, Factory factory) {
// Participants
User author = factory.createAuthor("Beata");
User headSupervisor = factory.createSupervisor("Elsabet");
// Project
Project project = new Project();
project.setProjectType(baseData.bachelor());
project.setTitle("A bachelor thesis");
project.setCredits(15);
project.setResearchArea(baseData.researchArea().researchArea());
project.setHeadSupervisor(headSupervisor);
project.addProjectParticipant(author);
project.setStartDate(LocalDate.now().minusDays(1));
projectService.save(project);
// Seminar
FinalSeminar finalSeminar = new FinalSeminar();
finalSeminar.setProject(project);
finalSeminar.setStartDate(new Date());
finalSeminar.setRoom("Cyber Space");
finalSeminar.setPresentationLanguage(Language.SWEDISH);
finalSeminarService.save(finalSeminar);
}
}

@ -2,7 +2,11 @@
<html xmlns:wicket="http://wicket.apache.org">
<body>
<wicket:panel>
<h3>Final seminar for project: <span wicket:id="projectTitle">[Title]</span></h3>
<h3>Final seminar for project:
<span wicket:id="projectTitle">[Title]</span> (<span wicket:id="projectType"></span><wicket:enclosure>,
<span wicket:id="credits">30</span> hec</wicket:enclosure>)
</h3>
<br>
<div class="row">

@ -1,7 +1,7 @@
package se.su.dsv.scipro.finalseminar;
import jakarta.inject.Inject;
import java.util.*;
import java.util.Date;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.ExternalLink;
@ -18,6 +18,8 @@ import se.su.dsv.scipro.system.User;
public class SeminarPanel extends Panel {
public static final String PROJECT_TITLE = "projectTitle";
static final String PROJECT_TYPE = "projectType";
static final String CREDITS = "credits";
static final String CANCELLED = "cancelled";
static final String CRUD = "crud";
static final String CRUD_NOT_ALLOWED = "noCrud";
@ -69,6 +71,16 @@ public class SeminarPanel extends Panel {
);
add(new Label(PROJECT_TITLE, seminar.map(FinalSeminar::getProject).map(Project::getTitle)));
add(new Label(PROJECT_TYPE, seminar.map(FinalSeminar::getProject).map(Project::getProjectTypeName)));
add(
new Label(CREDITS, seminar.map(FinalSeminar::getProject).map(Project::getCredits)) {
@Override
protected void onConfigure() {
super.onConfigure();
setVisible(seminar.getObject().getProject().getCredits() > 0);
}
}
);
add(new ScheduleFinalSeminarPanel("schedule", getProject()));
add(new SeminarCRUDPanel(CRUD, seminar));