mirror of
https://github.com/DarkflameUniverse/NexusDashboard.git
synced 2024-11-22 05:27:25 +00:00
Merge pull request #32 from DarkflameUniverse/local-ldd-db
Local ldd db
This commit is contained in:
commit
3668ca8792
@ -16,6 +16,7 @@ from functools import partial
|
||||
from sqlalchemy import func
|
||||
import time
|
||||
|
||||
|
||||
@click.command("init_db")
|
||||
@click.argument('drop_tables', nargs=1)
|
||||
@with_appcontext
|
||||
|
@ -3,7 +3,9 @@ from flask import (
|
||||
send_file,
|
||||
g,
|
||||
redirect,
|
||||
url_for
|
||||
url_for,
|
||||
make_response,
|
||||
abort
|
||||
)
|
||||
from flask_user import login_required
|
||||
from app.models import CharacterInfo
|
||||
@ -12,6 +14,7 @@ import os
|
||||
from wand import image
|
||||
from wand.exceptions import BlobError as BE
|
||||
import pathlib
|
||||
import json
|
||||
|
||||
import sqlite3
|
||||
import xml.etree.ElementTree as ET
|
||||
@ -123,6 +126,43 @@ def get_icon_iconid(id):
|
||||
return send_file(pathlib.Path(cache).resolve())
|
||||
|
||||
|
||||
@luclient_blueprint.route('/ldddb/')
|
||||
@login_required
|
||||
def brick_list():
|
||||
brick_list = []
|
||||
if len(brick_list) == 0:
|
||||
suffixes = [".g", ".g1", ".g2", ".g3", ".xml"]
|
||||
res = pathlib.Path('app/luclient/res/')
|
||||
# Load g files
|
||||
for path in res.rglob("*.*"):
|
||||
if str(path.suffix) in suffixes:
|
||||
brick_list.append(
|
||||
{
|
||||
"type": "file",
|
||||
"name": str(path.as_posix()).replace("app/luclient/res/", "")
|
||||
}
|
||||
)
|
||||
response = make_response(json.dumps(brick_list))
|
||||
response.headers.set('Content-Type', 'application/json')
|
||||
return response
|
||||
|
||||
|
||||
@luclient_blueprint.route('/ldddb/', defaults={'req_path': ''})
|
||||
@luclient_blueprint.route('/ldddb/<path:req_path>')
|
||||
def dir_listing(req_path):
|
||||
# Joining the base and the requested path
|
||||
rel_path = pathlib.Path(str(pathlib.Path(f'app/luclient/res/{req_path}').resolve()))
|
||||
# Return 404 if path doesn't exist
|
||||
if not rel_path.exists():
|
||||
return abort(404)
|
||||
|
||||
# Check if path is a file and serve
|
||||
if rel_path.is_file():
|
||||
return send_file(rel_path)
|
||||
else:
|
||||
return abort(404)
|
||||
|
||||
|
||||
@luclient_blueprint.route('/unknown')
|
||||
@login_required
|
||||
def unknown():
|
||||
|
@ -197,11 +197,11 @@ def get(status="all"):
|
||||
if status == "approved":
|
||||
query = db.session.query().select_from(Property).join(
|
||||
CharacterInfo, CharacterInfo.id == Property.owner_id
|
||||
).join(Account).filter(Property.mod_approved == True).filter(Property.privacy_option == 2)
|
||||
).join(Account).filter(Property.mod_approved == True).filter(Property.privacy_option == 2) # noqa
|
||||
elif status == "unapproved":
|
||||
query = db.session.query().select_from(Property).join(
|
||||
CharacterInfo, CharacterInfo.id == Property.owner_id
|
||||
).join(Account).filter(Property.mod_approved == False).filter(Property.privacy_option == 2).filter(Property.rejection_reason == "")
|
||||
).join(Account).filter(Property.mod_approved == False).filter(Property.privacy_option == 2).filter(Property.rejection_reason == "") # noqa
|
||||
else:
|
||||
query = db.session.query().select_from(Property).join(CharacterInfo, CharacterInfo.id == Property.owner_id).join(Account)
|
||||
|
||||
|
@ -469,14 +469,14 @@
|
||||
this.Parts = []
|
||||
this.studsFields2D = []
|
||||
let lod = {{ lod }}
|
||||
let GeometryLocation = `lod${lod}/${designID}.g`
|
||||
let PrimitiveLocation = `${designID}.xml`
|
||||
let GeometryLocation = `brickprimitives/lod${lod}/${designID}.g`
|
||||
let PrimitiveLocation = `Primitives/${designID}.xml`
|
||||
|
||||
let GeometryCount = 0
|
||||
while (GeometryLocation in database.filelist) {
|
||||
this.Parts[GeometryCount] = new GeometryReader(database.filelist[GeometryLocation].read())
|
||||
GeometryCount = GeometryCount + 1
|
||||
GeometryLocation = `lod${lod}/${designID}.g${GeometryCount}`
|
||||
GeometryLocation = `brickprimitives/lod${lod}/${designID}.g${GeometryCount}`
|
||||
}
|
||||
let primitive = new Primitive(database.filelist[PrimitiveLocation].read())
|
||||
this.Partname = primitive.Designname
|
||||
@ -549,7 +549,7 @@
|
||||
|
||||
LoadDBURL(dbURLlocation){
|
||||
this.database = new DBURLReader(dbURLlocation)
|
||||
if(this.database.initok && this.database.fileexist('Materials.xml') && this.database.fileexist('localizedStrings.loc')){
|
||||
if(this.database.initok && this.database.fileexist('Materials.xml')){
|
||||
this.allMaterials = new Materials(this.database.filelist['Materials.xml'].read())
|
||||
}
|
||||
}
|
||||
@ -881,7 +881,6 @@
|
||||
|
||||
|
||||
class Materials {
|
||||
//done
|
||||
constructor(data) {
|
||||
this.Materials = {}
|
||||
let parser = new DOMParser();
|
||||
@ -928,13 +927,11 @@
|
||||
|
||||
|
||||
function FindDBURL(){
|
||||
let dburl = 'https://json.aronwk.com/LDD-DB/'
|
||||
let dburl = '/luclient/ldddb/'
|
||||
let xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', dburl, false); // `false` makes the request synchronous
|
||||
|
||||
// request state change event
|
||||
xhr.onreadystatechange = function() {
|
||||
|
||||
// request completed?
|
||||
if (xhr.readyState !== 4) {//return;
|
||||
dburl = false;
|
||||
@ -950,7 +947,6 @@
|
||||
console.log('HTTP error in FindDBURL:', xhr.status, xhr.statusText);
|
||||
}
|
||||
};
|
||||
|
||||
// start request
|
||||
xhr.send();
|
||||
return dburl
|
||||
@ -1041,14 +1037,8 @@
|
||||
self.parse(dburl + obj.name + '/', obj.name)
|
||||
}
|
||||
else if (obj.type == 'file'){
|
||||
|
||||
if (folder.includes("lod")){
|
||||
|
||||
self.filelist[`${folder}/${obj.name}`] = new DBURLFile(dburl + obj.name, obj.name)
|
||||
} else {
|
||||
self.filelist[obj.name] = new DBURLFile(dburl + obj.name, obj.name)
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log('Strange object parsed: ' + obj.type)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user