@@ -1526,8 +1526,11 @@ private module Django {
15261526 * - https://docs.djangoproject.com/en/3.1/ref/class-based-views/
15271527 */
15281528 module View {
1529- /** Gets a reference to the `django.views.generic.View` class or any subclass. */
1530- API:: Node subclassRef ( ) {
1529+ /**
1530+ * Get a references to: the `django.views.generic.View` class, or any subclass
1531+ * that has explicitly been modeled in the CodeQL libraries.
1532+ */
1533+ API:: Node modeledSubclassRef ( ) {
15311534 exists ( string moduleName , string className |
15321535 // canonical definition
15331536 result =
@@ -1536,15 +1539,13 @@ private module Django {
15361539 .getMember ( "generic" )
15371540 .getMember ( moduleName )
15381541 .getMember ( className )
1539- .getASubclass * ( )
15401542 or
15411543 // alias from `django.view.generic`
15421544 result =
15431545 API:: moduleImport ( "django" )
15441546 .getMember ( "view" )
15451547 .getMember ( "generic" )
15461548 .getMember ( className )
1547- .getASubclass * ( )
15481549 |
15491550 moduleName = "base" and
15501551 className in [ "RedirectView" , "TemplateView" , "View" ]
@@ -1566,8 +1567,11 @@ private module Django {
15661567 )
15671568 or
15681569 // `django.views.View` alias
1569- result = API:: moduleImport ( "django" ) .getMember ( "views" ) .getMember ( "View" ) . getASubclass * ( )
1570+ result = API:: moduleImport ( "django" ) .getMember ( "views" ) .getMember ( "View" )
15701571 }
1572+
1573+ /** Gets a reference to the `django.views.generic.View` class or any subclass. */
1574+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
15711575 }
15721576 }
15731577
@@ -1638,29 +1642,29 @@ private module Django {
16381642 * See https://docs.djangoproject.com/en/3.1/ref/forms/api/
16391643 */
16401644 module Form {
1641- /** Gets a reference to the `django.forms.forms.BaseForm` class or any subclass. */
1642- API:: Node subclassRef ( ) {
1645+ /**
1646+ * Get a references to: the `django.forms.forms.BaseForm` class, or any subclass
1647+ * that has explicitly been modeled in the CodeQL libraries.
1648+ */
1649+ API:: Node modeledSubclassRef ( ) {
16431650 // canonical definition
16441651 result =
16451652 API:: moduleImport ( "django" )
16461653 .getMember ( "forms" )
16471654 .getMember ( "forms" )
16481655 .getMember ( [ "BaseForm" , "Form" ] )
1649- .getASubclass * ( )
16501656 or
16511657 result =
16521658 API:: moduleImport ( "django" )
16531659 .getMember ( "forms" )
16541660 .getMember ( "models" )
16551661 .getMember ( [ "BaseModelForm" , "ModelForm" ] )
1656- .getASubclass * ( )
16571662 or
16581663 // aliases from `django.forms`
16591664 result =
16601665 API:: moduleImport ( "django" )
16611666 .getMember ( "forms" )
16621667 .getMember ( [ "BaseForm" , "Form" , "BaseModelForm" , "ModelForm" ] )
1663- .getASubclass * ( )
16641668 or
16651669 // other Form subclasses defined in Django
16661670 result =
@@ -1669,15 +1673,13 @@ private module Django {
16691673 .getMember ( "admin" )
16701674 .getMember ( "forms" )
16711675 .getMember ( [ "AdminAuthenticationForm" , "AdminPasswordChangeForm" ] )
1672- .getASubclass * ( )
16731676 or
16741677 result =
16751678 API:: moduleImport ( "django" )
16761679 .getMember ( "contrib" )
16771680 .getMember ( "admin" )
16781681 .getMember ( "helpers" )
16791682 .getMember ( "ActionForm" )
1680- .getASubclass * ( )
16811683 or
16821684 result =
16831685 API:: moduleImport ( "django" )
@@ -1686,7 +1688,6 @@ private module Django {
16861688 .getMember ( "views" )
16871689 .getMember ( "main" )
16881690 .getMember ( "ChangeListSearchForm" )
1689- .getASubclass * ( )
16901691 or
16911692 result =
16921693 API:: moduleImport ( "django" )
@@ -1698,30 +1699,29 @@ private module Django {
16981699 "AdminPasswordChangeForm" , "PasswordChangeForm" , "AuthenticationForm" ,
16991700 "UserCreationForm"
17001701 ] )
1701- .getASubclass * ( )
17021702 or
17031703 result =
17041704 API:: moduleImport ( "django" )
17051705 .getMember ( "contrib" )
17061706 .getMember ( "flatpages" )
17071707 .getMember ( "forms" )
17081708 .getMember ( "FlatpageForm" )
1709- .getASubclass * ( )
17101709 or
17111710 result =
17121711 API:: moduleImport ( "django" )
17131712 .getMember ( "forms" )
17141713 .getMember ( "formsets" )
17151714 .getMember ( "ManagementForm" )
1716- .getASubclass * ( )
17171715 or
17181716 result =
17191717 API:: moduleImport ( "django" )
17201718 .getMember ( "forms" )
17211719 .getMember ( "models" )
17221720 .getMember ( [ "ModelForm" , "BaseModelForm" ] )
1723- .getASubclass * ( )
17241721 }
1722+
1723+ /** Gets a reference to the `django.forms.forms.BaseForm` class or any subclass. */
1724+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
17251725 }
17261726
17271727 /**
@@ -1731,20 +1731,21 @@ private module Django {
17311731 * See https://docs.djangoproject.com/en/3.1/ref/forms/fields/
17321732 */
17331733 module Field {
1734- /** Gets a reference to the `django.forms.fields.Field` class or any subclass. */
1735- API:: Node subclassRef ( ) {
1734+ /**
1735+ * Get a references to: the `django.forms.fields.Field` class, or any subclass
1736+ * that has explicitly been modeled in the CodeQL libraries.
1737+ */
1738+ API:: Node modeledSubclassRef ( ) {
17361739 exists ( string moduleName , string className |
17371740 // canonical definition
17381741 result =
17391742 API:: moduleImport ( "django" )
17401743 .getMember ( "forms" )
17411744 .getMember ( moduleName )
17421745 .getMember ( className )
1743- .getASubclass * ( )
17441746 or
17451747 // alias from `django.forms`
1746- result =
1747- API:: moduleImport ( "django" ) .getMember ( "forms" ) .getMember ( className ) .getASubclass * ( )
1748+ result = API:: moduleImport ( "django" ) .getMember ( "forms" ) .getMember ( className )
17481749 |
17491750 moduleName = "fields" and
17501751 className in [
@@ -1770,7 +1771,6 @@ private module Django {
17701771 .getMember ( "auth" )
17711772 .getMember ( "forms" )
17721773 .getMember ( [ "ReadOnlyPasswordHashField" , "UsernameField" ] )
1773- .getASubclass * ( )
17741774 or
17751775 result =
17761776 API:: moduleImport ( "django" )
@@ -1783,7 +1783,6 @@ private module Django {
17831783 "MultiLineStringField" , "MultiPointField" , "MultiPolygonField" , "PointField" ,
17841784 "PolygonField"
17851785 ] )
1786- .getASubclass * ( )
17871786 or
17881787 result =
17891788 API:: moduleImport ( "django" )
@@ -1792,7 +1791,6 @@ private module Django {
17921791 .getMember ( "forms" )
17931792 .getMember ( "array" )
17941793 .getMember ( [ "SimpleArrayField" , "SplitArrayField" ] )
1795- .getASubclass * ( )
17961794 or
17971795 result =
17981796 API:: moduleImport ( "django" )
@@ -1801,7 +1799,6 @@ private module Django {
18011799 .getMember ( "forms" )
18021800 .getMember ( "hstore" )
18031801 .getMember ( "HStoreField" )
1804- .getASubclass * ( )
18051802 or
18061803 result =
18071804 API:: moduleImport ( "django" )
@@ -1813,15 +1810,16 @@ private module Django {
18131810 "BaseRangeField" , "DateRangeField" , "DateTimeRangeField" , "DecimalRangeField" ,
18141811 "IntegerRangeField"
18151812 ] )
1816- .getASubclass * ( )
18171813 or
18181814 result =
18191815 API:: moduleImport ( "django" )
18201816 .getMember ( "forms" )
18211817 .getMember ( "models" )
18221818 .getMember ( [ "InlineForeignKeyField" , "ModelChoiceField" , "ModelMultipleChoiceField" ] )
1823- .getASubclass * ( )
18241819 }
1820+
1821+ /** Gets a reference to the `django.forms.fields.Field` class or any subclass. */
1822+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
18251823 }
18261824 }
18271825
0 commit comments