Add working directory field in options form

This commit is contained in:
Benoît Seignovert 2024-02-26 14:35:30 +01:00
parent 0273f449b8
commit c67e8742c8
Signed by: Benoît Seignovert
GPG key ID: F5D8895227D18A0B
8 changed files with 71 additions and 8 deletions

View file

@ -3,7 +3,7 @@
from jinja2 import Environment, PackageLoader, select_autoescape
from .micromamba import get_envs
from .resources import CPU, GPU_DEFAULTS, MEMORY, gpu_max_duration
from .resources import CPU, GPU_DEFAULTS, MEMORY, get_folders, gpu_max_duration
from .slurm import gres, sinfo
TEMPLATES = Environment(
@ -21,6 +21,7 @@ def options_attrs(username: str) -> dict:
return {
'username': username,
'folders': get_folders(username),
'envs': get_envs(username),
'cpus': CPU,
'mems': MEMORY,
@ -38,6 +39,7 @@ def options_form(username: str) -> str:
def options_from_form(formdata) -> dict:
"""Export options from default form."""
# Parse form data response
workdir = formdata['workdir'][0]
env = formdata['python-env'][0]
cpu = int(formdata['cpu'][0])
mem = int(formdata['mem'][0])
@ -52,6 +54,7 @@ def options_from_form(formdata) -> dict:
# Export options
options = {
'workdir': workdir,
'pyenv': env,
'nprocs': cpu,
'memory': f'{mem}GB',

View file

@ -37,3 +37,15 @@ def gpu_max_duration(gpus: list, unknown_default=1) -> dict:
defaults = {gpu: duration for gpu, duration in GPU_DEFAULTS.items() if gpu in gpus}
unknowns = {gpu: unknown_default for gpu in gpus if gpu not in GPU_DEFAULTS}
return defaults | unknowns
def get_folders(username: str) -> list:
"""List of folders accessible to the users as a working directory."""
return [
f'/home/{username}',
f'/scratch/nautilus/users/{username}',
f'/scratch/waves/users/{username}',
'/scratch/nautilus/projects',
'/scratch/waves/projects',
'/LAB-DATA/',
]

View file

@ -5,6 +5,7 @@
<div class="form-horizontal">
{% include "views/username.jinja" %}
{% include "views/chdir.jinja" %}
{% include "views/envs.jinja" %}
{% include "views/resources.jinja" %}
{% include "views/slurm.jinja" %}

View file

@ -0,0 +1,13 @@
<div class="form-group">
<label for="workdir" class="col-sm-3 control-label">Working directory:</label>
<div class="col-sm-9">
<div class="input-group">
<div class="input-group-addon"><span class="fa fa-briefcase"></span></div>
<select class="form-control" name="workdir">
{%- for folder in folders -%}
<option value="{{ folder }}">{{ folder }}</option>
{% endfor -%}
</select>
</div>
</div>
</div>

View file

@ -1,10 +1,13 @@
<div class="form-group">
<label for="python-env" class="col-sm-3 control-label">Python environment:</label>
<div class="col-sm-9">
<select class="form-control" name="python-env">
{%- for pyenv in envs -%}
<option value="{{ pyenv.path }}">{{ pyenv.name }} ({{ pyenv.scope | upper }})</option>
{% endfor -%}
</select>
<div class="input-group">
<div class="input-group-addon"><span class="fa fa-bar-chart"></span></div>
<select class="form-control" name="python-env">
{%- for pyenv in envs -%}
<option value="{{ pyenv.path }}">{{ pyenv.name }} ({{ pyenv.scope | upper }})</option>
{% endfor -%}
</select>
</div>
</div>
</div>