@@ -72,6 +72,30 @@ private module FlaskModel {
72
72
API:: Node response_class ( ) { result = [ classRef ( ) , instance ( ) ] .getMember ( "response_class" ) }
73
73
}
74
74
75
+ /**
76
+ * Provides models for the `flask.Blueprint` class
77
+ *
78
+ * See https://flask.palletsprojects.com/en/1.1.x/api/#flask.Blueprint.
79
+ */
80
+ module Blueprint {
81
+ /** Gets a reference to the `flask.Blueprint` class. */
82
+ API:: Node classRef ( ) { result = flask ( ) .getMember ( "Blueprint" ) }
83
+
84
+ /** Gets a reference to an instance of `flask.Blueprint`. */
85
+ API:: Node instance ( ) { result = classRef ( ) .getReturn ( ) }
86
+
87
+ /**
88
+ * Gets a reference to the attribute `attr_name` of an instance of `flask.Blueprint`.
89
+ */
90
+ private API:: Node instance_attr ( string attr_name ) { result = instance ( ) .getMember ( attr_name ) }
91
+
92
+ /** Gets a reference to the `route` method on an instance of `flask.Blueprint`. */
93
+ API:: Node route ( ) { result = instance_attr ( "route" ) }
94
+
95
+ /** Gets a reference to the `add_url_rule` method on an instance of `flask.Blueprint`. */
96
+ API:: Node add_url_rule ( ) { result = instance_attr ( "add_url_rule" ) }
97
+ }
98
+
75
99
// -------------------------------------------------------------------------
76
100
// flask.views
77
101
// -------------------------------------------------------------------------
@@ -222,12 +246,16 @@ private module FlaskModel {
222
246
}
223
247
224
248
/**
225
- * A call to the `route` method on an instance of `flask.Flask`.
249
+ * A call to the `route` method on an instance of `flask.Flask` or an instance of `flask.Blueprint` .
226
250
*
227
251
* See https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.route
228
252
*/
229
253
private class FlaskAppRouteCall extends FlaskRouteSetup , DataFlow:: CallCfgNode {
230
- FlaskAppRouteCall ( ) { this .getFunction ( ) = flask:: Flask:: route ( ) .getAUse ( ) }
254
+ FlaskAppRouteCall ( ) {
255
+ this .getFunction ( ) = flask:: Flask:: route ( ) .getAUse ( )
256
+ or
257
+ this .getFunction ( ) = flask:: Blueprint:: route ( ) .getAUse ( )
258
+ }
231
259
232
260
override DataFlow:: Node getUrlPatternArg ( ) {
233
261
result in [ this .getArg ( 0 ) , this .getArgByName ( "rule" ) ]
@@ -237,12 +265,16 @@ private module FlaskModel {
237
265
}
238
266
239
267
/**
240
- * A call to the `add_url_rule` method on an instance of `flask.Flask`.
268
+ * A call to the `add_url_rule` method on an instance of `flask.Flask` or an instance of `flask.Blueprint` .
241
269
*
242
270
* See https://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.add_url_rule
243
271
*/
244
272
private class FlaskAppAddUrlRuleCall extends FlaskRouteSetup , DataFlow:: CallCfgNode {
245
- FlaskAppAddUrlRuleCall ( ) { this .getFunction ( ) = flask:: Flask:: add_url_rule ( ) .getAUse ( ) }
273
+ FlaskAppAddUrlRuleCall ( ) {
274
+ this .getFunction ( ) = flask:: Flask:: add_url_rule ( ) .getAUse ( )
275
+ or
276
+ this .getFunction ( ) = flask:: Blueprint:: add_url_rule ( ) .getAUse ( )
277
+ }
246
278
247
279
override DataFlow:: Node getUrlPatternArg ( ) {
248
280
result in [ this .getArg ( 0 ) , this .getArgByName ( "rule" ) ]
0 commit comments