Updated generation pages.
This commit is contained in:
@@ -70,18 +70,24 @@ def register_routes(app):
|
||||
detailer_obj = _resolve_preset_entity('detailer', detailer_cfg.get('detailer_id'))
|
||||
look_obj = _resolve_preset_entity('look', look_cfg.get('look_id'))
|
||||
|
||||
# Checkpoint: preset override or session default
|
||||
preset_ckpt = ckpt_cfg.get('checkpoint_path')
|
||||
if preset_ckpt == 'random':
|
||||
ckpt_obj = Checkpoint.query.order_by(db.func.random()).first()
|
||||
ckpt_path = ckpt_obj.checkpoint_path if ckpt_obj else None
|
||||
ckpt_data = ckpt_obj.data if ckpt_obj else None
|
||||
elif preset_ckpt:
|
||||
ckpt_obj = Checkpoint.query.filter_by(checkpoint_path=preset_ckpt).first()
|
||||
ckpt_path = preset_ckpt
|
||||
# Checkpoint: form override > preset config > session default
|
||||
checkpoint_override = request.form.get('checkpoint_override', '').strip()
|
||||
if checkpoint_override:
|
||||
ckpt_obj = Checkpoint.query.filter_by(checkpoint_path=checkpoint_override).first()
|
||||
ckpt_path = checkpoint_override
|
||||
ckpt_data = ckpt_obj.data if ckpt_obj else None
|
||||
else:
|
||||
ckpt_path, ckpt_data = _get_default_checkpoint()
|
||||
preset_ckpt = ckpt_cfg.get('checkpoint_path')
|
||||
if preset_ckpt == 'random':
|
||||
ckpt_obj = Checkpoint.query.order_by(db.func.random()).first()
|
||||
ckpt_path = ckpt_obj.checkpoint_path if ckpt_obj else None
|
||||
ckpt_data = ckpt_obj.data if ckpt_obj else None
|
||||
elif preset_ckpt:
|
||||
ckpt_obj = Checkpoint.query.filter_by(checkpoint_path=preset_ckpt).first()
|
||||
ckpt_path = preset_ckpt
|
||||
ckpt_data = ckpt_obj.data if ckpt_obj else None
|
||||
else:
|
||||
ckpt_path, ckpt_data = _get_default_checkpoint()
|
||||
|
||||
# Resolve selected fields from preset toggles
|
||||
selected_fields = _resolve_preset_fields(data)
|
||||
@@ -107,7 +113,8 @@ def register_routes(app):
|
||||
extras_parts = []
|
||||
if action_obj:
|
||||
action_fields = action_cfg.get('fields', {})
|
||||
for key in ['full_body', 'additional', 'head', 'eyes', 'arms', 'hands']:
|
||||
from utils import _BODY_GROUP_KEYS
|
||||
for key in _BODY_GROUP_KEYS:
|
||||
val_cfg = action_fields.get(key, True)
|
||||
if val_cfg == 'random':
|
||||
val_cfg = random.choice([True, False])
|
||||
@@ -172,6 +179,23 @@ def register_routes(app):
|
||||
seed_val = request.form.get('seed', '').strip()
|
||||
fixed_seed = int(seed_val) if seed_val else None
|
||||
|
||||
# Resolution: form override > preset config > workflow default
|
||||
res_cfg = data.get('resolution', {})
|
||||
form_width = request.form.get('width', '').strip()
|
||||
form_height = request.form.get('height', '').strip()
|
||||
if form_width and form_height:
|
||||
gen_width = int(form_width)
|
||||
gen_height = int(form_height)
|
||||
elif res_cfg.get('random', False):
|
||||
_RES_OPTIONS = [
|
||||
(1024, 1024), (1152, 896), (896, 1152), (1344, 768),
|
||||
(768, 1344), (1280, 800), (800, 1280),
|
||||
]
|
||||
gen_width, gen_height = random.choice(_RES_OPTIONS)
|
||||
else:
|
||||
gen_width = res_cfg.get('width') or None
|
||||
gen_height = res_cfg.get('height') or None
|
||||
|
||||
workflow = _prepare_workflow(
|
||||
workflow, character, prompts,
|
||||
checkpoint=ckpt_path, checkpoint_data=ckpt_data,
|
||||
@@ -183,6 +207,8 @@ def register_routes(app):
|
||||
detailer=detailer_obj if detailer_cfg.get('use_lora', True) else None,
|
||||
look=look_obj,
|
||||
fixed_seed=fixed_seed,
|
||||
width=gen_width,
|
||||
height=gen_height,
|
||||
)
|
||||
|
||||
label = f"Preset: {preset.name} – {action}"
|
||||
@@ -258,13 +284,13 @@ def register_routes(app):
|
||||
'use_lora': request.form.get('char_use_lora') == 'on',
|
||||
'fields': {
|
||||
'identity': {k: _tog(request.form.get(f'id_{k}', 'true'))
|
||||
for k in ['base_specs', 'hair', 'eyes', 'hands', 'arms', 'torso', 'pelvis', 'legs', 'feet', 'extra']},
|
||||
for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']},
|
||||
'defaults': {k: _tog(request.form.get(f'def_{k}', 'false'))
|
||||
for k in ['expression', 'pose', 'scene']},
|
||||
'wardrobe': {
|
||||
'outfit': request.form.get('wardrobe_outfit', 'default') or 'default',
|
||||
'fields': {k: _tog(request.form.get(f'wd_{k}', 'true'))
|
||||
for k in ['full_body', 'headwear', 'top', 'bottom', 'legwear', 'footwear', 'hands', 'gloves', 'accessories']},
|
||||
for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -273,7 +299,7 @@ def register_routes(app):
|
||||
'action': {'action_id': _entity_id(request.form.get('action_id')),
|
||||
'use_lora': request.form.get('action_use_lora') == 'on',
|
||||
'fields': {k: _tog(request.form.get(f'act_{k}', 'true'))
|
||||
for k in ['full_body', 'additional', 'head', 'eyes', 'arms', 'hands']}},
|
||||
for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']}},
|
||||
'style': {'style_id': _entity_id(request.form.get('style_id')),
|
||||
'use_lora': request.form.get('style_use_lora') == 'on'},
|
||||
'scene': {'scene_id': _entity_id(request.form.get('scene_id')),
|
||||
@@ -284,6 +310,11 @@ def register_routes(app):
|
||||
'use_lora': request.form.get('detailer_use_lora') == 'on'},
|
||||
'look': {'look_id': _entity_id(request.form.get('look_id'))},
|
||||
'checkpoint': {'checkpoint_path': _entity_id(request.form.get('checkpoint_path'))},
|
||||
'resolution': {
|
||||
'width': int(request.form.get('res_width', 1024)),
|
||||
'height': int(request.form.get('res_height', 1024)),
|
||||
'random': request.form.get('res_random') == 'on',
|
||||
},
|
||||
'tags': [t.strip() for t in request.form.get('tags', '').split(',') if t.strip()],
|
||||
}
|
||||
|
||||
@@ -399,20 +430,21 @@ def register_routes(app):
|
||||
preset_data = {
|
||||
'character': {'character_id': 'random', 'use_lora': True,
|
||||
'fields': {
|
||||
'identity': {k: True for k in ['base_specs', 'hair', 'eyes', 'hands', 'arms', 'torso', 'pelvis', 'legs', 'feet', 'extra']},
|
||||
'identity': {k: True for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']},
|
||||
'defaults': {k: False for k in ['expression', 'pose', 'scene']},
|
||||
'wardrobe': {'outfit': 'default',
|
||||
'fields': {k: True for k in ['full_body', 'headwear', 'top', 'bottom', 'legwear', 'footwear', 'hands', 'gloves', 'accessories']}},
|
||||
'fields': {k: True for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']}},
|
||||
}},
|
||||
'outfit': {'outfit_id': None, 'use_lora': True},
|
||||
'action': {'action_id': None, 'use_lora': True,
|
||||
'fields': {k: True for k in ['full_body', 'additional', 'head', 'eyes', 'arms', 'hands']}},
|
||||
'fields': {k: True for k in ['base', 'head', 'upper_body', 'lower_body', 'hands', 'feet', 'additional']}},
|
||||
'style': {'style_id': None, 'use_lora': True},
|
||||
'scene': {'scene_id': None, 'use_lora': True,
|
||||
'fields': {k: True for k in ['background', 'foreground', 'furniture', 'colors', 'lighting', 'theme']}},
|
||||
'detailer': {'detailer_id': None, 'use_lora': True},
|
||||
'look': {'look_id': None},
|
||||
'checkpoint': {'checkpoint_path': None},
|
||||
'resolution': {'width': 1024, 'height': 1024, 'random': False},
|
||||
'tags': [],
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user