add crud for custom transcode selection profile
This commit is contained in:
@@ -102,15 +102,17 @@ type templateData struct {
|
||||
User *db.User
|
||||
Version string
|
||||
// home
|
||||
AlbumCount int
|
||||
ArtistCount int
|
||||
TrackCount int
|
||||
RequestRoot string
|
||||
RecentFolders []*db.Album
|
||||
AllUsers []*db.User
|
||||
LastScanTime time.Time
|
||||
IsScanning bool
|
||||
Playlists []*db.Playlist
|
||||
AlbumCount int
|
||||
ArtistCount int
|
||||
TrackCount int
|
||||
RequestRoot string
|
||||
RecentFolders []*db.Album
|
||||
AllUsers []*db.User
|
||||
LastScanTime time.Time
|
||||
IsScanning bool
|
||||
Playlists []*db.Playlist
|
||||
TranscodePreferences []*db.TranscodePreference
|
||||
TranscodeProfiles []string
|
||||
//
|
||||
CurrentLastFMAPIKey string
|
||||
CurrentLastFMAPISecret string
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
|
||||
"senan.xyz/g/gonic/db"
|
||||
"senan.xyz/g/gonic/scanner"
|
||||
"senan.xyz/g/gonic/server/encode"
|
||||
"senan.xyz/g/gonic/server/lastfm"
|
||||
)
|
||||
|
||||
@@ -53,12 +54,20 @@ func (c *Controller) ServeHome(r *http.Request) *Response {
|
||||
i, _ := strconv.ParseInt(tStr, 10, 64)
|
||||
data.LastScanTime = time.Unix(i, 0)
|
||||
}
|
||||
// ** begin playlists box
|
||||
//
|
||||
user := r.Context().Value(CtxUser).(*db.User)
|
||||
// ** begin playlists box
|
||||
c.DB.
|
||||
Where("user_id=?", user.ID).
|
||||
Limit(20).
|
||||
Find(&data.Playlists)
|
||||
// ** begin transcoding box
|
||||
c.DB.
|
||||
Where("user_id=?", user.ID).
|
||||
Find(&data.TranscodePreferences)
|
||||
for profile := range encode.Profiles {
|
||||
data.TranscodeProfiles = append(data.TranscodeProfiles, profile)
|
||||
}
|
||||
//
|
||||
return &Response{
|
||||
template: "home.tmpl",
|
||||
@@ -294,3 +303,44 @@ func (c *Controller) ServeUploadPlaylistDo(r *http.Request) *Response {
|
||||
flashW: errors,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeCreateTranscodePrefDo(r *http.Request) *Response {
|
||||
client := r.FormValue("client")
|
||||
profile := r.FormValue("profile")
|
||||
if client == "" {
|
||||
return &Response{
|
||||
redirect: "/admin/home",
|
||||
flashW: []string{"please provide a client name"},
|
||||
}
|
||||
}
|
||||
user := r.Context().Value(CtxUser).(*db.User)
|
||||
pref := db.TranscodePreference{
|
||||
UserID: user.ID,
|
||||
Client: client,
|
||||
Profile: profile,
|
||||
}
|
||||
if err := c.DB.Create(&pref).Error; err != nil {
|
||||
return &Response{
|
||||
redirect: "/admin/home",
|
||||
flashW: []string{fmt.Sprintf("could not create preference: %v", err)},
|
||||
}
|
||||
}
|
||||
return &Response{redirect: "/admin/home"}
|
||||
}
|
||||
|
||||
func (c *Controller) ServeDeleteTranscodePrefDo(r *http.Request) *Response {
|
||||
user := r.Context().Value(CtxUser).(*db.User)
|
||||
client := r.URL.Query().Get("client")
|
||||
if client == "" {
|
||||
return &Response{
|
||||
err: "please provide a client",
|
||||
code: 400,
|
||||
}
|
||||
}
|
||||
c.DB.
|
||||
Where("user_id=? AND client=?", user.ID, client).
|
||||
Delete(db.TranscodePreference{})
|
||||
return &Response{
|
||||
redirect: "/admin/home",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,6 +108,8 @@ func setupAdmin(r *mux.Router, ctrl *ctrladmin.Controller) {
|
||||
routUser.Handle("/link_lastfm_do", ctrl.H(ctrl.ServeLinkLastFMDo))
|
||||
routUser.Handle("/unlink_lastfm_do", ctrl.H(ctrl.ServeUnlinkLastFMDo))
|
||||
routUser.Handle("/upload_playlist_do", ctrl.H(ctrl.ServeUploadPlaylistDo))
|
||||
routUser.Handle("/create_transcode_pref_do", ctrl.H(ctrl.ServeCreateTranscodePrefDo))
|
||||
routUser.Handle("/delete_transcode_pref_do", ctrl.H(ctrl.ServeDeleteTranscodePrefDo))
|
||||
// ** begin admin routes (if session is valid, and is admin)
|
||||
routAdmin := routUser.NewRoute().Subrouter()
|
||||
routAdmin.Use(ctrl.WithAdminSession)
|
||||
|
||||
Reference in New Issue
Block a user