import json from pygments import highlight from pygments.lexers.data import JsonLexer from pygments.formatters.html import HtmlFormatter from ajax_select import make_ajax_form from django.contrib import admin from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe from commonnet.admin_site import admin_site from commcrawler import models class CrawlAdmin(admin.ModelAdmin): model = models.Crawl list_display = ("name", "status", "target_nb", "created", "started", "pre_crawl_ended", "crawl_ended", "ended", "progress") list_filter = ("status",) exclude = ("progression", "created", "started", "pre_crawl_ended", "crawl_ended", "ended") readonly_fields = () form = make_ajax_form(model, {'targets': 'target'}) admin_site.register(models.Crawl, CrawlAdmin) class CrawlResultAdmin(admin.ModelAdmin): model = models.CrawlResult list_display = ( "url", "crawl", "started", "duration", "status", "is_online", "bad_ssl", "nb_external_link", "nb_internal_link", "nb_images", "nb_facebook", "nb_twitter", "nb_instagram", "nb_youtube", "nb_dailymotion", "nb_vimeo", "nb_video", "nb_audio", "nb_internal_pdf", "nb_external_pdf", "nb_internal_office", "nb_external_office" ) list_filter = ("status", "crawl", "is_online", "bad_ssl") search_fields = ("target__name",) readonly_fields = ( "started", "duration", "status", "nb_external_link", "nb_internal_link", "nb_images", "nb_facebook", "nb_twitter", "nb_instagram", "nb_youtube", "nb_dailymotion", "nb_vimeo", "nb_video", "nb_audio", "nb_internal_pdf", "nb_external_pdf", "nb_internal_office", "nb_external_office", "is_online", "redirection", "crawl_result_prettified" ) exclude = ("crawl_result",) form = make_ajax_form(model, {'target': 'target'}) def crawl_result_prettified(self, instance): response = json.dumps(instance.crawl_result, sort_keys=True, indent=2) formatter = HtmlFormatter(style='colorful') response = highlight(response, JsonLexer(), formatter) style = "
" return mark_safe(style + response) crawl_result_prettified.short_description = _("Crawl result") admin_site.register(models.CrawlResult, CrawlResultAdmin) class CrawlRelationAdmin(admin.ModelAdmin): model = models.CrawlRelation list_display = ("crawl", "source", "destination", "number") list_filter = ("crawl",) search_fields = ["source__name", "destination__name"] form = make_ajax_form(model, {'source': 'target', 'destination': 'target'}) admin_site.register(models.CrawlRelation, CrawlRelationAdmin) class ExcludedDomainAdmin(admin.ModelAdmin): list_display = ('domain',) search_fields = ('domain',) admin_site.register(models.ExludedDomains, ExcludedDomainAdmin)