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
|
from sqlalchemy import func
|
||||||
import time
|
import time
|
||||||
|
|
||||||
|
|
||||||
@click.command("init_db")
|
@click.command("init_db")
|
||||||
@click.argument('drop_tables', nargs=1)
|
@click.argument('drop_tables', nargs=1)
|
||||||
@with_appcontext
|
@with_appcontext
|
||||||
|
@ -3,7 +3,9 @@ from flask import (
|
|||||||
send_file,
|
send_file,
|
||||||
g,
|
g,
|
||||||
redirect,
|
redirect,
|
||||||
url_for
|
url_for,
|
||||||
|
make_response,
|
||||||
|
abort
|
||||||
)
|
)
|
||||||
from flask_user import login_required
|
from flask_user import login_required
|
||||||
from app.models import CharacterInfo
|
from app.models import CharacterInfo
|
||||||
@ -12,6 +14,7 @@ import os
|
|||||||
from wand import image
|
from wand import image
|
||||||
from wand.exceptions import BlobError as BE
|
from wand.exceptions import BlobError as BE
|
||||||
import pathlib
|
import pathlib
|
||||||
|
import json
|
||||||
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import xml.etree.ElementTree as ET
|
import xml.etree.ElementTree as ET
|
||||||
@ -123,6 +126,43 @@ def get_icon_iconid(id):
|
|||||||
return send_file(pathlib.Path(cache).resolve())
|
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')
|
@luclient_blueprint.route('/unknown')
|
||||||
@login_required
|
@login_required
|
||||||
def unknown():
|
def unknown():
|
||||||
|
@ -197,11 +197,11 @@ def get(status="all"):
|
|||||||
if status == "approved":
|
if status == "approved":
|
||||||
query = db.session.query().select_from(Property).join(
|
query = db.session.query().select_from(Property).join(
|
||||||
CharacterInfo, CharacterInfo.id == Property.owner_id
|
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":
|
elif status == "unapproved":
|
||||||
query = db.session.query().select_from(Property).join(
|
query = db.session.query().select_from(Property).join(
|
||||||
CharacterInfo, CharacterInfo.id == Property.owner_id
|
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:
|
else:
|
||||||
query = db.session.query().select_from(Property).join(CharacterInfo, CharacterInfo.id == Property.owner_id).join(Account)
|
query = db.session.query().select_from(Property).join(CharacterInfo, CharacterInfo.id == Property.owner_id).join(Account)
|
||||||
|
|
||||||
|
@ -469,14 +469,14 @@
|
|||||||
this.Parts = []
|
this.Parts = []
|
||||||
this.studsFields2D = []
|
this.studsFields2D = []
|
||||||
let lod = {{ lod }}
|
let lod = {{ lod }}
|
||||||
let GeometryLocation = `lod${lod}/${designID}.g`
|
let GeometryLocation = `brickprimitives/lod${lod}/${designID}.g`
|
||||||
let PrimitiveLocation = `${designID}.xml`
|
let PrimitiveLocation = `Primitives/${designID}.xml`
|
||||||
|
|
||||||
let GeometryCount = 0
|
let GeometryCount = 0
|
||||||
while (GeometryLocation in database.filelist) {
|
while (GeometryLocation in database.filelist) {
|
||||||
this.Parts[GeometryCount] = new GeometryReader(database.filelist[GeometryLocation].read())
|
this.Parts[GeometryCount] = new GeometryReader(database.filelist[GeometryLocation].read())
|
||||||
GeometryCount = GeometryCount + 1
|
GeometryCount = GeometryCount + 1
|
||||||
GeometryLocation = `lod${lod}/${designID}.g${GeometryCount}`
|
GeometryLocation = `brickprimitives/lod${lod}/${designID}.g${GeometryCount}`
|
||||||
}
|
}
|
||||||
let primitive = new Primitive(database.filelist[PrimitiveLocation].read())
|
let primitive = new Primitive(database.filelist[PrimitiveLocation].read())
|
||||||
this.Partname = primitive.Designname
|
this.Partname = primitive.Designname
|
||||||
@ -549,7 +549,7 @@
|
|||||||
|
|
||||||
LoadDBURL(dbURLlocation){
|
LoadDBURL(dbURLlocation){
|
||||||
this.database = new DBURLReader(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())
|
this.allMaterials = new Materials(this.database.filelist['Materials.xml'].read())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -881,7 +881,6 @@
|
|||||||
|
|
||||||
|
|
||||||
class Materials {
|
class Materials {
|
||||||
//done
|
|
||||||
constructor(data) {
|
constructor(data) {
|
||||||
this.Materials = {}
|
this.Materials = {}
|
||||||
let parser = new DOMParser();
|
let parser = new DOMParser();
|
||||||
@ -928,13 +927,11 @@
|
|||||||
|
|
||||||
|
|
||||||
function FindDBURL(){
|
function FindDBURL(){
|
||||||
let dburl = 'https://json.aronwk.com/LDD-DB/'
|
let dburl = '/luclient/ldddb/'
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
xhr.open('GET', dburl, false); // `false` makes the request synchronous
|
xhr.open('GET', dburl, false); // `false` makes the request synchronous
|
||||||
|
|
||||||
// request state change event
|
// request state change event
|
||||||
xhr.onreadystatechange = function() {
|
xhr.onreadystatechange = function() {
|
||||||
|
|
||||||
// request completed?
|
// request completed?
|
||||||
if (xhr.readyState !== 4) {//return;
|
if (xhr.readyState !== 4) {//return;
|
||||||
dburl = false;
|
dburl = false;
|
||||||
@ -950,7 +947,6 @@
|
|||||||
console.log('HTTP error in FindDBURL:', xhr.status, xhr.statusText);
|
console.log('HTTP error in FindDBURL:', xhr.status, xhr.statusText);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// start request
|
// start request
|
||||||
xhr.send();
|
xhr.send();
|
||||||
return dburl
|
return dburl
|
||||||
@ -1041,14 +1037,8 @@
|
|||||||
self.parse(dburl + obj.name + '/', obj.name)
|
self.parse(dburl + obj.name + '/', obj.name)
|
||||||
}
|
}
|
||||||
else if (obj.type == 'file'){
|
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)
|
self.filelist[obj.name] = new DBURLFile(dburl + obj.name, obj.name)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
console.log('Strange object parsed: ' + obj.type)
|
console.log('Strange object parsed: ' + obj.type)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user