Fixes #1262 - Do not allow to delete the default server group.
parent
79d5e33955
commit
afcb62cfd6
|
@ -27,14 +27,17 @@ class ServerGroupModule(BrowserPluginModule):
|
||||||
|
|
||||||
def get_nodes(self, *arg, **kwargs):
|
def get_nodes(self, *arg, **kwargs):
|
||||||
"""Return a JSON document listing the server groups for the user"""
|
"""Return a JSON document listing the server groups for the user"""
|
||||||
groups = ServerGroup.query.filter_by(user_id=current_user.id)
|
groups = ServerGroup.query.filter_by(
|
||||||
for group in groups:
|
user_id=current_user.id
|
||||||
|
).order_by("id")
|
||||||
|
for idx, group in enumerate(groups):
|
||||||
yield self.generate_browser_node(
|
yield self.generate_browser_node(
|
||||||
"%d" % (group.id), None,
|
"%d" % (group.id), None,
|
||||||
group.name,
|
group.name,
|
||||||
"icon-%s" % self.node_type,
|
"icon-%s" % self.node_type,
|
||||||
True,
|
True,
|
||||||
self.node_type
|
self.node_type,
|
||||||
|
can_delete=True if idx > 0 else False
|
||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -107,8 +110,14 @@ class ServerGroupView(NodeView):
|
||||||
def delete(self, gid):
|
def delete(self, gid):
|
||||||
"""Delete a server group node in the settings database"""
|
"""Delete a server group node in the settings database"""
|
||||||
|
|
||||||
|
groups = ServerGroup.query.filter_by(
|
||||||
|
user_id=current_user.id
|
||||||
|
).order_by("id")
|
||||||
|
|
||||||
# if server group id is 1 we won't delete it.
|
# if server group id is 1 we won't delete it.
|
||||||
if gid == 1:
|
sg = groups.first()
|
||||||
|
|
||||||
|
if sg.id == gid:
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
status=417,
|
status=417,
|
||||||
success=0,
|
success=0,
|
||||||
|
@ -118,11 +127,9 @@ class ServerGroupView(NodeView):
|
||||||
)
|
)
|
||||||
|
|
||||||
# There can be only one record at most
|
# There can be only one record at most
|
||||||
servergroup = ServerGroup.query.filter_by(
|
sg = groups.filter_by(id=gid).first()
|
||||||
user_id=current_user.id,
|
|
||||||
id=gid)
|
|
||||||
|
|
||||||
if servergroup is None:
|
if sg is None:
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
status=417,
|
status=417,
|
||||||
success=0,
|
success=0,
|
||||||
|
@ -132,8 +139,7 @@ class ServerGroupView(NodeView):
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
for sg in servergroup:
|
db.session.delete(sg)
|
||||||
db.session.delete(sg)
|
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return make_json_response(
|
return make_json_response(
|
||||||
|
@ -225,7 +231,8 @@ class ServerGroupView(NodeView):
|
||||||
sg.name,
|
sg.name,
|
||||||
"icon-%s" % self.node_type,
|
"icon-%s" % self.node_type,
|
||||||
True,
|
True,
|
||||||
self.node_type
|
self.node_type,
|
||||||
|
can_delete=True # This is user created hence can deleted
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
@ -49,10 +49,10 @@ function($, _, pgAdmin, Backbone) {
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
canDrop: function(itemData, item, data) {
|
canDrop: function(itemData, item, data) {
|
||||||
if(itemData._id == 1) {
|
if(itemData.can_delete) {
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
return true;
|
return false;
|
||||||
},
|
},
|
||||||
canDelete: function(i) {
|
canDelete: function(i) {
|
||||||
var s = pgAdmin.Browser.tree.siblings(i, true);
|
var s = pgAdmin.Browser.tree.siblings(i, true);
|
||||||
|
|
Loading…
Reference in New Issue