@@ -1526,8 +1526,11 @@ private module Django {
1526
1526
* - https://docs.djangoproject.com/en/3.1/ref/class-based-views/
1527
1527
*/
1528
1528
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 ( ) {
1531
1534
exists ( string moduleName , string className |
1532
1535
// canonical definition
1533
1536
result =
@@ -1536,15 +1539,13 @@ private module Django {
1536
1539
.getMember ( "generic" )
1537
1540
.getMember ( moduleName )
1538
1541
.getMember ( className )
1539
- .getASubclass * ( )
1540
1542
or
1541
1543
// alias from `django.view.generic`
1542
1544
result =
1543
1545
API:: moduleImport ( "django" )
1544
1546
.getMember ( "view" )
1545
1547
.getMember ( "generic" )
1546
1548
.getMember ( className )
1547
- .getASubclass * ( )
1548
1549
|
1549
1550
moduleName = "base" and
1550
1551
className in [ "RedirectView" , "TemplateView" , "View" ]
@@ -1566,8 +1567,11 @@ private module Django {
1566
1567
)
1567
1568
or
1568
1569
// `django.views.View` alias
1569
- result = API:: moduleImport ( "django" ) .getMember ( "views" ) .getMember ( "View" ) . getASubclass * ( )
1570
+ result = API:: moduleImport ( "django" ) .getMember ( "views" ) .getMember ( "View" )
1570
1571
}
1572
+
1573
+ /** Gets a reference to the `django.views.generic.View` class or any subclass. */
1574
+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
1571
1575
}
1572
1576
}
1573
1577
@@ -1638,29 +1642,29 @@ private module Django {
1638
1642
* See https://docs.djangoproject.com/en/3.1/ref/forms/api/
1639
1643
*/
1640
1644
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 ( ) {
1643
1650
// canonical definition
1644
1651
result =
1645
1652
API:: moduleImport ( "django" )
1646
1653
.getMember ( "forms" )
1647
1654
.getMember ( "forms" )
1648
1655
.getMember ( [ "BaseForm" , "Form" ] )
1649
- .getASubclass * ( )
1650
1656
or
1651
1657
result =
1652
1658
API:: moduleImport ( "django" )
1653
1659
.getMember ( "forms" )
1654
1660
.getMember ( "models" )
1655
1661
.getMember ( [ "BaseModelForm" , "ModelForm" ] )
1656
- .getASubclass * ( )
1657
1662
or
1658
1663
// aliases from `django.forms`
1659
1664
result =
1660
1665
API:: moduleImport ( "django" )
1661
1666
.getMember ( "forms" )
1662
1667
.getMember ( [ "BaseForm" , "Form" , "BaseModelForm" , "ModelForm" ] )
1663
- .getASubclass * ( )
1664
1668
or
1665
1669
// other Form subclasses defined in Django
1666
1670
result =
@@ -1669,15 +1673,13 @@ private module Django {
1669
1673
.getMember ( "admin" )
1670
1674
.getMember ( "forms" )
1671
1675
.getMember ( [ "AdminAuthenticationForm" , "AdminPasswordChangeForm" ] )
1672
- .getASubclass * ( )
1673
1676
or
1674
1677
result =
1675
1678
API:: moduleImport ( "django" )
1676
1679
.getMember ( "contrib" )
1677
1680
.getMember ( "admin" )
1678
1681
.getMember ( "helpers" )
1679
1682
.getMember ( "ActionForm" )
1680
- .getASubclass * ( )
1681
1683
or
1682
1684
result =
1683
1685
API:: moduleImport ( "django" )
@@ -1686,7 +1688,6 @@ private module Django {
1686
1688
.getMember ( "views" )
1687
1689
.getMember ( "main" )
1688
1690
.getMember ( "ChangeListSearchForm" )
1689
- .getASubclass * ( )
1690
1691
or
1691
1692
result =
1692
1693
API:: moduleImport ( "django" )
@@ -1698,30 +1699,29 @@ private module Django {
1698
1699
"AdminPasswordChangeForm" , "PasswordChangeForm" , "AuthenticationForm" ,
1699
1700
"UserCreationForm"
1700
1701
] )
1701
- .getASubclass * ( )
1702
1702
or
1703
1703
result =
1704
1704
API:: moduleImport ( "django" )
1705
1705
.getMember ( "contrib" )
1706
1706
.getMember ( "flatpages" )
1707
1707
.getMember ( "forms" )
1708
1708
.getMember ( "FlatpageForm" )
1709
- .getASubclass * ( )
1710
1709
or
1711
1710
result =
1712
1711
API:: moduleImport ( "django" )
1713
1712
.getMember ( "forms" )
1714
1713
.getMember ( "formsets" )
1715
1714
.getMember ( "ManagementForm" )
1716
- .getASubclass * ( )
1717
1715
or
1718
1716
result =
1719
1717
API:: moduleImport ( "django" )
1720
1718
.getMember ( "forms" )
1721
1719
.getMember ( "models" )
1722
1720
.getMember ( [ "ModelForm" , "BaseModelForm" ] )
1723
- .getASubclass * ( )
1724
1721
}
1722
+
1723
+ /** Gets a reference to the `django.forms.forms.BaseForm` class or any subclass. */
1724
+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
1725
1725
}
1726
1726
1727
1727
/**
@@ -1731,20 +1731,21 @@ private module Django {
1731
1731
* See https://docs.djangoproject.com/en/3.1/ref/forms/fields/
1732
1732
*/
1733
1733
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 ( ) {
1736
1739
exists ( string moduleName , string className |
1737
1740
// canonical definition
1738
1741
result =
1739
1742
API:: moduleImport ( "django" )
1740
1743
.getMember ( "forms" )
1741
1744
.getMember ( moduleName )
1742
1745
.getMember ( className )
1743
- .getASubclass * ( )
1744
1746
or
1745
1747
// alias from `django.forms`
1746
- result =
1747
- API:: moduleImport ( "django" ) .getMember ( "forms" ) .getMember ( className ) .getASubclass * ( )
1748
+ result = API:: moduleImport ( "django" ) .getMember ( "forms" ) .getMember ( className )
1748
1749
|
1749
1750
moduleName = "fields" and
1750
1751
className in [
@@ -1770,7 +1771,6 @@ private module Django {
1770
1771
.getMember ( "auth" )
1771
1772
.getMember ( "forms" )
1772
1773
.getMember ( [ "ReadOnlyPasswordHashField" , "UsernameField" ] )
1773
- .getASubclass * ( )
1774
1774
or
1775
1775
result =
1776
1776
API:: moduleImport ( "django" )
@@ -1783,7 +1783,6 @@ private module Django {
1783
1783
"MultiLineStringField" , "MultiPointField" , "MultiPolygonField" , "PointField" ,
1784
1784
"PolygonField"
1785
1785
] )
1786
- .getASubclass * ( )
1787
1786
or
1788
1787
result =
1789
1788
API:: moduleImport ( "django" )
@@ -1792,7 +1791,6 @@ private module Django {
1792
1791
.getMember ( "forms" )
1793
1792
.getMember ( "array" )
1794
1793
.getMember ( [ "SimpleArrayField" , "SplitArrayField" ] )
1795
- .getASubclass * ( )
1796
1794
or
1797
1795
result =
1798
1796
API:: moduleImport ( "django" )
@@ -1801,7 +1799,6 @@ private module Django {
1801
1799
.getMember ( "forms" )
1802
1800
.getMember ( "hstore" )
1803
1801
.getMember ( "HStoreField" )
1804
- .getASubclass * ( )
1805
1802
or
1806
1803
result =
1807
1804
API:: moduleImport ( "django" )
@@ -1813,15 +1810,16 @@ private module Django {
1813
1810
"BaseRangeField" , "DateRangeField" , "DateTimeRangeField" , "DecimalRangeField" ,
1814
1811
"IntegerRangeField"
1815
1812
] )
1816
- .getASubclass * ( )
1817
1813
or
1818
1814
result =
1819
1815
API:: moduleImport ( "django" )
1820
1816
.getMember ( "forms" )
1821
1817
.getMember ( "models" )
1822
1818
.getMember ( [ "InlineForeignKeyField" , "ModelChoiceField" , "ModelMultipleChoiceField" ] )
1823
- .getASubclass * ( )
1824
1819
}
1820
+
1821
+ /** Gets a reference to the `django.forms.fields.Field` class or any subclass. */
1822
+ API:: Node subclassRef ( ) { result = modeledSubclassRef ( ) .getASubclass * ( ) }
1825
1823
}
1826
1824
}
1827
1825
0 commit comments