diff --git a/client/src/components/Form/FormElement.vue b/client/src/components/Form/FormElement.vue
index 4645ad6a5a8..29b2b2b8e8e 100644
--- a/client/src/components/Form/FormElement.vue
+++ b/client/src/components/Form/FormElement.vue
@@ -272,7 +272,7 @@ const isOptional = computed(() => !isRequired.value && attrs.value["optional"] !
:id="props.id"
v-model="currentValue"
:data-label="props.title"
- :type="props.type ?? 'text'"
+ :type="props.type ?? (attrs.options ? 'select' : 'text')"
:attributes="attrs" />
diff --git a/lib/galaxy/webapps/galaxy/controllers/admin.py b/lib/galaxy/webapps/galaxy/controllers/admin.py
index 542b2cc6c53..ed5b4fe9096 100644
--- a/lib/galaxy/webapps/galaxy/controllers/admin.py
+++ b/lib/galaxy/webapps/galaxy/controllers/admin.py
@@ -408,6 +408,15 @@ class QuotaListGrid(grids.Grid):
return len(quota.groups)
return 0
+ class QuotaSourceLabelColumn(grids.TextColumn):
+ def get_value(self, trans, grid, quota):
+ raw_label = quota.quota_source_label
+ if raw_label is None:
+ rval = "unlabelled object stores"
+ else:
+ rval = raw_label
+ return rval
+
# Grid definition
title = "Quotas"
model_class = model.Quota
@@ -427,6 +436,7 @@ class QuotaListGrid(grids.Grid):
AmountColumn("Amount", key="amount", model_class=model.Quota, attach_popup=False),
UsersColumn("Users", attach_popup=False),
GroupsColumn("Groups", attach_popup=False),
+ QuotaSourceLabelColumn("Source Label", key="quota_source_label", visible=False, filterable="advanced"),
StatusColumn("Status", attach_popup=False),
# Columns that are valid for filtering but are not visible.
grids.DeletedColumn("Deleted", key="deleted", visible=False, filterable="advanced"),
@@ -690,6 +700,9 @@ class AdminGalaxy(controller.JSAppLauncher):
if message:
kwargs["message"] = util.sanitize_text(message)
kwargs["status"] = status or "done"
+ labels = trans.app.object_store.get_quota_source_map().get_quota_source_labels()
+ if labels:
+ self.quota_list_grid.columns[5].visible = True
return self.quota_list_grid(trans, **kwargs)
@web.legacy_expose_api
@@ -699,7 +712,7 @@ class AdminGalaxy(controller.JSAppLauncher):
all_users = []
all_groups = []
labels = trans.app.object_store.get_quota_source_map().get_quota_source_labels()
- label_options = [("Default Quota", None)]
+ label_options = [("Default Quota", "__default__")]
label_options.extend([(label, label) for label in labels])
for user in (
trans.sa_session.query(trans.app.model.User)
@@ -752,6 +765,9 @@ class AdminGalaxy(controller.JSAppLauncher):
return rval
else:
try:
+ quota_source_label = payload.get("quota_source_label")
+ if quota_source_label == "__default__":
+ payload["quota_source_label"] = None
quota, message = self.quota_manager.create_quota(payload, decode_id=trans.security.decode_id)
return {"message": message}
except ActionInputError as e: