emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/rt-liberation 5dc7165 36/72: Port status changes to RES


From: Stefan Monnier
Subject: [elpa] externals/rt-liberation 5dc7165 36/72: Port status changes to REST interface.
Date: Wed, 5 Aug 2020 11:57:39 -0400 (EDT)

branch: externals/rt-liberation
commit 5dc7165c1c67c420300ee6c1837a1eec0aaa475c
Author: Yoni Rabkin <yrk@gnu.org>
Commit: Yoni Rabkin <yrk@gnu.org>

    Port status changes to REST interface.
---
 rt-liberation-rest.el | 10 +++++++++-
 rt-liberation.el      | 38 +++++++++++++++++++++++++++-----------
 2 files changed, 36 insertions(+), 12 deletions(-)

diff --git a/rt-liberation-rest.el b/rt-liberation-rest.el
index af8c1a5..dec5b57 100644
--- a/rt-liberation-rest.el
+++ b/rt-liberation-rest.el
@@ -244,6 +244,7 @@
 (defun rt-liber-rest-edit-runner (ticket-id field value)
   "Run edit comment to set FIELD to VALUE."
   (message "started edit command at %s..." (current-time-string))
+  (message "ticket #%s, %s <- %s" ticket-id field value)
   (let ((request-data
         (format "content=%s: %s"
                 (url-hexify-string field)
@@ -260,7 +261,14 @@
              rt-liber-rest-username
              rt-liber-rest-password)))
       (rt-liber-rest-handle-response response-buffer)))
-  (message "command ended at %s" (current-time-string)))
+  (message "edit command ended at %s" (current-time-string)))
+
+(defun rt-liber-rest-command-set-status (id status)
+  "Set ticket ID status to be STATUS."
+  (let ((field (rt-liber-get-field-string 'status)))
+    (rt-liber-parse-answer
+     (rt-liber-rest-edit-runner id field status)
+     'rt-liber-command-runner-parser-f)))
 
 
 (provide 'rt-liberation-rest)
diff --git a/rt-liberation.el b/rt-liberation.el
index a266123..849dec2 100644
--- a/rt-liberation.el
+++ b/rt-liberation.el
@@ -181,7 +181,8 @@ specific strings which would produce the desired effect in 
the
 server.")
 
 (defvar rt-liber-field-dictionary
-  '((owner   . "Owner"))
+  '((owner   . "Owner")
+    (status  . "Status"))
   "Mapping between field symbols and RT field strings.
 
 The field symbols provide the programmer with a consistent way of
@@ -190,7 +191,8 @@ referring to RT fields.")
 (defvar rt-liber-status-dictionary
   '((deleted  . "deleted")
     (resolved . "resolved")
-    (open     . "open"))
+    (open     . "open")
+    (new      . "new"))
   "Mapping between status symbols and status strings.
 
 The status symbols provide the programmer with a consistent way
@@ -550,13 +552,14 @@ AFTER  date after predicate."
 (defun rt-liber-get-field-string (field-symbol)
   (when (not field-symbol)
     (error "null field symbol"))
+  (cdr (assoc field-symbol rt-liber-field-dictionary)))
 
-  (defun rt-liber-ticket-owner-only (ticket-alist)
-    "Return the string value of the ticket owner."
-    (when (not ticket-alist)
-      (error "null ticket-alist"))
-    (cdr (assoc (rt-liber-get-field-string 'owner))
-        ticket-alist)))
+(defun rt-liber-ticket-owner-only (ticket-alist)
+  "Return the string value of the ticket owner."
+  (when (not ticket-alist)
+    (error "null ticket-alist"))
+  (cdr (assoc (rt-liber-get-field-string 'owner)
+             ticket-alist)))
 
 (defun rt-liber-viewer-visit-in-browser ()
   "Visit this ticket in the RT Web interface."
@@ -1147,6 +1150,7 @@ string then that will be the name of the new buffer."
     (define-key map (kbd "a") 'rt-liber-browser-assign)
     (define-key map (kbd "r") 'rt-liber-browser-resolve)
     (define-key map (kbd "o") 'rt-liber-browser-open)
+    (define-key map (kbd "N") 'rt-liber-browser-new)
     (define-key map (kbd "t") 'rt-liber-browser-take-ticket-at-point)
     (define-key map (kbd "A") 'rt-liber-browser-ancillary-text)
     (define-key map (kbd "SPC") 'scroll-up)
@@ -1316,17 +1320,22 @@ If FIELD already exists, update to VALUE."
 
 (defun rt-liber-command-set-status-deleted (id)
   "Set the status of ticket ID to `deleted'."
-  (rt-liber-command-set-status
+  (rt-liber-rest-command-set-status
    id (rt-liber-command-get-status-string 'deleted)))
 
+(defun rt-liber-command-set-status-new (id)
+  "Set the status of ticket ID to `new'."
+  (rt-liber-rest-command-set-status
+   id (rt-liber-command-get-status-string 'new)))
+
 (defun rt-liber-command-set-status-resolved (id)
   "Set the status of ticket ID to `resolved'."
-  (rt-liber-command-set-status
+  (rt-liber-rest-command-set-status
    id (rt-liber-command-get-status-string 'resolved)))
 
 (defun rt-liber-command-set-status-open (id)
   "Set the status of ticket ID to `open'."
-  (rt-liber-command-set-status
+  (rt-liber-rest-command-set-status
    id (rt-liber-command-get-status-string 'open)))
 
 ;; This is brittle because the server doesn't respond with a code but
@@ -1394,6 +1403,13 @@ If FIELD already exists, update to VALUE."
    (rt-liber-browser-ticket-id-at-point))
   (rt-liber-browser-refresh-and-return))
 
+(defun rt-liber-browser-new ()
+  "Change the current ticket's status to `new'."
+  (interactive)
+  (rt-liber-command-set-status-new
+   (rt-liber-browser-ticket-id-at-point))
+  (rt-liber-browser-refresh-and-return))
+
 (defun rt-liber-browser-move (queue)
   "Move the current ticket to a different queue."
   (interactive "sQueue: ")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]