示例#1
0
def get_table_info(request):
    iDisplayLength = int(request.GET['iDisplayLength'])
    sEcho = request.GET['sEcho']
    iDisplayStart = int(request.GET['iDisplayStart'])
    sSearch = request.GET['sSearch']

    sort_col = int(request.GET['iSortCol_0'])
    sort_dir = request.GET['sSortDir_0']
    order_query = None
    if sort_col == 1:
        order_query = 'produced'
    elif sort_col == 2:
        order_query = 'package_name'
    elif sort_col == 3:
        order_query = 'package_id'
    elif sort_col == 4:
        order_query = 'version'

    if order_query is not None:
        if sort_dir == 'desc':
            order_query = '-' + order_query

    s_input_communities = Communities.objects.filter(Q(name__icontains=sSearch))
    s_via_choices = Vias.get_search_via_choices(sSearch)
    s_uploaders = []
    for uploader in STIPUser.objects.filter(QQ(screen_name__icontains=sSearch) | QQ(username__icontains=sSearch)):
        s_uploaders.append(uploader.id)
    s_vias = Vias.objects.filter(Q(via__in=s_via_choices) | Q(uploader__in=s_uploaders) | Q(adapter_name__icontains=sSearch))

    objects = StixFiles.objects \
        .filter(
            Q(package_name__icontains=sSearch)
            | Q(package_id__icontains=sSearch)
            | Q(version__icontains=sSearch)
            | Q(input_community__in=s_input_communities)
            | Q(via__in=s_vias)
        )\
        .order_by(order_query)

    aaData = []
    count = 0
    for d in objects[iDisplayStart:(iDisplayStart + iDisplayLength)]:
        l = []
        l.append('<input type="checkbox" file_id="%s"/ class="delete-checkbox">' % (d.id))
        l.append(d.produced.strftime('%Y/%m/%d %H:%M:%S'))
        l.append(d.package_name)
        l.append(d.package_id)
        l.append(d.version)
        try:
            l.append(d.input_community.name)
        except DoesNotExist:
            l.append('&lt;deleted&gt;')
        l.append(d.via.get_via_display())
        l.append(d.via.get_uploader_screen_name())
        link_str = ''
        if d.version.startswith('1.'):
            link_str += '<a href="/list/download?id=%s&version=%s">STIX %s (Original)</a><br/>' % (d.id, d.version, d.version)
            link_str += ('<a href="/list/download?id=%s&version=2.1">STIX 2.1</a>' % (d.id))
        elif d.version == '2.0':
            link_str += ('<a href="/list/download?id=%s&version=1.2">STIX 1.2</a><br/>' % (d.id))
            link_str += ('<a href="/list/download?id=%s&version=2.0">STIX 2.0 (Original)</a><br/>' % (d.id))
            link_str += ('<a href="/list/download?id=%s&version=2.1">STIX 2.1</a>' % (d.id))
        elif d.version == '2.1':
            link_str += ('<a href="/list/download?id=%s&version=1.2">STIX 1.2</a><br/>' % (d.id))
            link_str += ('<a href="/list/download?id=%s&version=2.1">STIX 2.1 (Original)</a>' % (d.id))
        l.append(link_str)
        if request.user.is_admin:
            l.append('<a><span class="glyphicon glyphicon-share-alt publish-share-alt-icon" data-file-id="%s" data-package-name="%s" data-package-id="%s" title="Publish to.."></span></a>' % (d.id, d.package_name, d.package_id))
        else:
            l.append('<span class="glyphicon glyphicon-ban-circle" disabled></span>')
        link_str = ('<a><span class="glyphicon glyphicon-export misp-import-icon" package_id="%s" title="Import into MISP .."></span></a>' % (d.package_id))
        l.append(link_str)
        aaData.append(l)
        count += 1

    resp = {}
    all_count = StixFiles.objects.count()
    resp['iTotalRecords'] = all_count
    resp['iTotalDisplayRecords'] = objects.count()
    resp['sEcho'] = sEcho
    resp['aaData'] = aaData
    return JsonResponse(resp)
