diff --git a/tools/linter_lib/custom_check.py b/tools/linter_lib/custom_check.py index 24cf35d3a3..1accba1c73 100644 --- a/tools/linter_lib/custom_check.py +++ b/tools/linter_lib/custom_check.py @@ -494,6 +494,17 @@ def build_custom_checkers(by_lang): 'bad_lines': ['desc = models.CharField(null=True) # type: Text', 'stream = models.ForeignKey(Stream, null=True, on_delete=CASCADE) # type: Stream'], }, + {'pattern': ' = models[.](?!NullBoolean).*\) # type: Optional', # Optional tag, except NullBoolean(Field) + 'exclude_pattern': 'null=True', + 'include_only': {"zerver/models.py"}, + 'description': 'Model variable annotated with Optional but variable does not have null=true.', + 'good_lines': ['desc = models.TextField(null=True) # type: Optional[Text]', + 'stream = models.ForeignKey(Stream, null=True, on_delete=CASCADE) # type: Optional[Stream]', + 'desc = models.TextField() # type: Text', + 'stream = models.ForeignKey(Stream, on_delete=CASCADE) # type: Stream'], + 'bad_lines': ['desc = models.TextField() # type: Optional[Text]', + 'stream = models.ForeignKey(Stream, on_delete=CASCADE) # type: Optional[Stream]'], + }, ]) + whitespace_rules + comma_whitespace_rule bash_rules = cast(RuleList, [ {'pattern': '#!.*sh [-xe]', diff --git a/zerver/models.py b/zerver/models.py index a228c48ec4..8e811f29a8 100644 --- a/zerver/models.py +++ b/zerver/models.py @@ -870,7 +870,7 @@ class PreregistrationUser(models.Model): realm = models.ForeignKey(Realm, null=True, on_delete=CASCADE) # type: Optional[Realm] - invited_as_admin = models.BooleanField(default=False) # type: Optional[bool] + invited_as_admin = models.BooleanField(default=False) # type: bool class MultiuseInvite(models.Model): referred_by = models.ForeignKey(UserProfile, on_delete=CASCADE) # Optional[UserProfile]