diff options
| author | Sacha Chua <sacha@sachachua.com> | 2023-10-17 11:56:22 -0400 | 
|---|---|---|
| committer | Sacha Chua <sacha@sachachua.com> | 2023-10-17 11:56:22 -0400 | 
| commit | 633e0c14fab69f7dc594039388ac997bc192d0ec (patch) | |
| tree | 4db385fea5b089cd441234db44e6f9608d3afe9a | |
| parent | 2df5e7266e07947010ce3cdd430e79f0642f247d (diff) | |
| download | emacsconf-el-633e0c14fab69f7dc594039388ac997bc192d0ec.tar.xz emacsconf-el-633e0c14fab69f7dc594039388ac997bc192d0ec.zip  | |
mail backstage and upload
| -rw-r--r-- | emacsconf-mail.el | 92 | 
1 files changed, 90 insertions, 2 deletions
diff --git a/emacsconf-mail.el b/emacsconf-mail.el index cd4fa21..8e43549 100644 --- a/emacsconf-mail.el +++ b/emacsconf-mail.el @@ -124,7 +124,9 @@ Behavior is modified by `emacsconf-mail-prepare-behavior'."  			;; prepare to send the mail  			(if (and (derived-mode-p 'message-mode)  							 (string-match "unsent mail" (buffer-name)) -							 (not (eq emacsconf-mail-prepare-behavior 'new-message))) +							 (not (eq emacsconf-mail-prepare-behavior 'new-message)) +							 ;; is the current message a reply to this e-mail? +							 (string-match (regexp-quote email) (message-field-value "To")))  					;; add to headers  					(emacsconf-mail-update-reply-headers template email attrs fields)   				;; compose a new message @@ -911,6 +913,77 @@ ${signature}")        :captions (mapconcat (lambda (sub) (concat (emacsconf-surround "\n" (elt sub 4) "" "") (elt sub 3))) (subed-parse-file captions) "\n")))      (mml-attach-file captions "text/vtt" "Subtitles" "attachment"))) +(defun emacsconf-mail-upload-and-backstage-info (group) +	"E-mail upload and backstage access information to GROUP." +  (interactive (list (emacsconf-mail-complete-email-group))) +  (emacsconf-mail-prepare +	 (list +		:subject "${conf-name} ${year}: Upload instructions, backstage info" +		:reply-to "emacsconf-submit@gnu.org, ${email}, ${user-email}" +		:mail-followup-to "emacsconf-submit@gnu.org, ${email}, ${user-email}" +		:log-note "sent backstage and upload information" +		:body +		"${email-notes}Hi ${name}! + +Hope things are going well for you! I got the upload service up +and running so you can upload your video${plural} and other talk +resources (ex: speaker notes, Org files, slides, etc.).  You can +access it at ${upload-url} with the password +\"${upload-password}\". Please let me know if you run into technical issues.${fill} + +If you can get your file(s) uploaded by ${video-target-date}, +that would give us plenty of time to reencode it, edit captions, +and so on. If life has gotten a bit busier than expected, that's +okay. You can upload it when you can or we can plan to do your +presentation live. +(Late submissions and live presentations are a bit more stressful, but +it'll probably work out.)${fill} + +We've also set up ${backstage} as the backstage area where you +can view the videos and resources uploaded so far. You can access +it with the username \"${backstage-user}\" and the password +\"${backstage-password}\".  Please keep the backstage password +and other speakers' talk resources secret. This is a manual +process, so your talk won't immediately show up there once you've +upload it. Once we've processed your talk, you can use the +backstage area to check if your talk has been correctly reencoded +and see the progress on captions. You can also check out other +people's talks. Enjoy!${fill} + +Thank you so much for contributing to ${conf-name} ${year}! + +${signature}") +   (car group) +   (list +			:email-notes (emacsconf-surround "ZZZ: " (plist-get (cadr group) :email-notes) "\n\n" "") +    :backstage (emacsconf-replace-plist-in-string +								(list :year emacsconf-year) +								"https://media.emacsconf.org/${year}/backstage/") +		:plural (if (= 1 (length (cdr group))) "" "s") +    :backstage-user emacsconf-backstage-user +    :backstage-password emacsconf-backstage-password +		:upload-url +		(concat "https://ftp-upload.emacsconf.org/?sid=" +						emacsconf-upload-password +						"-" +						(mapconcat (lambda (o) (plist-get o :slug)) (cdr group) "-")) +		:upload-password emacsconf-upload-password +		:video-target-date emacsconf-video-target-date +		:name (plist-get (cadr group) :speakers-short) +		:email (car group) +		:user-email user-mail-address +    :signature user-full-name +		:conf-name emacsconf-name +    :year emacsconf-year))) + +(defun emacsconf-mail-upload-and-backstage-info-to-waiting-for-prerecs () +	"Mail upload and backstage information to all speakers who will submit files." +	(interactive) +	(let ((groups (emacsconf-mail-groups (seq-filter (lambda (o) (string= (plist-get o :status) "WAITING_FOR_PREREC")) +																		 (emacsconf-get-talk-info))))) +		(dolist (group groups) +			(emacsconf-mail-upload-and-backstage-info group)))) +  (defun emacsconf-mail-backstage-info (group)  	"E-mail backstage access information to GROUP."    (interactive (list (emacsconf-mail-complete-email-group))) @@ -945,7 +1018,7 @@ ${signature}")  		:backstage-use  		(cond  		 ((string= (plist-get (cadr group) :role) "volunteer") -			"If you see a talk that you'd like to caption, please let us know and we can reserve it for you.") +			"If you see a talk that you'd like to caption, please let us know and we can reserve it for you. I'll also let people periodically know when more talks come in.")  		 ((string= (plist-get (cadr group) :status) "WAITING_FOR_PREREC")  			"As we add more talks, you can skim through any relevant ones to  see if there are any points you'd like to build on in your talk. @@ -969,6 +1042,21 @@ people's talks too."))  		:conf-name emacsconf-name      :year emacsconf-year))) +(defun emacsconf-mail-backstage-info-to-captioning-volunteers () +	"E-mail backstage info to captioning volunteers." +	(interactive) +	(dolist (volunteer (seq-filter +											(lambda (o) +												(string-match ":captions:" (assoc-default "ALLTAGS" o 'string= ""))) +											(emacsconf-get-volunteer-info))) +		(emacsconf-mail-backstage-info +		 (list +			(assoc-default "EMAIL" volunteer) +			(list :role "volunteer" +						:speakers-short +						(or (assoc-default "NAME" volunteer) +								(assoc-default "NAME_SHORT" volunteer))))))) +  (defun emacsconf-mail-backstage-info-to-speakers-and-captioners ()    (interactive)    (let ((template (emacsconf-mail-merge-get-template "backstage"))  | 
