Refactor new books into moderate submissions
This commit is contained in:
parent
897071e85d
commit
4efaaadbd2
8 changed files with 162 additions and 153 deletions
112
lib/admin.go
112
lib/admin.go
|
@ -4,7 +4,6 @@ import (
|
|||
log "github.com/cihub/seelog"
|
||||
|
||||
"net/http"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
|
@ -141,115 +140,6 @@ func saveHandler(h handler) {
|
|||
http.Redirect(h.w, h.r, "/book/"+id, http.StatusFound)
|
||||
} else {
|
||||
// XXX: I can't use a referer here :(
|
||||
http.Redirect(h.w, h.r, "/new/", http.StatusFound)
|
||||
http.Redirect(h.w, h.r, "/submission/moderate/", http.StatusFound)
|
||||
}
|
||||
}
|
||||
|
||||
type newBook struct {
|
||||
TitleFound int
|
||||
AuthorFound int
|
||||
Comment string
|
||||
B database.Book
|
||||
}
|
||||
type newData struct {
|
||||
S Status
|
||||
Found int
|
||||
Books []newBook
|
||||
Page int
|
||||
Next string
|
||||
Prev string
|
||||
Search string
|
||||
}
|
||||
|
||||
func newHandler(h handler) {
|
||||
if !h.sess.IsModerator() {
|
||||
notFound(h)
|
||||
return
|
||||
}
|
||||
|
||||
err := h.r.ParseForm()
|
||||
if err != nil {
|
||||
http.Error(h.w, err.Error(), http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
req := strings.Join(h.r.Form["q"], " ")
|
||||
page := 0
|
||||
if len(h.r.Form["p"]) != 0 {
|
||||
page, err = strconv.Atoi(h.r.Form["p"][0])
|
||||
if err != nil {
|
||||
page = 0
|
||||
}
|
||||
}
|
||||
res, num, _ := h.db.GetNewBooks(req, newItemsPage, page*newItemsPage)
|
||||
|
||||
var data newData
|
||||
data.S = GetStatus(h)
|
||||
data.S.Title = "New books -- " + data.S.Title
|
||||
data.Found = num
|
||||
if num-newItemsPage*page < newItemsPage {
|
||||
data.Books = make([]newBook, num-newItemsPage*page)
|
||||
} else {
|
||||
data.Books = make([]newBook, newItemsPage)
|
||||
}
|
||||
for i, b := range res {
|
||||
data.Books[i].B = b
|
||||
_, data.Books[i].TitleFound, _ = h.db.GetBooks("title:"+b.Title, 1, 0)
|
||||
_, data.Books[i].AuthorFound, _ = h.db.GetBooks("author:"+strings.Join(b.Authors, " author:"), 1, 0)
|
||||
data.Books[i].Comment, err = h.db.GetComment(b.ID)
|
||||
if err != nil {
|
||||
log.Error("Error getting comment for ", b.Title, " (", b.ID, "): ", err)
|
||||
}
|
||||
}
|
||||
data.Page = page + 1
|
||||
if num > (page+1)*newItemsPage {
|
||||
data.Next = "/new/?q=" + req + "&p=" + strconv.Itoa(page+1)
|
||||
}
|
||||
if page > 0 {
|
||||
data.Prev = "/new/?q=" + req + "&p=" + strconv.Itoa(page-1)
|
||||
}
|
||||
data.Search = req
|
||||
h.load("new", data)
|
||||
}
|
||||
|
||||
func storeHandler(h handler) {
|
||||
if !h.sess.IsModerator() {
|
||||
notFound(h)
|
||||
return
|
||||
}
|
||||
|
||||
var titles []string
|
||||
ids := strings.Split(mux.Vars(h.r)["ids"], "/")
|
||||
for _, id := range ids {
|
||||
if id == "" {
|
||||
continue
|
||||
}
|
||||
book, err := h.db.GetBookID(id)
|
||||
if err != nil {
|
||||
h.sess.Notify("Book not found!", "The book with id '"+id+"' is not there", "error")
|
||||
continue
|
||||
}
|
||||
if err != nil {
|
||||
h.sess.Notify("An error ocurred!", err.Error(), "error")
|
||||
log.Error("Error getting book for storing '", book.Title, "': ", err.Error())
|
||||
continue
|
||||
}
|
||||
err = h.db.ActiveBook(id)
|
||||
if err != nil {
|
||||
h.sess.Notify("An error ocurred!", err.Error(), "error")
|
||||
log.Error("Error storing book '", book.Title, "': ", err.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
err = h.db.UpdateSubmissionByBook(id, "Included in the library", &book)
|
||||
if err != nil {
|
||||
log.Error("There was a problem updating the submission: ", err)
|
||||
}
|
||||
|
||||
titles = append(titles, book.Title)
|
||||
}
|
||||
if titles != nil {
|
||||
h.sess.Notify("Store books!", "The books '"+strings.Join(titles, ", ")+"' are stored for public download", "success")
|
||||
}
|
||||
h.sess.Save(h.w, h.r)
|
||||
http.Redirect(h.w, h.r, h.r.Referer(), http.StatusFound)
|
||||
}
|
||||
|
|
Reference in a new issue