diff --git a/templates/dashboard/projects/projects_list.html b/templates/dashboard/projects/projects_list.html index 3344614c..4c808fae 100644 --- a/templates/dashboard/projects/projects_list.html +++ b/templates/dashboard/projects/projects_list.html @@ -3,50 +3,85 @@ {% block body %}
-
-
-
-

Projects List

-
- -
- - - - - - - - - - {% for project in projects %} - - - - - - - +
-
- {% endfor %} -
IDOriginLast Scan TimeTask CountVul CountVendor Count
{{ project.id }} {{ project.project_name }}{{ project.project_origin }}{{ project.last_scan_time }}{{ project.tasks_count }}{{ project.results_count }}{{ project.vendors_count }}
-
- +
- -
- -
+ +
+
+

Search Project

+
+
+ + +
+ + +
+
+
+ +
+ ps: use * to indicate wildcard, just like *test*. + +
+
+ + +
+ +
+ +
+
+
+

Projects List

+
+ +
+ + + + + + + + + + {% for project in projects %} + + + + + + + + + + {% endfor %} +
IDOriginLast Scan TimeTask CountVul CountVendor Count
{{ project.id }} {{ project.project_name }}{{ project.project_origin }}{{ project.last_scan_time }}{{ project.tasks_count }}{{ project.results_count }}{{ project.vendors_count }}
+
+ + + +
+ +
+ {% endblock %} {% block script %} diff --git a/web/dashboard/controller/project.py b/web/dashboard/controller/project.py index 45657d98..df6c2100 100644 --- a/web/dashboard/controller/project.py +++ b/web/dashboard/controller/project.py @@ -26,7 +26,7 @@ from utils.utils import del_sensitive_for_config from web.index.models import ScanTask, ScanResultTask, Rules, Tampers, NewEvilFunc, Project, ProjectVendors, VendorVulns -from web.index.models import get_and_check_scanresult, get_and_check_evil_func +from web.index.models import search_project_by_name class ProjectListView(TemplateView): @@ -36,9 +36,15 @@ class ProjectListView(TemplateView): def get_context_data(self, **kwargs): context = super(ProjectListView, self).get_context_data(**kwargs) - rows = Project.objects.all().order_by('-id') + # 搜索项目 + search_project_name = "" + if "project_name" in self.request.GET: + search_project_name = self.request.GET['project_name'] + + rows = search_project_by_name(search_project_name) project_count = Project.objects.all().count() + # 分页 if 'p' in self.request.GET: page = int(self.request.GET['p']) else: @@ -78,6 +84,7 @@ def get_context_data(self, **kwargs): context['max_page'] = max_page context['page_range'] = range(int(max_page))[1:] + context['search_project_name'] = search_project_name return context diff --git a/web/index/models.py b/web/index/models.py index dc32acc5..f9859c0f 100644 --- a/web/index/models.py +++ b/web/index/models.py @@ -47,6 +47,33 @@ class Project(models.Model): project_hash = models.CharField(max_length=32) +def search_project_by_name(project_name): + """ + 支持*语法的查询 + :param project_name: + :return: + """ + if not project_name: + ps = Project.objects.all().order_by('-id') + return ps + + if project_name.startswith('*'): + if project_name.endswith('*'): + ps = Project.objects.filter(project_name__icontains=project_name.strip('*')).order_by('-id') + + else: + ps = Project.objects.filter(project_name__iendswith=project_name.strip('*')).order_by('-id') + + else: + if project_name.endswith('*'): + ps = Project.objects.filter(project_name__istartswith=project_name.strip('*')).order_by('-id') + + else: + ps = Project.objects.filter(project_name__iexact=project_name.strip('*')).order_by('-id') + + return ps + + class ProjectVendors(models.Model): project_id = models.IntegerField() name = models.CharField(max_length=200)