Browse Source

Do not offer resources selection on service creation.

Jocelyn Delande 9 years ago
parent
commit
3babdbfc9f
1 changed files with 22 additions and 3 deletions
  1. 22 3
      costs/admin.py

+ 22 - 3
costs/admin.py

@@ -1,4 +1,4 @@
-from django.contrib import admin
+from django.contrib import admin, messages
 from django.core.urlresolvers import reverse
 from django.utils.encoding import force_text
 from django.utils.safestring import mark_safe
@@ -41,8 +41,8 @@ class AbstractUseInline(admin.TabularInline):
         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)
+        return super().formfield_for_foreignkey(
+            db_field, request, **kwargs)
 
 
 class GoodUseInline(AbstractUseInline):
@@ -101,8 +101,27 @@ class ServiceAdmin(admin.ModelAdmin):
         if obj:
             # anotate the request with some context
             request.document = obj.document
+        else:
+            doc_pk = request.GET.get('document')
+            if doc_pk:
+                request.document = Document.objects.get(pk=doc_pk)
+            else:
+                request.document = None
+                if request.method == 'GET':
+                    self.message_user(
+                        request,
+                        'Il est nécessaire de faire "Enregistrer et continuer"'
+                        ' pour ajouter des ressources au service',
+                        messages.WARNING)
+
         return super().get_form(request, obj, **kwargs)
 
+    def get_inline_instances(self, request, obj=None):
+        if getattr(request, 'document', None):
+            return super().get_inline_instances(request, obj)
+        else:
+            return []
+
     def monthly_unit_cost(self, obj):
         return '{:.2f}€'.format(obj.get_prices()['unit_recurring_price'])