diff --git a/lib/galaxy/datatypes/test/YbCuAs2.den_fmt b/lib/galaxy/datatypes/test/YbCuAs2.den_fmt
new file mode 100644
index 00000000000..febd3b42025
--- /dev/null
+++ b/lib/galaxy/datatypes/test/YbCuAs2.den_fmt
@@ -0,0 +1,14 @@
+ BEGIN header
+
+ Real Lattice(A) Lattice parameters(A) Cell Angles
+ 3.8420000 0.0000000 0.0000000 a = 3.842000 alpha = 90.000000
+ 0.0000000 3.8420000 0.0000000 b = 3.842000 beta = 90.000000
+ 0.0000000 0.0000000 9.7430000 c = 9.743000 gamma = 90.000000
+
+ 2 ! nspins
+ 32 32 90 ! fine FFT grid along
+ END header: data is " charge spin" in units of electrons/grid_point * nu
+ mber of grid_points
+
+ 1 1 1 47.798968 0.000070
+
diff --git a/lib/galaxy/datatypes/text.py b/lib/galaxy/datatypes/text.py
index 2121d2aeed5..ecd579db9af 100644
--- a/lib/galaxy/datatypes/text.py
+++ b/lib/galaxy/datatypes/text.py
@@ -1393,6 +1393,9 @@ class FormattedDensity(Text):
>>> fname = get_test_fname('Si.den_fmt')
>>> FormattedDensity().sniff(fname)
True
+ >>> fname = get_test_fname('YbCuAs2.den_fmt')
+ >>> FormattedDensity().sniff(fname)
+ True
>>> fname = get_test_fname('Si.param')
>>> FormattedDensity().sniff(fname)
False
@@ -1400,6 +1403,11 @@ class FormattedDensity(Text):
begin_header = "BEGIN header"
end_header = 'END header: data is " charge" in units of electrons/grid_point * number'
grid_points = "of grid_points"
+ end_header_spin = 'END header: data is " charge spin" in units of electrons/grid_point * nu'
+ grid_points_spin = "mber of grid_points"
handle = file_prefix.string_io()
lines = handle.readlines()
- return lines[0].strip() == begin_header and lines[9].strip() == end_header and lines[10].strip() == grid_points
+ return lines[0].strip() == begin_header and (
+ (lines[9].strip() == end_header and lines[10].strip() == grid_points)
+ or (lines[9].strip() == end_header_spin and lines[10].strip() == grid_points_spin)
+ )
diff --git a/lib/galaxy/webapps/galaxy/controllers/page.py b/lib/galaxy/webapps/galaxy/controllers/page.py
index c039fe1ef04..b985580db95 100644
--- a/lib/galaxy/webapps/galaxy/controllers/page.py
+++ b/lib/galaxy/webapps/galaxy/controllers/page.py
@@ -375,8 +375,9 @@ class PageController(BaseUIController, SharableMixin, UsesStoredWorkflowMixin, U
operation = kwargs["operation"].lower()
ids = util.listify(kwargs["id"])
for id in ids:
- item = session.query(model.Page).get(self.decode_id(id))
if operation == "delete":
+ item = session.query(model.Page).get(self.decode_id(id))
+ self.security_check(trans, item, check_ownership=True)
item.deleted = True
session.flush()
@@ -478,6 +479,7 @@ class PageController(BaseUIController, SharableMixin, UsesStoredWorkflowMixin, U
decoded_id = self.decode_id(id)
user = trans.get_user()
p = trans.sa_session.query(model.Page).get(decoded_id)
+ p = self.security_check(trans, p, check_ownership=True)
if trans.request.method == "GET":
if p.slug is None:
self.slug_builder.create_item_slug(trans.sa_session, p)
diff --git a/lib/galaxy/webapps/galaxy/controllers/visualization.py b/lib/galaxy/webapps/galaxy/controllers/visualization.py
index 248b777ef90..6a06b54b9e8 100644
--- a/lib/galaxy/webapps/galaxy/controllers/visualization.py
+++ b/lib/galaxy/webapps/galaxy/controllers/visualization.py
@@ -362,8 +362,8 @@ class VisualizationController(
operation = kwargs["operation"].lower()
ids = util.listify(kwargs["id"])
for id in ids:
- item = session.query(model.Visualization).get(self.decode_id(id))
if operation == "delete":
+ item = self.get_visualization(trans, id)
item.deleted = True
if operation == "copy":
self.copy(trans, **kwargs)
@@ -404,7 +404,7 @@ class VisualizationController(
@web.expose
@web.require_login()
def copy(self, trans, id, **kwargs):
- visualization = self.get_visualization(trans, id, check_ownership=False)
+ visualization = self.get_visualization(trans, id, check_ownership=False, check_accessible=True)
user = trans.get_user()
owner = visualization.user == user
new_title = f"Copy of '{visualization.title}'"
@@ -452,7 +452,7 @@ class VisualizationController(
# Do import.
session = trans.sa_session
- visualization = self.get_visualization(trans, id, check_ownership=False)
+ visualization = self.get_visualization(trans, id, check_ownership=False, check_accessible=True)
if visualization.importable is False:
return trans.show_error_message(
f"The owner of this visualization has disabled imports via this link.
You can {referer_message}",