def handle(self, *args, **options): """List installed checks.""" ignores = [] lines = [] for check in sorted(CHECKS.values(), key=sorter): is_format = isinstance(check, BaseFormatCheck) if not is_format and lines: self.flush_lines(lines) # Output immediately self.stdout.write(f".. _{check.doc_id}:\n") if not lines: lines.append("\n") lines.append(str(check.name)) if is_format: lines.append("*" * len(check.name)) else: lines.append("~" * len(check.name)) lines.append("\n") lines.append("\n".join(wrap(f"*{check.description}*", 79))) lines.append("\n") if not is_format: self.flush_lines(lines) ignores.append(f"``{check.ignore_string}``") ignores.append(f' Skip the "{check.name}" quality check.') self.stdout.write("\n") self.stdout.writelines(ignores)
class Migration(migrations.Migration): replaces = [("checks", "0001_initial"), ("checks", "0002_auto_20180416_1509")] initial = True dependencies = [ ("lang", "0011_auto_20180215_1158"), ("trans", "0130_auto_20180416_1503"), ] operations = [ migrations.CreateModel( name="Check", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ("content_hash", models.BigIntegerField()), ( "check", models.CharField(choices=CHECKS.get_choices(), max_length=50), ), ("ignore", models.BooleanField(db_index=True, default=False)), ( "language", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="lang.Language", ), ), ( "project", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="trans.Project" ), ), ], ), migrations.AlterUniqueTogether( name="check", unique_together={("content_hash", "project", "language", "check")}, ), migrations.AlterIndexTogether( name="check", index_together={("project", "language", "content_hash")} ), ]
def handle(self, *args, **options): """List installed checks.""" ignores = [] enables = [] lines = [] for check in sorted(CHECKS.values(), key=sorter): check_class = check.__class__ is_format = isinstance(check, BaseFormatCheck) # Output immediately self.stdout.write(f".. _{check.doc_id}:\n") if not lines: lines.append("\n") name = escape(check.name) lines.append(name) if is_format: lines.append("*" * len(name)) else: lines.append("~" * len(name)) lines.append("\n") lines.append(f":Summary: {escape(check.description)}") if check.target: if check.ignore_untranslated: lines.append(":Scope: translated strings") else: lines.append(":Scope: all strings") if check.source: lines.append(":Scope: source strings") lines.append( f":Check class: ``{check_class.__module__}.{check_class.__qualname__}``" ) if check.default_disabled: lines.append(f":Flag to enable: ``{check.enable_string}``") lines.append(f":Flag to ignore: ``{check.ignore_string}``") lines.append("\n") self.flush_lines(lines) ignores.append(f"``{check.ignore_string}``") ignores.append( f" Skip the :ref:`{check.doc_id}` quality check.") if check.default_disabled: enables.append(f"``{check.enable_string}``") enables.append( f" Enable the :ref:`{check.doc_id}` quality check.") self.stdout.write("\n") self.stdout.writelines(enables) self.stdout.writelines(ignores)
class Migration(migrations.Migration): replaces = [ ("checks", "0001_squashed_0002_auto_20180416_1509"), ("checks", "0002_check_unit"), ("checks", "0003_auto_20191212_1441"), ] initial = True dependencies = [ ("trans", "0001_squashed_0143_auto_20180609_1655"), ("lang", "0001_squashed_0011_auto_20180215_1158"), ("trans", "0052_auto_20191212_1403"), ("trans", "0054_auto_20191212_1441"), ] operations = [ migrations.CreateModel( name="Check", fields=[ ( "id", models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name="ID", ), ), ( "check", models.CharField( choices=CHECKS.get_choices(), max_length=50, ), ), ("ignore", models.BooleanField(db_index=True, default=False)), ( "unit", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="trans.Unit"), ), ], options={"unique_together": {("unit", "check")}}, ), ]
def handle(self, *args, **options): """List installed checks.""" lines = [] for check in sorted(CHECKS.values(), key=sorter): is_format = isinstance(check, BaseFormatCheck) if not is_format and lines: self.flush_lines(lines) # Output immediatelly self.stdout.write(".. _{}:\n".format(check.doc_id)) if not lines: lines.append("\n") lines.append(str(check.name)) if is_format: lines.append("*" * len(check.name)) else: lines.append("~" * len(check.name)) lines.append("\n") lines.append("\n".join(wrap("*{}*".format(check.description), 79))) lines.append("\n") if not is_format: self.flush_lines(lines)
def prefetch_checks(self): """Prefetch check stats.""" allchecks = {check.url_id for check in CHECKS.values()} stats = (self._object.unit_set.filter( check__dismissed=False).values("check__check").annotate( strings=Count("pk"), words=Sum("num_words"), chars=Sum(Length("source")))) for stat in stats: check = stat["check__check"] # Filtering here is way more effective than in SQL if check is None: continue check = "check:{}".format(check) self.store(check, stat["strings"]) self.store(check + "_words", stat["words"]) self.store(check + "_chars", stat["chars"]) allchecks.discard(check) for check in allchecks: self.store(check, 0) self.store(check + "_words", 0) self.store(check + "_chars", 0)
from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy from weblate.checks.models import CHECKS from weblate.checks.parser import ( SYNTAXCHARS, FlagsParser, multi_value_flag, single_value_flag, ) from weblate.fonts.utils import get_font_weight PLAIN_FLAGS = { v.enable_string: v.name for k, v in CHECKS.items() if v.default_disabled and not v.param_type } TYPED_FLAGS = { v.enable_string: v.name for k, v in CHECKS.items() if v.param_type } TYPED_FLAGS_ARGS = { v.enable_string: v.param_type for k, v in CHECKS.items() if v.param_type } PLAIN_FLAGS["rst-text"] = gettext_lazy("RST text") PLAIN_FLAGS["md-text"] = gettext_lazy("Markdown text") PLAIN_FLAGS["xml-text"] = gettext_lazy("XML text") PLAIN_FLAGS["dos-eol"] = gettext_lazy("DOS line endings") PLAIN_FLAGS["url"] = gettext_lazy("URL")
from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ from django.utils.translation import gettext_lazy from weblate.checks.models import CHECKS from weblate.checks.parser import ( SYNTAXCHARS, FlagsParser, multi_value_flag, single_value_flag, ) from weblate.fonts.utils import get_font_weight PLAIN_FLAGS = { v.enable_string: v.name for k, v in CHECKS.items() if v.default_disabled and not v.param_type } TYPED_FLAGS = {v.enable_string: v.name for k, v in CHECKS.items() if v.param_type} TYPED_FLAGS_ARGS = { v.enable_string: v.param_type for k, v in CHECKS.items() if v.param_type } PLAIN_FLAGS["rst-text"] = gettext_lazy("RST text") PLAIN_FLAGS["md-text"] = gettext_lazy("Markdown text") PLAIN_FLAGS["xml-text"] = gettext_lazy("XML text") PLAIN_FLAGS["dos-eol"] = gettext_lazy("DOS line endings") PLAIN_FLAGS["url"] = gettext_lazy("URL") PLAIN_FLAGS["auto-java-messageformat"] = gettext_lazy( "Automatically detect Java MessageFormat" )