nitweb: introduce ModelAction
[nit.git] / src / web / web_base.nit
index 68d132c..ecf639e 100644 (file)
@@ -15,7 +15,7 @@
 # Base classes used by `nitweb`.
 module web_base
 
-import frontend
+import model::model_views
 import nitcorn
 import json
 
@@ -85,6 +85,29 @@ class NitAction
        end
 end
 
+# Specific nitcorn Action that uses a Model
+class ModelAction
+       super NitAction
+
+       # Model to use.
+       var model: Model
+
+       # Init the model view from the `req` uri parameters.
+       fun init_model_view(req: HttpRequest): ModelView do
+               var view = new ModelView(model)
+
+               var show_private = req.bool_arg("private") or else false
+               if not show_private then view.min_visibility = protected_visibility
+
+               view.include_fictive = req.bool_arg("fictive") or else false
+               view.include_empty_doc = req.bool_arg("empty-doc") or else true
+               view.include_test_suite = req.bool_arg("test-suite") or else false
+               view.include_attribute = req.bool_arg("attributes") or else true
+
+               return view
+       end
+end
+
 # A NitView is rendered by an action.
 interface NitView
        # Renders this view and returns something that can be written to a HTTP response.