|
@@ -5,10 +5,8 @@ from django.utils import timezone
|
|
from django.core.urlresolvers import reverse
|
|
from django.core.urlresolvers import reverse
|
|
from django.utils.html import format_html
|
|
from django.utils.html import format_html
|
|
|
|
|
|
-from djadhere.utils import get_active_filter
|
|
|
|
-from banking.models import Payment
|
|
|
|
-from banking.admin import PaymentInline
|
|
|
|
from .models import Service, ServiceType, IPResource, Route, ResourceAllocation
|
|
from .models import Service, ServiceType, IPResource, Route, ResourceAllocation
|
|
|
|
+from djadhere.utils import get_active_filter
|
|
|
|
|
|
|
|
|
|
### Filters
|
|
### Filters
|
|
@@ -70,7 +68,7 @@ def get_foreignkey_link_func(field):
|
|
obj = getattr(instance, field)
|
|
obj = getattr(instance, field)
|
|
url = reverse('admin:%s_%s_change' % (obj._meta.app_label,
|
|
url = reverse('admin:%s_%s_change' % (obj._meta.app_label,
|
|
obj._meta.model_name),
|
|
obj._meta.model_name),
|
|
- args=(obj.id,))
|
|
|
|
|
|
+ args=(obj.pk,))
|
|
return format_html(u'<a href="{}">{}</a>', url, str(obj))
|
|
return format_html(u'<a href="{}">{}</a>', url, str(obj))
|
|
return foreignkey_link
|
|
return foreignkey_link
|
|
|
|
|
|
@@ -80,10 +78,18 @@ def get_foreignkey_link_func(field):
|
|
class AllocationInline(admin.TabularInline):
|
|
class AllocationInline(admin.TabularInline):
|
|
model = ResourceAllocation
|
|
model = ResourceAllocation
|
|
extra = 0
|
|
extra = 0
|
|
- fields = ('id', 'service', 'resource', 'start', 'end')
|
|
|
|
|
|
+ fields = ('id', 'service', 'resource', 'route', 'start', 'end')
|
|
raw_id_fields = ('service', 'resource',)
|
|
raw_id_fields = ('service', 'resource',)
|
|
verbose_name_plural = 'Allocations'
|
|
verbose_name_plural = 'Allocations'
|
|
|
|
|
|
|
|
+ def get_max_num(self, request, obj=None, **kwargs):
|
|
|
|
+ existing = obj.allocations.count() if obj else 0
|
|
|
|
+ # pour simplifier la validation, on ajoute qu’une allocation à la fois
|
|
|
|
+ return existing + 1
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
|
|
### Actions
|
|
### Actions
|
|
|
|
|
|
@@ -98,15 +104,25 @@ ends_resource.short_description = 'Terminer les allocations sélectionnées'
|
|
class ServiceAdmin(admin.ModelAdmin):
|
|
class ServiceAdmin(admin.ModelAdmin):
|
|
list_display = ('id', 'adhesion', 'service_type', 'label', 'active')
|
|
list_display = ('id', 'adhesion', 'service_type', 'label', 'active')
|
|
list_filter = ('active', ServiceTypeFilter,)
|
|
list_filter = ('active', ServiceTypeFilter,)
|
|
- inlines = (PaymentInline, AllocationInline,)
|
|
|
|
|
|
+ inlines = (AllocationInline,)
|
|
search_fields = ('id', 'service_type__name', 'label')
|
|
search_fields = ('id', 'service_type__name', 'label')
|
|
raw_id_fields = ('adhesion',)
|
|
raw_id_fields = ('adhesion',)
|
|
|
|
|
|
|
|
+ def get_actions(self, request):
|
|
|
|
+ actions = super().get_actions(request)
|
|
|
|
+ if 'delete_selected' in actions:
|
|
|
|
+ del actions['delete_selected']
|
|
|
|
+ return actions
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
|
|
class IPResourceAdmin(admin.ModelAdmin):
|
|
class IPResourceAdmin(admin.ModelAdmin):
|
|
list_display = ('__str__', 'in_use_display')
|
|
list_display = ('__str__', 'in_use_display')
|
|
list_filter = (ResourceInUseFilter,)
|
|
list_filter = (ResourceInUseFilter,)
|
|
- fields =('ip', 'mask',)
|
|
|
|
|
|
+ fields = ('ip',)
|
|
|
|
+ readonly_fields = ('ip',)
|
|
search_fields = ('ip',)
|
|
search_fields = ('ip',)
|
|
inlines = (AllocationInline,)
|
|
inlines = (AllocationInline,)
|
|
|
|
|
|
@@ -115,12 +131,41 @@ class IPResourceAdmin(admin.ModelAdmin):
|
|
in_use_display.short_description = 'Disponible'
|
|
in_use_display.short_description = 'Disponible'
|
|
in_use_display.boolean = True
|
|
in_use_display.boolean = True
|
|
|
|
|
|
|
|
+ def get_actions(self, request):
|
|
|
|
+ actions = super().get_actions(request)
|
|
|
|
+ if 'delete_selected' in actions:
|
|
|
|
+ del actions['delete_selected']
|
|
|
|
+ return actions
|
|
|
|
+
|
|
|
|
+ def has_add_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class RouteAdmin(admin.ModelAdmin):
|
|
|
|
+ fields = ('name',)
|
|
|
|
+ readonly_fields = ('name',)
|
|
|
|
+
|
|
|
|
+ def has_add_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
+ def get_actions(self, request):
|
|
|
|
+ actions = super().get_actions(request)
|
|
|
|
+ if 'delete_selected' in actions:
|
|
|
|
+ del actions['delete_selected']
|
|
|
|
+ return actions
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
|
|
class ResourceAllocationAdmin(admin.ModelAdmin):
|
|
class ResourceAllocationAdmin(admin.ModelAdmin):
|
|
list_display = ('id', 'resource_link', 'service_link', 'start', 'end',)
|
|
list_display = ('id', 'resource_link', 'service_link', 'start', 'end',)
|
|
list_filter = (AllocationStatusFilter,)
|
|
list_filter = (AllocationStatusFilter,)
|
|
actions = (ends_resource,)
|
|
actions = (ends_resource,)
|
|
- raw_id_fields = ('service',)
|
|
|
|
|
|
+ raw_id_fields = ('resource', 'service',)
|
|
search_fields = ('resource__ip', 'service__id', 'service__service_type__name', 'service__label')
|
|
search_fields = ('resource__ip', 'service__id', 'service__service_type__name', 'service__label')
|
|
|
|
|
|
resource_link = get_foreignkey_link_func('resource')
|
|
resource_link = get_foreignkey_link_func('resource')
|
|
@@ -129,9 +174,35 @@ class ResourceAllocationAdmin(admin.ModelAdmin):
|
|
service_link = get_foreignkey_link_func('service')
|
|
service_link = get_foreignkey_link_func('service')
|
|
service_link.short_description = 'Service'
|
|
service_link.short_description = 'Service'
|
|
|
|
|
|
|
|
+ def get_actions(self, request):
|
|
|
|
+ actions = super().get_actions(request)
|
|
|
|
+ if 'delete_selected' in actions:
|
|
|
|
+ del actions['delete_selected']
|
|
|
|
+ return actions
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class ServiceTypeAdmin(admin.ModelAdmin):
|
|
|
|
+ fields = ('name',)
|
|
|
|
+ readonly_fields = ('name',)
|
|
|
|
+
|
|
|
|
+ def get_actions(self, request):
|
|
|
|
+ actions = super().get_actions(request)
|
|
|
|
+ if 'delete_selected' in actions:
|
|
|
|
+ del actions['delete_selected']
|
|
|
|
+ return actions
|
|
|
|
+
|
|
|
|
+ def has_add_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
+ def has_delete_permission(self, request, obj=None):
|
|
|
|
+ return False
|
|
|
|
+
|
|
|
|
|
|
-admin.site.register(ServiceType)
|
|
|
|
|
|
+admin.site.register(ServiceType, ServiceTypeAdmin)
|
|
admin.site.register(Service, ServiceAdmin)
|
|
admin.site.register(Service, ServiceAdmin)
|
|
admin.site.register(IPResource, IPResourceAdmin)
|
|
admin.site.register(IPResource, IPResourceAdmin)
|
|
-admin.site.register(Route)
|
|
|
|
|
|
+admin.site.register(Route, RouteAdmin)
|
|
admin.site.register(ResourceAllocation, ResourceAllocationAdmin)
|
|
admin.site.register(ResourceAllocation, ResourceAllocationAdmin)
|