1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
from ajax_select import make_ajax_form
from django.contrib import admin, messages
from django.contrib.auth.admin import GroupAdmin, UserAdmin
from django.contrib.auth.models import Group, User
from django import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _
from commonnet.admin_site import admin_site
from commorganization import models
from commcrawler.models import Crawl
admin_site.register(User, UserAdmin)
admin_site.register(Group, GroupAdmin)
class AreaTypeAdmin(admin.ModelAdmin):
model = models.AreaType
list_display = ('name', )
admin_site.register(models.AreaType, AreaTypeAdmin)
class AreaAdmin(admin.ModelAdmin):
model = models.Area
list_display = ('name', 'area_type', 'reference', 'parent')
list_filter = ('area_type',)
search_fields = ['name', 'parent__name']
admin_site.register(models.Area, AreaAdmin)
class OrganizationTypeAdmin(admin.ModelAdmin):
model = models.OrganizationType
list_display = ('name', 'parent')
list_filter = ('parent',)
admin_site.register(models.OrganizationType, OrganizationTypeAdmin)
class OrganizationAdmin(admin.ModelAdmin):
model = models.Organization
list_display = ('name', 'organization_type', 'area')
list_filter = ('organization_type',)
search_fields = ['name']
form = make_ajax_form(model, {'area': 'area'})
admin_site.register(models.Organization, OrganizationAdmin)
class AddToCrawlForm(forms.Form):
crawl = forms.ChoiceField(label=_("Crawl"), choices=tuple())
def __init__(self, *args, **kwargs):
super(AddToCrawlForm, self).__init__(*args, **kwargs)
self.fields["crawl"].choices = [(None, "--")] + [
(c.pk, str(c))
for c in Crawl.objects.filter(status="C").all()
]
class TargetAdmin(admin.ModelAdmin):
list_display = ('name', 'url', 'organization')
model = models.Target
list_filter = ('organization__organization_type',)
form = make_ajax_form(model, {'organization': 'organization'})
actions = ['add_to_crawl']
def add_to_crawl(self, request, queryset):
if 'apply' in request.POST:
form = AddToCrawlForm(request.POST)
if form.is_valid():
crawl = None
try:
crawl = Crawl.objects.get(
pk=form.cleaned_data["crawl"],
status="C"
)
except models.Crawl.DoesNotExist:
pass
if crawl:
nb_added = 0
targets = [
c["id"] for c in crawl.targets.values("id")
]
for target in queryset.all():
if target.pk not in targets:
crawl.targets.add(target)
nb_added += 1
messages.add_message(
request, messages.INFO,
str(_("{} new targets added to {}")).format(
nb_added, str(crawl)
)
)
return HttpResponseRedirect(request.get_full_path())
else:
form = AddToCrawlForm()
return render(
request, 'admin/add_to_crawl.html',
context={"form": form, "query_nb": queryset.count(),
"items": [v['pk'] for v in queryset.values('pk').all()]})
add_to_crawl.short_description = _("Add to crawl")
admin_site.register(models.Target, TargetAdmin)
|