File: RepBase.hs

package info (click to toggle)
washngo 2.9-4.1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,876 kB
  • ctags: 273
  • sloc: haskell: 54,162; makefile: 1,086; ansic: 305; sh: 153; sql: 13
file content (116 lines) | stat: -rw-r--r-- 4,020 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
module RepBase (module Item, module RepBase) where

import Auxiliary
import Char
import Directory
import List hiding (head)
import Maybe
import Random
import Prelude hiding (head)
import WASH.HTML.HTMLMonad
import WASH.CGI.CGI
import Item
import System
import WASH.Utility.Locking
import WASH.Mail.Email

--------------------------------------------------------------------------------


newReviewer name pcname password = do
 obtainLock reviewerFile
 s <- readFileNonExistent reviewerFile ""
 let l = fmap read $ lines s
 addReviewer name pcname password l


addReviewer name pcname password rs = do
 g <- getStdGen
 let rid = take 8 $ randomRs ('a','z') g
 if elem rid (fmap reviewerID rs) 
  then addReviewer name pcname password rs 
  else do
   appendFile reviewerFile (show (Reviewer rid name pcname password) ++ "\n")
   releaseLock reviewerFile
   return rid
    
data Reviewer = Reviewer { reviewerID :: String
                         , reviewerName :: String
                         , reviewerPCMember :: String
                         , reviewerPassword :: String
                         }
 deriving (Read,Show)

getReviewerData rid = do
 obtainLock reviewerFile
 s <- readFileNonExistent reviewerFile ""
 releaseLock reviewerFile
 let l = fmap read $ lines s
 return $  listToMaybe [a | a <- l, reviewerID a == rid]

selector txt lo hi =
  do td (text txt)
     td (selectSingle show Nothing [lo..hi] empty)

ratings1 = table $ tr $ do
    relevanceF   <- selector "Relevance" 0 4
    originalityF <- selector "Originality" 0 4
    clarityF     <- selector "Clarity" 0 4
    soundnessF   <- selector "Soundness" 0 4
    confidenceF  <- selector "Confidence" 0 4
    return (relevanceF, originalityF, clarityF, soundnessF, confidenceF)



writeReport pcname reviewername submission reference F0 =
 venueQuery "Submit Review" $ do
  formatSubmissionStandard submission
  p reference
  p $ text ("PC Member: " ++ pcname)
  p $ text ("Reviewer: " ++ reviewername)
  (relevanceF, originalityF, clarityF, soundnessF, confidenceF) <- p ratings1 
  p (text "4 = very good/high, 3 = good, 2 = average, 1 = weak, 0 = very weak/low")
  ratingF <- p $ table (tr (selector "Overall Rating" 0 4 ##
                            td (text "4 = must accept, 3 = acceptable, 2 = marginal, 1 = reject, 0 = out of scope")))
  forAuthorF <- p $ do
    text "Comments for Author" >> br empty
    makeTextarea "" (attr "rows" "20" ## attr "cols" "75") ## 
		    attr "colspan" "2"
  forPCF <- p $ do
   text "Comments for PC" >> br empty
   makeTextarea "" (attr "rows" "3" ## attr "cols" "75") ## attr "colspan" "2"
  let password = itemPassword submission
      fields = F8 forAuthorF forPCF ratingF 
      		  relevanceF originalityF clarityF soundnessF confidenceF
      call = sendReport password reviewername pcname
  p $ submit fields call (fieldVALUE "Send report")


sendReport password reviewername pcname 
           (F8 forAuthorF forPCF ratingF 
	       relevanceF originalityF clarityF soundnessF confidenceF) = 
  do io (do addReport 
	         password 
		 reviewername 
		 pcname 
		 (value forAuthorF) 
		 (value forPCF)
		 (value ratingF)
		 (value relevanceF)
		 (value originalityF)
		 (value clarityF)
		 (value soundnessF)
		 (value confidenceF)
	    let message = simpleMail [pcname] (venueName ++ ": Review Received")
		     (textDOC "plain" 
		     ["Your reviewer " ++ reviewername ++ " entered a review."])
	    sendmail message)
     venueQuery "Review Received" $ text "Your report is saved. Thank you."

formatSubmissionStandard submission =
 table ((tr ((td (b $ text "Author"))      ## (td (text (itemAuthor      submission)))))
     ## (tr ((td (b $ text "Title"))       ## (td (text (itemTitle       submission)))))
     ## (tr ((td (b $ text "Affiliation")) ## (td (text (itemAffiliation submission)))))
     ## (tr ((td (b $ text "Email"))       ## (td (text (itemEmail       submission)))))
     ## (tr ((td (b $ text "Number"))      ## (td (text (show $ itemNumber submission)))))
       )