mirror of
https://github.com/th3r00t/pyShelf.git
synced 2026-04-28 01:59:35 -04:00
ui gets v# from config
This commit is contained in:
@@ -1,9 +1,7 @@
|
|||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
from psycopg2 import Error
|
from psycopg2 import Error
|
||||||
|
|
||||||
from .config import Config
|
from .config import Config
|
||||||
|
|
||||||
# db_pointer = Config().catalogue_db
|
# db_pointer = Config().catalogue_db
|
||||||
@@ -102,3 +100,29 @@ class Storage:
|
|||||||
"""
|
"""
|
||||||
self.db.close()
|
self.db.close()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def make_collections(self):
|
||||||
|
_q = "SELECT id,file_name FROM books"
|
||||||
|
self.cursor.execute(_q)
|
||||||
|
_set = self.cursor.fetchall()
|
||||||
|
for book in _set:
|
||||||
|
path = self.config.book_path+'/'
|
||||||
|
_collections = []
|
||||||
|
_pathing = book[1].split(path)[1].split('/')
|
||||||
|
_pathing.pop(0);_pathing.pop(-1)
|
||||||
|
for _p in _pathing:
|
||||||
|
_s = _p.replace("'","")
|
||||||
|
_q_x = """
|
||||||
|
SELECT id FROM collections where collection='%s' AND book_id_id=%s
|
||||||
|
"""%(_s,book[0])
|
||||||
|
try:
|
||||||
|
self.cursor.execute(_q_x)
|
||||||
|
if len(self.cursor.fetchall()) < 1:
|
||||||
|
self.cursor.execute(
|
||||||
|
"""INSERT INTO collections (collection, book_id_id) VALUES ('%s',%s)"""%(_s,book[0])
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
_collections.append(_p)
|
||||||
|
self.db.commit()
|
||||||
|
self.close()
|
||||||
|
|||||||
23
src/backend/pyShelf_MakeCollections.py
Executable file
23
src/backend/pyShelf_MakeCollections.py
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import time
|
||||||
|
|
||||||
|
from .lib.config import Config
|
||||||
|
from .lib.library import Catalogue
|
||||||
|
from .lib.pyShelf import InitFiles
|
||||||
|
from .lib.storage import Storage
|
||||||
|
|
||||||
|
sys.path.append(os.path.abspath("."))
|
||||||
|
|
||||||
|
|
||||||
|
def MakeCollections(root):
|
||||||
|
_t1 = time.time()
|
||||||
|
config = Config(root) # Get configuration settings
|
||||||
|
# InitFiles(config.file_array) # Initialize file system
|
||||||
|
_storage = Storage(config)
|
||||||
|
_storage.make_collections()
|
||||||
|
_t2 = time.time()
|
||||||
|
scan_time = round(_t2 - _t1)
|
||||||
|
print("Collections Made.")
|
||||||
|
print("Time %s seconds" % scan_time)
|
||||||
@@ -19,7 +19,6 @@ def execute_scan(root):
|
|||||||
_t1 = time.time()
|
_t1 = time.time()
|
||||||
config = Config(root) # Get configuration settings
|
config = Config(root) # Get configuration settings
|
||||||
InitFiles(config.file_array) # Initialize file system
|
InitFiles(config.file_array) # Initialize file system
|
||||||
|
|
||||||
Storage(config).check_ownership()
|
Storage(config).check_ownership()
|
||||||
catalogue = Catalogue(config) # Open the Catalogue
|
catalogue = Catalogue(config) # Open the Catalogue
|
||||||
catalogue.import_books()
|
catalogue.import_books()
|
||||||
|
|||||||
25
src/interface/migrations/0004_collections.py
Normal file
25
src/interface/migrations/0004_collections.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 3.0.2 on 2020-02-04 20:22
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('interface', '0003_auto_20200101_0447'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Collections',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('collection', models.CharField(max_length=255)),
|
||||||
|
('book_id', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='interface.Books')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'db_table': 'collections',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -30,6 +30,15 @@ class Books(models.Model):
|
|||||||
progress = models.IntegerField(null=True)
|
progress = models.IntegerField(null=True)
|
||||||
file_name = models.CharField(max_length=255, null=False)
|
file_name = models.CharField(max_length=255, null=False)
|
||||||
|
|
||||||
|
class Collections(models.Model):
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
db_table = "collections"
|
||||||
|
def __str__(self):
|
||||||
|
return self.collection
|
||||||
|
collection = models.CharField(max_length=255)
|
||||||
|
book_id = models.ForeignKey(Books, on_delete=models.PROTECT)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
"""Returns the url to access a particular instance of MyModelName."""
|
"""Returns the url to access a particular instance of MyModelName."""
|
||||||
return reverse("model-detail-view", args=[str(self.id)])
|
return reverse("model-detail-view", args=[str(self.id)])
|
||||||
|
|||||||
2
src/interface/templates/index.html
vendored
2
src/interface/templates/index.html
vendored
@@ -18,7 +18,7 @@
|
|||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="app_header" >
|
<div class="app_header" >
|
||||||
<div class="app_hdr">
|
<div class="app_hdr">
|
||||||
<h1 class="app_hdr shadow">pyShelf 0.4.1</h1>
|
<h1 class="app_hdr shadow">pyShelf {{Version}}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="app_slogan">
|
<div class="app_slogan">
|
||||||
<h3 class="app_slogan shadow">"An elegant tool... for a more civilized age."</h3>
|
<h3 class="app_slogan shadow">"An elegant tool... for a more civilized age."</h3>
|
||||||
|
|||||||
2
src/interface/templates/search.html
vendored
2
src/interface/templates/search.html
vendored
@@ -18,7 +18,7 @@
|
|||||||
<div id="app">
|
<div id="app">
|
||||||
<div class="app_header" >
|
<div class="app_header" >
|
||||||
<div class="app_hdr">
|
<div class="app_hdr">
|
||||||
<h1 class="app_hdr shadow">pyShelf 0.4.1</h1>
|
<h1 class="app_hdr shadow">pyShelf {{Version}}</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="app_slogan">
|
<div class="app_slogan">
|
||||||
<h3 class="app_slogan shadow">"An elegant tool... for a more civilized age."</h3>
|
<h3 class="app_slogan shadow">"An elegant tool... for a more civilized age."</h3>
|
||||||
|
|||||||
@@ -6,17 +6,22 @@ from django.db import models
|
|||||||
from django.http import JsonResponse
|
from django.http import JsonResponse
|
||||||
from django.shortcuts import HttpResponse, render #render_to_response
|
from django.shortcuts import HttpResponse, render #render_to_response
|
||||||
from django.utils.text import slugify
|
from django.utils.text import slugify
|
||||||
|
from pathlib import Path
|
||||||
from .models import Books
|
from .models import Books
|
||||||
|
from backend.lib.config import Config
|
||||||
|
|
||||||
|
config = Config(Path('../'))
|
||||||
def index(request):
|
def index(request):
|
||||||
"""
|
"""
|
||||||
Return template index
|
Return template index
|
||||||
"""
|
"""
|
||||||
_set = 1
|
_set = 1
|
||||||
return render(
|
return render(
|
||||||
request, "index.html", {"Books": book_set(20, _set), "Set": str(_set)}
|
request, "index.html", {
|
||||||
|
"Books": book_set(20, _set),
|
||||||
|
"Set": str(_set),
|
||||||
|
"Version": config.VERSION
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -29,7 +34,11 @@ def next_page(request, bookset):
|
|||||||
except Exception:
|
except Exception:
|
||||||
_set = 1
|
_set = 1
|
||||||
return render(
|
return render(
|
||||||
request, "index.html", {"Books": book_set(None, _set), "Set": str(_set)}
|
request, "index.html", {
|
||||||
|
"Books": book_set(None, _set),
|
||||||
|
"Set": str(_set),
|
||||||
|
"Version": config.VERSION
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -46,7 +55,11 @@ def prev_page(request, bookset):
|
|||||||
except Exception:
|
except Exception:
|
||||||
_set = 1
|
_set = 1
|
||||||
return render(
|
return render(
|
||||||
request, "index.html", {"Books": book_set(None, _set), "Set": str(_set)}
|
request, "index.html", {
|
||||||
|
"Books": book_set(None, _set),
|
||||||
|
"Set": str(_set),
|
||||||
|
"Version": config.VERSION
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +69,10 @@ def search(request, query=None, _set=1, _limit=None):
|
|||||||
"""
|
"""
|
||||||
_set = int(_set)
|
_set = int(_set)
|
||||||
if query is None:
|
if query is None:
|
||||||
return render(request, "index.html", {"Books": None})
|
return render(request, "index.html", {
|
||||||
|
"Books": None,
|
||||||
|
"Version": config.VERSION
|
||||||
|
})
|
||||||
if _limit is None:
|
if _limit is None:
|
||||||
_limit = 20 ## TODO set to user defaults
|
_limit = 20 ## TODO set to user defaults
|
||||||
if _set < 1:
|
if _set < 1:
|
||||||
@@ -69,7 +85,13 @@ def search(request, query=None, _set=1, _limit=None):
|
|||||||
return render(
|
return render(
|
||||||
request,
|
request,
|
||||||
"search.html",
|
"search.html",
|
||||||
{"Books": _r, "Query": query, "Set": _set, "len_results": search_len},
|
{
|
||||||
|
"Books": _r,
|
||||||
|
"Query": query,
|
||||||
|
"Set": _set,
|
||||||
|
"len_results": search_len,
|
||||||
|
"Version": config.VERSION
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user