(slightly) less primitive message editing support
parent
e892d20e18
commit
53961bbece
20
bbj.el
20
bbj.el
|
@ -467,19 +467,31 @@ it worked on emacs 24."
|
||||||
|
|
||||||
(defun bbj-edit-post ()
|
(defun bbj-edit-post ()
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((adminp (bbj-request "is_admin" 'target_user bbj-username))
|
(when (eq bbj-buffer-type 'index)
|
||||||
|
(let ((buffer (current-buffer)))
|
||||||
|
(bbj-enter)
|
||||||
|
(unless (eql buffer (current-buffer))
|
||||||
|
(bbj-edit-post))))
|
||||||
|
(let* ((post (alist-get 'post_id (bbj-post-prop 'data)))
|
||||||
|
(adminp (bbj-request "is_admin" 'target_user bbj-username))
|
||||||
|
(message (alist-get 'body (bbj-post-prop 'data)))
|
||||||
|
(query (bbj-request "edit_query" 'post_id post 'thread_id thread-id))
|
||||||
(callback `(lambda ()
|
(callback `(lambda ()
|
||||||
(let* ((message (bbj-consume-window (current-buffer)))
|
(let* ((message (bbj-consume-window (current-buffer)))
|
||||||
(request (bbj-request "edit_post"
|
(request (bbj-request "edit_post"
|
||||||
'post_id ,(alist-get 'post_id (bbj-post-prop 'data))
|
'post_id ,post
|
||||||
'body message 'thread_id ,thread-id)))
|
'body message 'thread_id ,thread-id)))
|
||||||
(if (numberp (bbj-descend request 'error 'code))
|
(if (numberp (bbj-descend request 'error 'code))
|
||||||
(message bbj-descend request 'error 'description)
|
(message bbj-descend request 'error 'description)
|
||||||
(message "post edited")
|
(message "post edited")
|
||||||
(bbj-enter-thread ,thread-id))))))
|
(bbj-enter-thread ,thread-id))))))
|
||||||
(cond
|
(cond
|
||||||
((and (not (eq ))))
|
((numberp (bbj-descend query 'error 'code))
|
||||||
)))
|
(message (bbj-descend query 'error 'description)))
|
||||||
|
(t
|
||||||
|
(bbj-compose-in-window "Editing post (including html) (C-c C-c to send)" callback)
|
||||||
|
(insert message)
|
||||||
|
(goto-char (point-min))))))
|
||||||
|
|
||||||
|
|
||||||
(defun bbj-browse-index ()
|
(defun bbj-browse-index ()
|
||||||
|
|
13
src/db.py
13
src/db.py
|
@ -190,7 +190,12 @@ def user_namecheck(name):
|
||||||
return False, schema.error(4,
|
return False, schema.error(4,
|
||||||
"Username cannot contain whitespace chars besides spaces.")
|
"Username cannot contain whitespace chars besides spaces.")
|
||||||
|
|
||||||
elif len(username) > 24:
|
elif not name.strip():
|
||||||
|
return False, schema.error(4,
|
||||||
|
"Username must contain at least one non-space character")
|
||||||
|
|
||||||
|
|
||||||
|
elif len(name) > 24:
|
||||||
return False, schema.error(4,
|
return False, schema.error(4,
|
||||||
"Username is too long (max 24 chars)")
|
"Username is too long (max 24 chars)")
|
||||||
|
|
||||||
|
@ -199,7 +204,7 @@ def user_namecheck(name):
|
||||||
|
|
||||||
def user_authcheck(auth_hash):
|
def user_authcheck(auth_hash):
|
||||||
if not auth_hash:
|
if not auth_hash:
|
||||||
return schema.error(3,
|
return False, schema.error(3,
|
||||||
"auth_hash may not be empty")
|
"auth_hash may not be empty")
|
||||||
|
|
||||||
elif len(auth_hash) != 64:
|
elif len(auth_hash) != 64:
|
||||||
|
@ -211,7 +216,7 @@ def user_authcheck(auth_hash):
|
||||||
|
|
||||||
def user_quipcheck(quip):
|
def user_quipcheck(quip):
|
||||||
if not quip:
|
if not quip:
|
||||||
return ""
|
return True, True
|
||||||
|
|
||||||
elif contains_nonspaces(quip):
|
elif contains_nonspaces(quip):
|
||||||
return False, schema.error(4,
|
return False, schema.error(4,
|
||||||
|
@ -226,7 +231,7 @@ def user_quipcheck(quip):
|
||||||
|
|
||||||
def user_biocheck(bio):
|
def user_biocheck(bio):
|
||||||
if not bio:
|
if not bio:
|
||||||
return ""
|
return True, True
|
||||||
|
|
||||||
elif len(bio) > 4096:
|
elif len(bio) > 4096:
|
||||||
return False, schema.error(4,
|
return False, schema.error(4,
|
||||||
|
|
|
@ -13,6 +13,7 @@ endpoints = {
|
||||||
"thread_create": ["title", "body", "tags"],
|
"thread_create": ["title", "body", "tags"],
|
||||||
"thread_reply": ["thread_id", "body"],
|
"thread_reply": ["thread_id", "body"],
|
||||||
"edit_post": ["thread_id", "post_id", "body"],
|
"edit_post": ["thread_id", "post_id", "body"],
|
||||||
|
"edit_query": ["thread_id", "post_id"],
|
||||||
"can_edit": ["thread_id", "post_id"],
|
"can_edit": ["thread_id", "post_id"],
|
||||||
"user_register": ["user", "auth_hash", "quip", "bio"],
|
"user_register": ["user", "auth_hash", "quip", "bio"],
|
||||||
"user_get": ["target_user"],
|
"user_get": ["target_user"],
|
||||||
|
@ -100,13 +101,17 @@ def user_register(json):
|
||||||
|
|
||||||
return schema.response(
|
return schema.response(
|
||||||
db.user_register(
|
db.user_register(
|
||||||
json["user"],
|
|
||||||
json["auth_hash"],
|
json["auth_hash"],
|
||||||
|
json["user"],
|
||||||
json["quip"],
|
json["quip"],
|
||||||
json["bio"]))
|
json["bio"]))
|
||||||
|
|
||||||
|
|
||||||
def user_get(json):
|
def user_get(json):
|
||||||
|
"""
|
||||||
|
On success, returns an external user object for target_user (ID or name).
|
||||||
|
If the user isn't in the system, returns false.
|
||||||
|
"""
|
||||||
user = db.user_resolve(json["target_user"])
|
user = db.user_resolve(json["target_user"])
|
||||||
if not user:
|
if not user:
|
||||||
return False
|
return False
|
||||||
|
@ -146,6 +151,10 @@ def thread_reply(json):
|
||||||
return schema.response(reply)
|
return schema.response(reply)
|
||||||
|
|
||||||
|
|
||||||
|
def edit_query(json):
|
||||||
|
return db.edit_handler(json)[1]
|
||||||
|
|
||||||
|
|
||||||
def can_edit(json):
|
def can_edit(json):
|
||||||
return db.edit_handler(json)[0]
|
return db.edit_handler(json)[0]
|
||||||
|
|
||||||
|
@ -154,9 +163,9 @@ def edit_post(json):
|
||||||
thread = db.thread_load(json["thread_id"])
|
thread = db.thread_load(json["thread_id"])
|
||||||
admin = db.user_is_admin(json["user"])
|
admin = db.user_is_admin(json["user"])
|
||||||
target_id = json["post_id"]
|
target_id = json["post_id"]
|
||||||
query, obj = db.edit_handler(json, thread)
|
ok, obj = db.edit_handler(json, thread)
|
||||||
|
|
||||||
if query:
|
if ok:
|
||||||
obj["body"] = json["body"]
|
obj["body"] = json["body"]
|
||||||
obj["lastmod"] = time()
|
obj["lastmod"] = time()
|
||||||
obj["edited"] = True
|
obj["edited"] = True
|
||||||
|
|
Loading…
Reference in New Issue