adding new fields
This commit is contained in:
parent
fa367a28f1
commit
10a66adb7c
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,4 +2,5 @@
|
||||
*_temp/
|
||||
logs/
|
||||
import/
|
||||
static/links/
|
||||
nginx.conf.compiled
|
||||
|
19
app.moon
19
app.moon
@ -7,6 +7,25 @@ import Tracks from require "models"
|
||||
class extends lapis.Application
|
||||
"/console": console.make!
|
||||
|
||||
[tracks: "/tracks(/:order[%a])(/:asc_desc[%u])(/:page[%d])"]: =>
|
||||
@order = tostring(@params.order)\lower!
|
||||
-- validate order field
|
||||
@order = "id" unless Tracks.fields[@order]
|
||||
@asc_desc = tostring(@params.asc_desc)\upper!
|
||||
-- descending or ascending only, ascending default
|
||||
@asc_desc = "ASC" if @asc_desc != "DESC"
|
||||
@page = tonumber(@params.page) or 1
|
||||
|
||||
tracks = Tracks\paginated "* ORDER BY ? ?", @order, @asc_desc, per_page: 32
|
||||
@last_page = tracks\num_pages!
|
||||
-- validate page
|
||||
if @page < 1
|
||||
return redirect_to: @url_for "tracks", order: @order, asc_desc: @asc_desc, page: 1
|
||||
if @page > @last_page
|
||||
return redirect_to: @url_for "tracks", order: @order, asc_desc: @asc_desc, page: @last_page
|
||||
@tracks = tracks\get_page @page
|
||||
return render: true
|
||||
|
||||
[index: "/(:page[%d])"]: respond_to {
|
||||
GET: =>
|
||||
tracks = Tracks\paginated "* ORDER BY id", per_page: 32
|
||||
|
0
import/.nomedia
Normal file
0
import/.nomedia
Normal file
@ -1,4 +1,4 @@
|
||||
import create_table, types from require "lapis.db.schema"
|
||||
import create_table, rename_column, add_column, types from require "lapis.db.schema"
|
||||
|
||||
{
|
||||
[1]: =>
|
||||
@ -9,4 +9,18 @@ import create_table, types from require "lapis.db.schema"
|
||||
{ "url", types.text null: true }
|
||||
{ "status", types.integer default: 1 }
|
||||
}
|
||||
[2]: =>
|
||||
rename_column "tracks", "name", "title"
|
||||
rename_column "tracks", "url", "link"
|
||||
for column in *{
|
||||
{ "art_url", types.text null: true }
|
||||
{ "file_url", types.text null: true }
|
||||
{ "file_size", types.integer null: true }
|
||||
{ "album", types.text null: true }
|
||||
{ "genre", types.text null: true }
|
||||
{ "tags", types.text default: " untagged " }
|
||||
{ "quality", types.integer default: 1 }
|
||||
{ "mood", types.text null: true }
|
||||
}
|
||||
add_column "tracks", unpack column
|
||||
}
|
||||
|
@ -9,3 +9,26 @@ class Tracks extends Model
|
||||
ignored: 5
|
||||
imported: 6
|
||||
}
|
||||
@qualities: enum {
|
||||
not_available: 1
|
||||
lossless: 2
|
||||
high: 3
|
||||
acceptable: 4
|
||||
low: 5
|
||||
unacceptable: 6
|
||||
}
|
||||
|
||||
@fields = {
|
||||
id: true
|
||||
artist: true
|
||||
title: true
|
||||
link: true
|
||||
status: true
|
||||
art_url: true
|
||||
file_url: true
|
||||
file_size: true
|
||||
album: true
|
||||
genre: true
|
||||
tags: true
|
||||
quality: true
|
||||
}
|
||||
|
0
static/links/.nomedia
Normal file
0
static/links/.nomedia
Normal file
@ -11,8 +11,8 @@ class extends Widget
|
||||
element "table", ->
|
||||
tr ->
|
||||
th "Artist"
|
||||
th "Name"
|
||||
th "URL"
|
||||
th "Title"
|
||||
th "Link"
|
||||
th "Status"
|
||||
th "✓"
|
||||
|
||||
@ -24,14 +24,14 @@ class extends Widget
|
||||
enctype: "multipart/form-data"
|
||||
}, ->
|
||||
td -> input type: "text", name: "artist", value: track.artist
|
||||
td -> input type: "text", name: "name", value: track.name
|
||||
td -> input type: "text", name: "title", value: track.title
|
||||
td ->
|
||||
if track.url and #track.url > 0
|
||||
a href: track.url, "*"
|
||||
if track.link and #track.link > 0
|
||||
a href: track.link, "*"
|
||||
else
|
||||
text "+"
|
||||
text " "
|
||||
input type: "text", name: "url", value: track.url
|
||||
input type: "text", name: "link", value: track.link
|
||||
td ->
|
||||
element "select", name: "status", ->
|
||||
for status in *Tracks.statuses
|
||||
@ -50,10 +50,10 @@ class extends Widget
|
||||
enctype: "multipart/form-data"
|
||||
}, ->
|
||||
td -> input type: "text", name: "artist", placeholder: "artist"
|
||||
td -> input type: "text", name: "name", placeholder: "name"
|
||||
td -> input type: "text", name: "title", placeholder: "title"
|
||||
td ->
|
||||
raw " "
|
||||
input type: "text", name: "url", placeholder: "url"
|
||||
input type: "text", name: "link", placeholder: "link"
|
||||
td ->
|
||||
element "select", name: "status", ->
|
||||
for status in *Tracks.statuses
|
||||
|
43
views/tracks.moon
Normal file
43
views/tracks.moon
Normal file
@ -0,0 +1,43 @@
|
||||
import Widget from require "lapis.html"
|
||||
|
||||
import Tracks from require "models"
|
||||
|
||||
class extends Widget
|
||||
@menu: =>
|
||||
div ->
|
||||
if @page != 1
|
||||
a href: @url_for("tracks", order: @order, asc_desc: @asc_desc, page: 1), "<<"
|
||||
raw " "
|
||||
a href: @url_for("tracks", order: @order, asc_desc: @asc_desc, page: @page - 1), "<"
|
||||
raw " "
|
||||
if @page != @last_page
|
||||
a href: @url_for("tracks", order: @order, asc_desc: @asc_desc, page: @page + 1), ">"
|
||||
raw " "
|
||||
a href: @url_for("tracks", order: @order, asc_desc: @asc_desc, page: @last_page), ">>"
|
||||
content: =>
|
||||
@menu!
|
||||
div ->
|
||||
element "table", ->
|
||||
tr ->
|
||||
th "Title"
|
||||
th "Artist"
|
||||
th "Genre"
|
||||
th "Mood"
|
||||
th "Album"
|
||||
th "Link"
|
||||
th "Status"
|
||||
th "Quality"
|
||||
|
||||
for track in *@tracks
|
||||
tr ->
|
||||
td track.title
|
||||
td track.artist
|
||||
td track.genre
|
||||
td track.mood
|
||||
td track.album
|
||||
td ->
|
||||
if track.link and #track.link > 0
|
||||
a href: track.link, track.link
|
||||
td Tracks.statuses[track.status]
|
||||
td Tracks.qualities[track.quality]
|
||||
@menu!
|
Reference in New Issue
Block a user