Skip to content

Commit

Permalink
update project search
Browse files Browse the repository at this point in the history
  • Loading branch information
LoRexxar committed Dec 27, 2021
1 parent c8888a5 commit 5447071
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 43 deletions.
117 changes: 76 additions & 41 deletions templates/dashboard/projects/projects_list.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,85 @@

{% block body %}
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header">
<h3 class="box-title">Projects List</h3>
</div>
<!-- /.box-header -->
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
<tbody><tr>
<th>ID</th>
<th>Origin</th>
<th>Last Scan Time</th>
<th>Task Count</th>
<th>Vul Count</th>
<th>Vendor Count</th>
</tr>
{% for project in projects %}
<tr>
<td><a href="{% url 'dashboard:project_detail' project.id %}">{{ project.id }} {{ project.project_name }}</a></td>
<td>{{ project.project_origin }}</td>
<td>{{ project.last_scan_time }}</td>
<td>{{ project.tasks_count }}</td>
<td>{{ project.results_count }}</td>
<td>{{ project.vendors_count }}</td>
<div class="col-xs-12">

</tr>
{% endfor %}
</tbody></table>
</div>
<!-- /.box-body -->
<form id="fileform" role="form" method="get" enctype="multipart/form-data" action="{% url 'dashboard:projects_list' %}">

<div class="box-footer">
<ul class="pagination pagination-sm m-0 float-right">
<li class="page-item"><a class="page-link" href="{% url 'dashboard:projects_list' %}">«</a></li>
{% for i in page_range %}
<li class="page-item {% if page == i %}active{% endif %}"><a class="page-link" href="{% url 'dashboard:projects_list' %}?p={{ i }}">{{ i }}</a></li>
{% endfor %}
<li class="page-item"><a class="page-link" href="{% url 'dashboard:projects_list' %}?p={{ max_page }}">»</a></li>
</ul>
</div>
</div>
<!-- /.box -->
</div>

<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title">Search Project</h3>
</div>
<div class="box-body">
<!-- Date -->
<!-- Date and time range -->
<div class="form-group">
<label>Project Name:</label>

<div class="input-group">
<div class="input-group-addon">
<i class="fa fa-laptop "></i>
</div>
<input type="text" class="form-control pull-right" name="project_name" value="{{ search_project_name }}" >
</div>
ps: use * to indicate wildcard, just like *test*.
<!-- /.input group -->
</div>
</div>
<!-- /.box -->
<div class="box-footer">
<div class="btn-group">
<button id="submit" type="submit" class="btn btn-primary">Search</button>
</div>
</div>
</div>
</form>
</div>

<div class="col-xs-12">
<div class="box">
<div class="box-header">
<h3 class="box-title">Projects List</h3>
</div>
<!-- /.box-header -->
<div class="box-body table-responsive no-padding">
<table class="table table-hover">
<tbody><tr>
<th>ID</th>
<th>Origin</th>
<th>Last Scan Time</th>
<th>Task Count</th>
<th>Vul Count</th>
<th>Vendor Count</th>
</tr>
{% for project in projects %}
<tr>
<td><a href="{% url 'dashboard:project_detail' project.id %}">{{ project.id }} {{ project.project_name }}</a></td>
<td>{{ project.project_origin }}</td>
<td>{{ project.last_scan_time }}</td>
<td>{{ project.tasks_count }}</td>
<td>{{ project.results_count }}</td>
<td>{{ project.vendors_count }}</td>

</tr>
{% endfor %}
</tbody></table>
</div>
<!-- /.box-body -->

<div class="box-footer">
<ul class="pagination pagination-sm m-0 float-right">
<li class="page-item"><a class="page-link" href="{% url 'dashboard:projects_list' %}">«</a></li>
{% for i in page_range %}
<li class="page-item {% if page == i %}active{% endif %}"><a class="page-link" href="{% url 'dashboard:projects_list' %}?p={{ i }}">{{ i }}</a></li>
{% endfor %}
<li class="page-item"><a class="page-link" href="{% url 'dashboard:projects_list' %}?p={{ max_page }}">»</a></li>
</ul>
</div>
</div>
<!-- /.box -->
</div>
</div>
{% endblock %}

{% block script %}
Expand Down
11 changes: 9 additions & 2 deletions web/dashboard/controller/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -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:
Expand Down Expand Up @@ -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

Expand Down
27 changes: 27 additions & 0 deletions web/index/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down

0 comments on commit 5447071

Please sign in to comment.