save startup blend for animation tab & whatnot
This commit is contained in:
2026-04-08 12:10:18 -06:00
parent 57a652524a
commit 692e200ffe
180 changed files with 12336 additions and 3431 deletions
@@ -23,13 +23,24 @@ import random
import secrets
import string
import time
import uuid
from urllib.parse import quote as urlquote
from webbrowser import open_new_tab
import bpy
from bpy.props import BoolProperty
from . import client_lib, client_tasks, datas, global_vars, reports, tasks_queue, utils
from . import (
client_lib,
client_tasks,
datas,
global_vars,
reports,
search_price,
tasks_queue,
utils,
)
if bpy.app.version >= (4, 2, 0):
from . import override_extension_draw
@@ -104,6 +115,7 @@ def clean_login_data():
preferences.api_key = ""
preferences.api_key_timeout = 0
global_vars.BKIT_PROFILE = datas.MineProfile()
search_price.clear_price_cache()
# Cleanup also the api key in the extensions repository setting and clean the cache
if bpy.app.version >= (4, 2, 0):
override_extension_draw.ensure_repository(api_key="")
@@ -128,14 +140,19 @@ def login(signup: bool) -> None:
code_verifier, code_challenge = generate_pkce_pair()
state = secrets.token_urlsafe()
client_lib.send_oauth_verification_data(code_verifier, state)
authorize_url = f"/o/authorize?client_id={CLIENT_ID}&response_type=code&state={state}&redirect_uri={redirect_URI}&code_challenge={code_challenge}&code_challenge_method=S256"
system_id = get_system_id()
authorize_url = (
f"/o/authorize?client_id={CLIENT_ID}&response_type=code&state={state}"
f"&redirect_uri={redirect_URI}&code_challenge={code_challenge}"
f"&code_challenge_method=S256&system_id={system_id}"
)
if signup:
authorize_url = urlquote(authorize_url)
authorize_url = f"{global_vars.SERVER}/accounts/register/?next={authorize_url}"
else:
authorize_url = f"{global_vars.SERVER}{authorize_url}"
ok = open_new_tab(authorize_url)
bk_logger.info(f"Login page in browser opened ({ok})")
bk_logger.info("Login page in browser opened (%s)", ok)
def generate_pkce_pair() -> tuple[str, str]:
@@ -151,12 +168,17 @@ def generate_pkce_pair() -> tuple[str, str]:
return code_verifier, code_challenge
def get_system_id() -> str:
return f"{uuid.getnode():015d}"
def write_tokens(auth_token, refresh_token, oauth_response):
preferences = bpy.context.preferences.addons[__package__].preferences
preferences.api_key_timeout = int(time.time() + oauth_response["expires_in"])
preferences.login_attempt = False
preferences.api_key_refresh = refresh_token
preferences.api_key = auth_token # triggers api_key update function
search_price.clear_price_cache()
# write token also to extensions repository setting and clear the cache
if bpy.app.version >= (4, 2, 0):
override_extension_draw.ensure_repository(api_key=auth_token)