diff --git a/src/clj/auto_ap/jobs/import_uploaded_invoices.clj b/src/clj/auto_ap/jobs/import_uploaded_invoices.clj
index 01bd8afa..fef3a085 100644
--- a/src/clj/auto_ap/jobs/import_uploaded_invoices.clj
+++ b/src/clj/auto_ap/jobs/import_uploaded_invoices.clj
@@ -18,7 +18,7 @@
(javax.mail Session)
(javax.mail.internet MimeMessage)))
-(defn send-email-about-failed-message [mail-bucket mail-key]
+(defn send-email-about-failed-message [mail-bucket mail-key message]
(let [target-key (str "failed-emails/" mail-key ".eml")
target-url (str "http://" (:data-bucket env)
".s3-website-us-east-1.amazonaws.com/"
@@ -28,7 +28,7 @@
(ses/send-email {:destination {:to-addresses (:import-failure-destination-emails env)}
:source (:invoice-email env)
:message {:subject "An email invoice import failed"
- :body {:html (str "
You can download the original email
here.
")
+ :body {:html (str "You can download the original email
here.
" message "
")
:text (str "You can download the original email here: " target-url)}}})))
@@ -73,8 +73,8 @@
(alog/info ::found-imports :imports imports)
(invoices/import-uploaded-invoice {:user/role "admin"} imports ))))
(catch Exception e
- (alog/warn ::cant-import e)
- (send-email-about-failed-message (-> r :s3 :bucket :name) (-> r :s3 :object :key)))
+ (alog/warn ::cant-import :error e)
+ (send-email-about-failed-message (-> r :s3 :bucket :name) (-> r :s3 :object :key)) (str e))
(finally
(io/delete-file filename))))))))
(sqs/delete-message (assoc message :queue-url (:invoice-import-queue-url env) ))))
diff --git a/src/clj/auto_ap/ssr/nested_form_params.clj b/src/clj/auto_ap/ssr/nested_form_params.clj
index 1fa4648e..f82bba4c 100644
--- a/src/clj/auto_ap/ssr/nested_form_params.clj
+++ b/src/clj/auto_ap/ssr/nested_form_params.clj
@@ -12,9 +12,17 @@
\"foo[bar][][baz]\"
=> [\"foo\" \"bar\" \"\" \"baz\"]"
[param-name]
- (let [[_ k ks] (re-matches #"(?s)(.*?)((?:\[.*?\])*)" (name param-name))
- keys (if ks (map second (re-seq #"\[(.*?)\]" ks)))]
- (cons k keys)))
+ (let [[_ k ks] (re-matches #"(?s)(.*?)((?:(\[.*?\])|\(.*?\))*)" (name param-name))
+ keys (if ks (map second (re-seq #"(\[.*?\]|\(.*?\))" ks)))]
+ (cons k
+ (map (fn [k]
+ (let [[_ indexed-match] (re-matches k "\((.*?)\)")
+ [_ keyed-match] (re-matches k "\[(.*?)\]")]
+ (if indexed-match
+ [:index indexed-match]
+ [:key indexed-match])))))))
+
+
(defn- assoc-vec [m k v]
(let [m (if (contains? m k) m (assoc m k []))]