diff --git a/src/Foundation.hs b/src/Foundation.hs index 939d1e0b1..ce6de1fac 100644 --- a/src/Foundation.hs +++ b/src/Foundation.hs @@ -72,6 +72,12 @@ import Handler.Utils.StudyFeatures import Control.Lens import Utils.Lens +-- -- TODO: Move me to appropriate Place +instance DisplayAble TermId where + display = termToText . unTermKey + + + -- infixl 9 :$: -- pattern a :$: b = a b diff --git a/src/Handler/Profile.hs b/src/Handler/Profile.hs index f09b7de41..42edd418c 100644 --- a/src/Handler/Profile.hs +++ b/src/Handler/Profile.hs @@ -20,7 +20,7 @@ getProfileR :: Handler Html getProfileR = do (uid, User{..}) <- requireAuthPair mr <- getMessageRender - (admin_rights,lecturer_rights,studies) <- runDB $ (,,) <$> + (admin_rights,lecturer_rights,lecture_owner,lecture_corrector,studies) <- runDB $ (,,,,) <$> (E.select $ E.from $ \(adright `E.InnerJoin` school) -> do E.where_ $ adright ^. UserAdminUser E.==. E.val uid E.on $ adright ^. UserAdminSchool E.==. school ^. SchoolId @@ -33,6 +33,18 @@ getProfileR = do return (school ^. SchoolName) ) <*> + (E.select $ E.from $ \(lecturer `E.InnerJoin` course) -> do + E.where_ $ lecturer ^. LecturerUser E.==. E.val uid + E.on $ lecturer ^. LecturerCourse E.==. course ^. CourseId + return (course ^. CourseShorthand, course ^. CourseTerm) + ) + <*> + (E.select $ E.from $ \(corrector `E.InnerJoin` course) -> do + E.where_ $ corrector ^. CorrectorUser E.==. E.val uid + E.on $ corrector ^. CorrectorCourse E.==. course ^. CourseId + return (course ^. CourseShorthand, course ^. CourseTerm) + ) + <*> (E.select $ E.from $ \(studydegree `E.InnerJoin` studyfeat `E.InnerJoin` studyterms) -> do E.where_ $ studyfeat ^. StudyFeaturesUser E.==. E.val uid E.on $ studyfeat ^. StudyFeaturesField E.==. studyterms ^. StudyTermsId diff --git a/src/Model/Types.hs b/src/Model/Types.hs index 366ecd167..0a59d614d 100644 --- a/src/Model/Types.hs +++ b/src/Model/Types.hs @@ -130,6 +130,9 @@ data TermIdentifier = TermIdentifier -- from_TermId_to_TermIdentifier = unTermKey -- from_TermIdentifier_to_TermId = TermKey +instance DisplayAble TermIdentifier where + display = termToText + --TODO: Enforce the number of digits within year, with parsing filling in the current leading digits? Goal: short urls termToText :: TermIdentifier -> Text termToText TermIdentifier{..} = Text.pack $ seasonToChar season : show year diff --git a/templates/profile.hamlet b/templates/profile.hamlet index 48c4a6adf..8b28247f1 100644 --- a/templates/profile.hamlet +++ b/templates/profile.hamlet @@ -21,6 +21,20 @@