fixed PY-10902 PyCharm 3 no __init__ class introspection for django Meta classes

This commit is contained in:
Ekaterina Tuzova
2013-09-26 19:12:49 +04:00
parent 7a253cbc36
commit c9b8ad0f76
3 changed files with 19 additions and 0 deletions
@@ -2,7 +2,9 @@ package com.jetbrains.python.inspections;
import com.intellij.codeInspection.LocalInspectionToolSession;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.PyNames;
import com.jetbrains.python.inspections.quickfix.AddMethodQuickFix;
@@ -44,6 +46,11 @@ public class PyClassHasNoInitInspection extends PyInspection {
@Override
public void visitPyClass(PyClass node) {
final PyClass outerClass = PsiTreeUtil.getParentOfType(node, PyClass.class);
assert node != null;
if (outerClass != null && StringUtil.equalsIgnoreCase("meta", node.getName())) {
return;
}
final List<PyClassLikeType> types = node.getAncestorTypes(myTypeEvalContext);
for (PyClassLikeType type : types) {
if (type == null) return;
@@ -0,0 +1,8 @@
from django.db import models
class BasePage(models.Model):
title = models.CharField(max_length=50)
slug = models.CharField(max_length=50)
class Meta:
abstract = True
@@ -31,6 +31,10 @@ public class PyClassHasNoInitInspectionTest extends PyTestCase {
doTest();
}
public void testMeta() {
doTest();
}
public void testUnresolvedAncestor() {
doTest();
}