Simplify call to get survey id

This commit is contained in:
Marcus Kammer 2024-06-09 14:01:10 +02:00
parent e03643229c
commit a7969d9c8b
Signed by: marcuskammer
GPG key ID: C374817BE285268F
3 changed files with 11 additions and 2 deletions

View file

@ -10,6 +10,13 @@
(remove-if #'string-empty-p (remove-if #'string-empty-p
(uiop:split-string uri :separator "/"))) (uiop:split-string uri :separator "/")))
(defun get-resource-id (resource request)
(case resource
(survey (second (split-uri request)))))
(defun get-survey-id (request)
(get-resource-id 'survey request))
(defun today () (defun today ()
"Return today's date formatted as ISO-8601." "Return today's date formatted as ISO-8601."
(local-time:format-timestring nil (local-time:format-timestring nil

View file

@ -19,6 +19,8 @@
(t (error "Unsupported language: ~A" lang)))) (t (error "Unsupported language: ~A" lang))))
(defun process-questionnaire-get (lang s) (defun process-questionnaire-get (lang s)
(check-type lang string)
(check-type s survey)
(setf *html-lang* lang) (setf *html-lang* lang)
(funcall (choose-sus-form lang) (survey-id s))) (funcall (choose-sus-form lang) (survey-id s)))
@ -31,7 +33,7 @@
(ml-survey/views:questionnaire-submit))) (ml-survey/views:questionnaire-submit)))
(define-easy-handler (questionnaire :uri #'questionnaire-uri) (lang) (define-easy-handler (questionnaire :uri #'questionnaire-uri) (lang)
(let ((s (make-instance 'survey :id (second (split-uri (request-uri*)))))) (let ((s (make-instance 'survey :id (get-survey-id (request-uri*)))))
(cond ((eq (hunchentoot:request-method*) :get) (cond ((eq (hunchentoot:request-method*) :get)
(process-questionnaire-get lang s)) (process-questionnaire-get lang s))
((eq (hunchentoot:request-method*) :post) ((eq (hunchentoot:request-method*) :post)

View file

@ -90,7 +90,7 @@ Returns a list of integers."
(survey-uri-p (request-uri request))) (survey-uri-p (request-uri request)))
(define-easy-handler (survey :uri #'survey-uri) () (define-easy-handler (survey :uri #'survey-uri) ()
(let ((s (make-instance 'survey :id (second (split-uri (request-uri*)))))) (let ((s (make-instance 'survey :id (get-survey-id (request-uri*)))))
(ml-survey/views:survey s (ml-survey/views:survey s
(when (survey-data-dir-p s) (when (survey-data-dir-p s)
(sus-calc (survey-data-dir-files s)))))) (sus-calc (survey-data-dir-files s))))))