示例#2
0
文件: views.py 项目: tkhsknsk/stip-rs
def get_table_info(request):
    #ajax parameter取得
    iDisplayLength = int(request.GET['iDisplayLength'])
    sEcho = request.GET['sEcho']
    iDisplayStart = int(request.GET['iDisplayStart'])
    sSearch = request.GET['sSearch']

    sort_col = int(request.GET['iSortCol_0'])
    sort_dir = request.GET['sSortDir_0']
    order_query = None
    if sort_col == 1:
        order_query = 'produced'
    elif sort_col == 2:
        order_query = 'package_name'
    elif sort_col == 3:
        order_query = 'package_id'
    elif sort_col == 4:
        order_query = 'version'

    if order_query is not None:
        #descが降順
        if sort_dir == 'desc':
            order_query = '-' + order_query

    #検索対象のcommunity
    s_input_communities = Communities.objects.filter(
        Q(name__icontains=sSearch))
    #検索対象のvia_choice
    s_via_choices = Vias.get_search_via_choices(sSearch)
    #検索対象のUploader
    s_uploaders = []
    for uploader in STIPUser.objects.filter(
            QQ(screen_name__icontains=sSearch)
            | QQ(username__icontains=sSearch)):
        s_uploaders.append(uploader.id)
    #検索対象のvias
    #viaとuploaderとadapter_nameが検索時対象
    s_vias = Vias.objects.filter(
        Q(via__in=s_via_choices) | Q(uploader__in=s_uploaders)
        | Q(adapter_name__icontains=sSearch))

    #検索する
    objects =  StixFiles.objects \
        .filter(
            Q(package_name__icontains=sSearch) |
            Q(package_id__icontains=sSearch)|
            Q(version__icontains=sSearch)|
            Q(input_community__in=s_input_communities) |
            Q(via__in=s_vias)
            )\
        .order_by(order_query)

    #検索結果から表示範囲のデータを抽出する
    aaData = []
    count = 0
    for d in objects[iDisplayStart:(iDisplayStart + iDisplayLength)]:
        l = []
        l.append(
            '<input type="checkbox" file_id="%s"/ class="delete-checkbox">' %
            (d.id))
        l.append(d.produced.strftime('%Y/%m/%d %H:%M:%S'))
        l.append(d.package_name)
        l.append(d.package_id)
        l.append(d.version)
        try:
            l.append(d.input_community.name)
        except DoesNotExist:
            #commmunityが削除されたなどの理由でない場合
            l.append('&lt;deleted&gt;')
        l.append(d.via.get_via_display())
        l.append(d.via.get_uploader_screen_name())
        link_str = '<a href="/list/download?id=%s&version=%s">Original (%s)</a> ' % (
            d.id, d.version, d.version)
        if d.version != '2.0':
            link_str += (
                '<a href="/list/download?id=%s&version=2.0">Converted (2.0)</a>'
                % (d.id))
        else:
            link_str += (
                '<a href="/list/download?id=%s&version=1.2">Converted (1.2)</a>'
                % (d.id))
        l.append(link_str)
        l.append(
            '<a><span class="glyphicon glyphicon-share-alt publish-share-alt-icon" file_id="%s" title="Publish to.."></span></a>'
            % (d.id))
        if d.version.startswith('1.') == True:
            link_str = (
                '<a><span class="glyphicon glyphicon-export misp-import-icon" package_id="%s" title="Import into MISP .."></span></a>'
                % (d.package_id))
        else:
            link_str = (
                '<span class="glyphicon glyphicon-remove-sign"></span>')
        l.append(link_str)
        aaData.append(l)
        count += 1

    resp = {}
    all_count = StixFiles.objects.count()
    resp['iTotalRecords'] = all_count
    resp['iTotalDisplayRecords'] = objects.count()
    resp['sEcho'] = sEcho
    resp['aaData'] = aaData
    return JsonResponse(resp)