diff --git a/src/Handler/Exam/Form.hs b/src/Handler/Exam/Form.hs index 530bc47b2..1f8ed214e 100644 --- a/src/Handler/Exam/Form.hs +++ b/src/Handler/Exam/Form.hs @@ -344,6 +344,8 @@ examFormTemplate (Entity eId Exam{..}) = do examParts' <- forM examParts $ \(Entity pid part) -> (,) <$> encrypt pid <*> pure part occurrences' <- forM occurrences $ \(Entity oid occ) -> (,) <$> encrypt oid <*> pure occ + mAuthorshipStatement <- maybe (pure Nothing) getEntity examAuthorshipStatement + return ExamForm { efName = examName , efGradingRule = examGradingRule @@ -391,7 +393,7 @@ examFormTemplate (Entity eId Exam{..}) = do , efExamMode = examExamMode , efOfficeSchools = Set.fromList $ examOfficeSchoolSchool . entityVal <$> extraSchools , efStaff = examStaff - , efAuthorshipStatement = Nothing -- TODO + , efAuthorshipStatement = authorshipStatementDefinitionContent . entityVal <$> mAuthorshipStatement } examTemplate :: MonadHandler m @@ -399,8 +401,9 @@ examTemplate :: MonadHandler m examTemplate cid = runMaybeT $ do newCourse <- MaybeT $ get cid - [(Entity _ oldCourse, Entity oldExamId oldExam)] <- lift . E.select . E.from $ \(course `E.InnerJoin` exam) -> do + [(Entity _ oldCourse, Entity oldExamId oldExam, mOldExamAuthorshipStatement)] <- lift . E.select . E.from $ \(course `E.InnerJoin` (exam `E.LeftOuterJoin` authorshipStatementDefinition)) -> do E.on $ course E.^. CourseId E.==. exam E.^. ExamCourse + E.on $ exam E.^. ExamAuthorshipStatement E.==. authorshipStatementDefinition E.?. AuthorshipStatementDefinitionId E.where_ $ ( course E.^. CourseShorthand E.==. E.val (courseShorthand newCourse) E.||. course E.^. CourseName E.==. E.val (courseName newCourse) ) @@ -411,7 +414,7 @@ examTemplate cid = runMaybeT $ do E.where_ . E.not_ . E.isNothing $ exam E.^. ExamVisibleFrom E.limit 1 E.orderBy [ E.desc $ course E.^. CourseTerm, E.asc $ exam E.^. ExamVisibleFrom ] - return (course, exam) + return (course, exam, authorshipStatementDefinition) extraSchools <- lift $ selectList [ ExamOfficeSchoolExam ==. oldExamId ] [] @@ -444,7 +447,7 @@ examTemplate cid = runMaybeT $ do , efExamMode = examExamMode oldExam , efStaff = examStaff oldExam , efOfficeSchools = Set.fromList $ examOfficeSchoolSchool . entityVal <$> extraSchools - , efAuthorshipStatement = Nothing -- TODO + , efAuthorshipStatement = authorshipStatementDefinitionContent . entityVal <$> mOldExamAuthorshipStatement }