Commit 8ddda8e5 authored by ibuler's avatar ibuler

[Update] 修复页面bug和popover的问题

parent 444f494c
...@@ -33,11 +33,16 @@ class AssetCreateForm(OrgModelForm): ...@@ -33,11 +33,16 @@ class AssetCreateForm(OrgModelForm):
return return
nodes_field = self.fields['nodes'] nodes_field = self.fields['nodes']
if self.instance: if self.instance:
nodes_field.choices = ((n.id, n.full_value) for n in nodes_field.choices = [(n.id, n.full_value) for n in
self.instance.nodes.all()) self.instance.nodes.all()]
else: else:
nodes_field.choices = [] nodes_field.choices = []
def add_nodes_initial(self, node):
nodes_field = self.fields['nodes']
nodes_field.choices.append((node.id, node.full_value))
nodes_field.initial = [node]
class Meta: class Meta:
model = Asset model = Asset
fields = [ fields = [
......
...@@ -37,19 +37,22 @@ class TreeMixin: ...@@ -37,19 +37,22 @@ class TreeMixin:
def tree(cls): def tree(cls):
from ..utils import TreeService from ..utils import TreeService
tree_updated_time = cache.get(cls.tree_updated_time_cache_key, 0) tree_updated_time = cache.get(cls.tree_updated_time_cache_key, 0)
now = time.time()
# 什么时候重新初始化 _tree_service
if not cls.tree_created_time or \ if not cls.tree_created_time or \
tree_updated_time > cls.tree_created_time: tree_updated_time > cls.tree_created_time:
logger.debug("Create node tree") logger.debug("Create node tree")
tree = TreeService.new() tree = TreeService.new()
cls.tree_created_time = time.time() cls.tree_created_time = now
cls.tree_assets_created_time = time.time() cls.tree_assets_created_time = now
cls._tree_service = tree cls._tree_service = tree
return tree return tree
# 是否要重新初始化节点资产
node_assets_updated_time = cache.get(cls.tree_assets_cache_key, 0) node_assets_updated_time = cache.get(cls.tree_assets_cache_key, 0)
if not cls.tree_assets_created_time or \ if not cls.tree_assets_created_time or \
node_assets_updated_time > cls.tree_assets_created_time: node_assets_updated_time > cls.tree_assets_created_time:
cls._tree_service.init_assets_async() cls._tree_service.init_assets()
cls.tree_assets_created_time = time.time() cls.tree_assets_created_time = now
logger.debug("Refresh node tree assets") logger.debug("Refresh node tree assets")
return cls._tree_service return cls._tree_service
......
...@@ -86,7 +86,7 @@ class AssetCreateView(PermissionsMixin, FormMixin, TemplateView): ...@@ -86,7 +86,7 @@ class AssetCreateView(PermissionsMixin, FormMixin, TemplateView):
node = get_object_or_none(Node, id=node_id) node = get_object_or_none(Node, id=node_id)
else: else:
node = Node.org_root() node = Node.org_root()
form["nodes"].initial = node form.add_nodes_initial(node)
return form return form
def get_protocol_formset(self): def get_protocol_formset(self):
......
...@@ -11,6 +11,9 @@ ...@@ -11,6 +11,9 @@
#search_btn { #search_btn {
margin-bottom: 0; margin-bottom: 0;
} }
.form-control {
height: 30px;
}
</style> </style>
{% endblock %} {% endblock %}
......
...@@ -8,6 +8,12 @@ ...@@ -8,6 +8,12 @@
#search_btn { #search_btn {
margin-bottom: 0; margin-bottom: 0;
} }
.form-control {
height: 30px;
}
.select2-selection__rendered span.select2-selection, .select2-container .select2-selection--single {
height: 30px !important;
}
</style> </style>
{% endblock %} {% endblock %}
......
...@@ -11,6 +11,12 @@ ...@@ -11,6 +11,12 @@
#search_btn { #search_btn {
margin-bottom: 0; margin-bottom: 0;
} }
.form-control {
height: 30px;
}
.select2-selection__rendered span.select2-selection, .select2-container .select2-selection--single {
height: 30px !important;
}
</style> </style>
{% endblock %} {% endblock %}
......
...@@ -11,6 +11,12 @@ ...@@ -11,6 +11,12 @@
#search_btn { #search_btn {
margin-bottom: 0; margin-bottom: 0;
} }
.form-control {
height: 30px;
}
.select2-selection__rendered span.select2-selection, .select2-container .select2-selection--single {
height: 30px !important;
}
</style> </style>
{% endblock %} {% endblock %}
......
...@@ -44,8 +44,9 @@ class IDInCacheFilterMixin(object): ...@@ -44,8 +44,9 @@ class IDInCacheFilterMixin(object):
return queryset return queryset
cache_key = KEY_CACHE_RESOURCES_ID.format(spm) cache_key = KEY_CACHE_RESOURCES_ID.format(spm)
resources_id = cache.get(cache_key) resources_id = cache.get(cache_key)
if resources_id and isinstance(resources_id, list): if not resources_id or not isinstance(resources_id, list):
queryset = queryset.filter(id__in=resources_id) queryset = queryset.none()
queryset = queryset.filter(id__in=resources_id)
return queryset return queryset
......
...@@ -40,7 +40,7 @@ def run_ansible_task(tid, callback=None, **kwargs): ...@@ -40,7 +40,7 @@ def run_ansible_task(tid, callback=None, **kwargs):
logger.error("No task found") logger.error("No task found")
@shared_task(soft_time_limit=60) @shared_task(soft_time_limit=60, queue="ansible")
def run_command_execution(cid, **kwargs): def run_command_execution(cid, **kwargs):
execution = get_object_or_none(CommandExecution, id=cid) execution = get_object_or_none(CommandExecution, id=cid)
if execution: if execution:
......
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
<link href="{% static 'css/plugins/select2/select2.min.css' %}" rel="stylesheet"> <link href="{% static 'css/plugins/select2/select2.min.css' %}" rel="stylesheet">
<script src="{% static 'js/plugins/select2/select2.full.min.js' %}"></script> <script src="{% static 'js/plugins/select2/select2.full.min.js' %}"></script>
<style> <style>
.form-control {
height: 30px;
}
#search_btn { #search_btn {
margin-bottom: 0; margin-bottom: 0;
...@@ -88,13 +91,6 @@ ...@@ -88,13 +91,6 @@
<script src="{% static "js/plugins/footable/footable.all.min.js" %}"></script> <script src="{% static "js/plugins/footable/footable.all.min.js" %}"></script>
<script> <script>
$(document).ready(function() { $(document).ready(function() {
{#$('table').DataTable({#}
{# "searching": false,#}
{# "paging": false,#}
{# "bInfo" : false,#}
{# "order": []#}
{# });#}
{#$('.footable').footable();#}
$('.select2').select2({ $('.select2').select2({
dropdownAutoWidth : true, dropdownAutoWidth : true,
width: 'auto' width: 'auto'
...@@ -114,9 +110,10 @@ $(document).ready(function() { ...@@ -114,9 +110,10 @@ $(document).ready(function() {
data_list.pop(); data_list.pop();
} }
var html = createPopover(data_list); var html = createPopover(data_list);
console.log(html);
$(this).html(html); $(this).html(html);
}); });
$('[data-toggle="popover"]').popover(); $('[data-toggle=popover]').popover({html : true});
}) })
</script> </script>
{% endblock %} {% endblock %}
......
...@@ -35,6 +35,10 @@ class OrgBulkModelViewSet(IDInCacheFilterMixin, BulkModelViewSet): ...@@ -35,6 +35,10 @@ class OrgBulkModelViewSet(IDInCacheFilterMixin, BulkModelViewSet):
return queryset return queryset
def allow_bulk_destroy(self, qs, filtered): def allow_bulk_destroy(self, qs, filtered):
if qs.count() <= filtered.count():
return False
if self.request.query_params.get('spm', ''):
return True
return False return False
......
...@@ -76,10 +76,9 @@ $(document).ready(function () { ...@@ -76,10 +76,9 @@ $(document).ready(function () {
if(!$("body").hasClass('body-small')) { if(!$("body").hasClass('body-small')) {
fix_height(); fix_height();
} }
}) });
$("[data-toggle=popover]") $("[data-toggle=popover]").popover();
.popover();
}); });
......
...@@ -774,8 +774,7 @@ function createPopover(dataset, title, callback) { ...@@ -774,8 +774,7 @@ function createPopover(dataset, title, callback) {
}); });
dataset = new_dataset; dataset = new_dataset;
} }
var data_content = dataset.join("</br>"); var data_content = dataset.join("<br>");
var html = "<a data-toggle='popover' data-content='" + data_content + "'>" + dataset.length + "</a>"; var html = "<a data-toggle='popover' data-content='" + data_content + "'>" + dataset.length + "</a>";
return html; return html;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment