Experimental App Domain (#43)

Backend App Domain done, Frontend missing

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#43
This commit is contained in:
2025-08-08 20:52:21 +12:00
parent 280ddc7205
commit 579cd519d0
14 changed files with 1094 additions and 574 deletions

View File

@ -103,7 +103,10 @@ def login(request):
else:
context['message'] = "Account has been created! You'll receive a mail to activate your account shortly."
return render(request, 'login.html', context)
else:
return HttpResponseBadRequest()
else:
return HttpResponseNotAllowed(['GET', 'POST'])
def logout(request):
if request.method == 'POST':
@ -136,7 +139,7 @@ def editable(request, user):
f"{s.SERVER_URL}/group", f"{s.SERVER_URL}/search"]:
return True
else:
print(f"Unknown url: {url}")
logger.debug(f"Unknown url: {url}")
return False
@ -584,6 +587,9 @@ def package_models(request, package_uuid):
return render(request, 'collections/objects_list.html', context)
elif request.method == 'POST':
log_post_params(request)
name = request.POST.get('model-name')
description = request.POST.get('model-description')
@ -606,14 +612,25 @@ def package_models(request, package_uuid):
data_package_objs = [PackageManager.get_package_by_url(current_user, p) for p in data_packages]
eval_packages_objs = [PackageManager.get_package_by_url(current_user, p) for p in eval_packages]
# App Domain related parameters
build_ad = request.POST.get('build-app-domain', False) == 'on'
num_neighbors = request.POST.get('num-neighbors', 5)
reliability_threshold = request.POST.get('reliability-threshold', 0.5)
local_compatibility_threshold = request.POST.get('local-compatibility-threshold', 0.5)
mod = MLRelativeReasoning.create(
current_package,
name,
description,
rule_package_objs,
data_package_objs,
eval_packages_objs,
threshold
package=current_package,
name=name,
description=description,
rule_packages=rule_package_objs,
data_packages=data_package_objs,
eval_packages=eval_packages_objs,
threshold=threshold,
# fingerprinter=fingerprinter,
build_app_domain=build_ad,
app_domain_num_neighbours=num_neighbors,
app_domain_reliability_threshold=reliability_threshold,
app_domain_local_compatibility_threshold=local_compatibility_threshold,
)
from .tasks import build_model
@ -649,7 +666,7 @@ def package_model(request, package_uuid, model_uuid):
if len(pr) > 0:
products = []
for prod_set in pr.product_sets:
print(f"Checking {prod_set}")
logger.debug(f"Checking {prod_set}")
products.append(tuple([x for x in prod_set]))
res.append({
@ -660,6 +677,12 @@ def package_model(request, package_uuid, model_uuid):
return JsonResponse(res, safe=False)
elif request.GET.get('app-domain-assessment', False):
smiles = request.GET['smiles']
stand_smiles = FormatConverter.standardize(smiles)
app_domain_assessment = current_model.app_domain.assess(stand_smiles)
return JsonResponse(app_domain_assessment, safe=False)
context = get_base_context(request)
context['title'] = f'enviPath - {current_package.name} - {current_model.name}'
@ -1717,8 +1740,6 @@ def user(request, user_uuid):
}
}
print(setting)
return HttpResponseBadRequest()
else:
@ -1781,9 +1802,7 @@ def group(request, group_uuid):
elif request.method == 'POST':
if s.DEBUG:
for k, v in request.POST.items():
print(k, v)
log_post_params(request)
if hidden := request.POST.get('hidden', None):
if hidden == 'delete-group':