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('<deleted>') 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)
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('<deleted>') 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)