|
@@ -21,17 +21,29 @@ class DocumentAdmin(admin.ModelAdmin):
|
|
|
new, edit_url)))
|
|
|
copy.short_description = 'Copier'
|
|
|
|
|
|
-class GoodUseInline(admin.TabularInline):
|
|
|
+
|
|
|
+class AbstractUseInline(admin.TabularInline):
|
|
|
+ """ An inline with some knowledge of the currently edited Document
|
|
|
+ """
|
|
|
+ def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
|
|
+ if db_field.name == "resource" and getattr(request, 'document', None):
|
|
|
+ kwargs["queryset"] = db_field.related_model.objects.filter(
|
|
|
+ document=request.document)
|
|
|
+ return super().formfield_for_foreignkey(
|
|
|
+ db_field, request, **kwargs)
|
|
|
+
|
|
|
+
|
|
|
+class GoodUseInline(AbstractUseInline):
|
|
|
model = GoodUse
|
|
|
extra = 1
|
|
|
|
|
|
|
|
|
-class CostUseInline(admin.TabularInline):
|
|
|
+class CostUseInline(AbstractUseInline):
|
|
|
model = CostUse
|
|
|
extra = 1
|
|
|
|
|
|
|
|
|
-class ServiceUseInline(admin.TabularInline):
|
|
|
+class ServiceUseInline(AbstractUseInline):
|
|
|
model = ServiceUse
|
|
|
extra = 1
|
|
|
fk_name = 'service'
|
|
@@ -77,6 +89,12 @@ class ServiceAdmin(admin.ModelAdmin):
|
|
|
inlines = (CostUseInline, GoodUseInline, ServiceUseInline)
|
|
|
list_filter = [DirectDocumentFilter]
|
|
|
|
|
|
+ def get_form(self, request, obj=None, **kwargs):
|
|
|
+ if obj:
|
|
|
+ # anotate the request with some context
|
|
|
+ request.document = obj.document
|
|
|
+ return super().get_form(request, obj, **kwargs)
|
|
|
+
|
|
|
def monthly_unit_cost(self, obj):
|
|
|
return '{:.2f}€'.format(obj.get_prices()['unit_recurring_price'])
|
|
|
|