<commit_before>import re

from django import forms

from base.forms import \
    O2BaseForm, \
    O2FieldNivelForm, \
    O2FieldRefForm, \
    O2FieldTamanhoForm, \
    O2FieldCorForm, \
    O2FieldGtinForm, \
    O2FieldFiltroForm

from systextil.models import Produto as S_Produto

from .models import Produto


class ModeloForm(forms.Form):
    modelo = forms.CharField(
        label='Modelo', max_length=4, min_length=1,
        widget=forms.TextInput(attrs={'type': 'number',
                               'autofocus': 'autofocus'}))


class FiltroRefForm(
        O2BaseForm,
        O2FieldFiltroForm,
        O2FieldCorForm):

    alternativa = forms.IntegerField(
        required=False,
        widget=forms.TextInput(attrs={'type': 'number'}))

    roteiro = forms.IntegerField(
        required=False,
        widget=forms.TextInput(attrs={'type': 'number'}))

    class Meta:
        order_fields = ['filtro', 'cor', 'alternativa', 'roteiro']
        autofocus_field = 'filtro'


class GtinPesquisaForm(
        O2BaseForm,
        O2FieldRefForm,
        O2FieldGtinForm):

    class Meta:
        order_fields = ['ref', 'gtin']
        autofocus_field = 'ref'


class GtinDefineForm(
        O2BaseForm,
        O2FieldRefForm,
        O2FieldGtinForm):

    class Meta:
        order_fields = ['ref', 'gtin']
        autofocus_field = 'ref'


class ProdutoForm(forms.ModelForm):
    class Meta:
        model = Produto
        fields = '__all__'

    def clean(self):
        referencia = self.cleaned_data.get('referencia').upper()
        self.cleaned_data['referencia'] = referencia
        if len(referencia) != 5:
            raise forms.ValidationError(
                "Referência deve ter 5 números ou letras")
        if referencia >= 'A0000':
            raise forms.ValidationError("Referência não parece ser de PA")<commit_msg>evoluindo definição de form de gtin define<commit_after>import re

from django import forms

from base.forms import \
    O2BaseForm, \
    O2FieldNivelForm, \
    O2FieldRefForm, \
    O2FieldTamanhoForm, \
    O2FieldCorForm, \
    O2FieldGtinForm, \
    O2FieldFiltroForm

from systextil.models import Produto as S_Produto

from .models import Produto


class ModeloForm(forms.Form):
    modelo = forms.CharField(
        label='Modelo', max_length=4, min_length=1,
        widget=forms.TextInput(attrs={'type': 'number',
                               'autofocus': 'autofocus'}))


class FiltroRefForm(
        O2BaseForm,
        O2FieldFiltroForm,
        O2FieldCorForm):

    alternativa = forms.IntegerField(
        required=False,
        widget=forms.TextInput(attrs={'type': 'number'}))

    roteiro = forms.IntegerField(
        required=False,
        widget=forms.TextInput(attrs={'type': 'number'}))

    class Meta:
        order_fields = ['filtro', 'cor', 'alternativa', 'roteiro']
        autofocus_field = 'filtro'


class GtinPesquisaForm(
        O2BaseForm,
        O2FieldRefForm,
        O2FieldGtinForm):

    class Meta:
        order_fields = ['ref', 'gtin']
        autofocus_field = 'ref'


class GtinDefineForm(
        O2BaseForm,
        O2FieldRefForm,
        O2FieldTamanhoForm,
        O2FieldCorForm):

    class Meta:
        order_fields = ['ref', 'tamanho', 'cor']
        autofocus_field = 'ref'


class GtinDefineBarrasForm(
        O2BaseForm,
        O2FieldGtinForm):

    class Meta:
        autofocus_field = 'ref'


class ProdutoForm(forms.ModelForm):
    class Meta:
        model = Produto
        fields = '__all__'

    def clean(self):
        referencia = self.cleaned_data.get('referencia').upper()
        self.cleaned_data['referencia'] = referencia
        if len(referencia) != 5:
            raise forms.ValidationError(
                "Referência deve ter 5 números ou letras")
        if referencia >= 'A0000':
            raise forms.ValidationError("Referência não parece ser de PA")
{'fraction_non_alphanumeric': 0.10232796111537477, 'fraction_numerical': 0.013046815042210284, 'mean_word_length': 2.4817453250222616, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '769740', 'n_tokens_mistral': 1303, 'n_tokens_neox': 1256, 'n_words': 257}