Added anime edit page

This commit is contained in:
Eduard Urbach 2017-06-28 17:55:08 +02:00
parent de46187216
commit ba24b6e2d0
6 changed files with 90 additions and 2 deletions

View File

@ -26,7 +26,16 @@ func main() {
} }
func sync(data *kitsu.Anime) { func sync(data *kitsu.Anime) {
anime := arn.Anime{} anime, err := arn.GetAnime(data.ID)
if err != nil {
if strings.Contains(err.Error(), "not found") {
anime = &arn.Anime{}
} else {
panic(err)
}
}
attr := data.Attributes attr := data.Attributes
// General data // General data
@ -48,6 +57,10 @@ func sync(data *kitsu.Anime) {
anime.Status = attr.Status anime.Status = attr.Status
anime.Summary = arn.FixAnimeDescription(attr.Synopsis) anime.Summary = arn.FixAnimeDescription(attr.Synopsis)
if anime.Mappings == nil {
anime.Mappings = []*arn.Mapping{}
}
// NSFW // NSFW
if attr.Nsfw { if attr.Nsfw {
anime.NSFW = 1 anime.NSFW = 1
@ -75,7 +88,7 @@ func sync(data *kitsu.Anime) {
} }
// Save in database // Save in database
err := anime.Save() err = anime.Save()
status := "" status := ""
if err == nil { if err == nil {

View File

@ -14,6 +14,7 @@ import (
"github.com/animenotifier/notify.moe/pages/animelist" "github.com/animenotifier/notify.moe/pages/animelist"
"github.com/animenotifier/notify.moe/pages/animelistitem" "github.com/animenotifier/notify.moe/pages/animelistitem"
"github.com/animenotifier/notify.moe/pages/dashboard" "github.com/animenotifier/notify.moe/pages/dashboard"
"github.com/animenotifier/notify.moe/pages/editanime"
"github.com/animenotifier/notify.moe/pages/embed" "github.com/animenotifier/notify.moe/pages/embed"
"github.com/animenotifier/notify.moe/pages/forum" "github.com/animenotifier/notify.moe/pages/forum"
"github.com/animenotifier/notify.moe/pages/forums" "github.com/animenotifier/notify.moe/pages/forums"
@ -58,6 +59,7 @@ func configure(app *aero.Application) *aero.Application {
app.Ajax("/", dashboard.Get) app.Ajax("/", dashboard.Get)
app.Ajax("/anime", popularanime.Get) app.Ajax("/anime", popularanime.Get)
app.Ajax("/anime/:id", anime.Get) app.Ajax("/anime/:id", anime.Get)
app.Ajax("/anime/:id/edit", editanime.Get)
app.Ajax("/forum", forums.Get) app.Ajax("/forum", forums.Get)
app.Ajax("/forum/:tag", forum.Get) app.Ajax("/forum/:tag", forum.Get)
app.Ajax("/threads/:id", threads.Get) app.Ajax("/threads/:id", threads.Get)

View File

@ -21,6 +21,11 @@ component Anime(anime *arn.Anime, tracks []*arn.SoundTrack, user *arn.User)
if user != nil if user != nil
.buttons.anime-actions .buttons.anime-actions
if user.Role == "editor" || user.Role == "admin"
a.button.ajax(href=anime.Link() + "/edit")
Icon("database")
span Edit anime
if user.AnimeList().Contains(anime.ID) if user.AnimeList().Contains(anime.ID)
a.button.ajax(href="/+" + user.Nick + "/animelist/" + anime.ID) a.button.ajax(href="/+" + user.Nick + "/animelist/" + anime.ID)
Icon("pencil") Icon("pencil")
@ -153,6 +158,11 @@ component Anime(anime *arn.Anime, tracks []*arn.SoundTrack, user *arn.User)
Icon("external-link") Icon("external-link")
span Kitsu span Kitsu
each mapping in anime.Mappings
a.light-button(href=mapping.Link(), target="_blank", rel="noopener")
Icon("external-link")
span= mapping.Name()
//- if providers.HummingBird //- if providers.HummingBird
//- a.light-button(href="https://hummingbird.me/anime/" + providers.HummingBird.providerId, target="_blank") HummingBird //- a.light-button(href="https://hummingbird.me/anime/" + providers.HummingBird.providerId, target="_blank") HummingBird

View File

@ -0,0 +1,28 @@
package editanime
import (
"net/http"
"github.com/aerogo/aero"
"github.com/animenotifier/arn"
"github.com/animenotifier/notify.moe/components"
"github.com/animenotifier/notify.moe/utils"
)
// Get anime edit page.
func Get(ctx *aero.Context) string {
id := ctx.Get("id")
user := utils.GetUser(ctx)
if user == nil || (user.Role != "editor" && user.Role != "admin") {
return ctx.Error(http.StatusBadRequest, "Not logged in or not auhorized to edit this anime", nil)
}
anime, err := arn.GetAnime(id)
if err != nil {
return ctx.Error(http.StatusNotFound, "Anime not found", err)
}
return ctx.HTML(components.EditAnime(anime))
}

View File

@ -0,0 +1,7 @@
component EditAnime(anime *arn.Anime)
h2= anime.Title.Canonical
.widgets
.widget(data-api="/api/anime/" + anime.ID)
h3.anime-section-name Mappings
InputText("ShoboiID", anime.GetMapping("shoboi/anime"), "Shoboi TID", "TID on http://cal.syoboi.jp")

View File

@ -0,0 +1,28 @@
package main
import (
"fmt"
"github.com/animenotifier/arn"
)
var mappings = map[string]arn.Mapping{
"13055": arn.Mapping{
Service: "shoboi/anime",
ServiceID: "4528",
},
}
func main() {
for animeID, mapping := range mappings {
anime, err := arn.GetAnime(animeID)
if err != nil {
panic(err)
}
fmt.Println(anime.ID, "=", mapping.Service, mapping.ServiceID)
anime.AddMapping(mapping.Service, mapping.ServiceID)
anime.Save()
}
}