This repository has been archived by the owner on Jan 24, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
7 changed files
with
429 additions
and
327 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,80 +1,83 @@ | ||
from typing import Optional | ||
from pydantic.functional_validators import model_validator, field_validator | ||
from typing_extensions import Annotated | ||
|
||
from pydantic import BaseModel, constr, validator, root_validator | ||
from pydantic import BaseModel, StringConstraints | ||
|
||
from ..services.barcode_cobranca import BarcodeCobrancaService | ||
from ..services.barcode_tributo import BarcodeTributoService | ||
|
||
|
||
class BarcodeCobranca(BaseModel): | ||
code_line: Optional[constr(min_length=47, max_length=47, regex=r"^\d+$")] | ||
barcode: Optional[constr(min_length=44, max_length=44, regex=r"^\d+$")] | ||
barcode_image: Optional[str] | ||
|
||
# noinspection PyMethodParameters | ||
@validator("code_line") | ||
code_line: Annotated[ | ||
str, StringConstraints(min_length=47, max_length=47, pattern=r"^\d+$") | ||
] = None | ||
barcode: Annotated[ | ||
str, StringConstraints(min_length=44, max_length=44, pattern=r"^\d+$") | ||
] = None | ||
barcode_image: str = None | ||
|
||
@classmethod | ||
@field_validator("code_line") | ||
def _code_line_must_be_valid(cls, code_line): | ||
BarcodeCobrancaService().validate_code_line(code_line) | ||
return code_line | ||
|
||
# noinspection PyMethodParameters | ||
@validator("barcode") | ||
@classmethod | ||
@field_validator("barcode") | ||
def _barcode_must_be_valid(cls, barcode): | ||
BarcodeCobrancaService().validate_barcode(barcode) | ||
return barcode | ||
|
||
# noinspection PyMethodParameters | ||
@root_validator | ||
def _set_data(cls, values): | ||
@model_validator(mode="after") | ||
def _set_barcode_or_code_line(self): | ||
from ..services.barcode import BarcodeService | ||
|
||
code_line, barcode = values.get("code_line"), values.get("barcode") | ||
code_line, barcode = self.code_line, self.barcode | ||
|
||
if code_line: | ||
values["barcode"] = BarcodeCobrancaService().code_line_to_barcode(code_line) | ||
self.barcode = BarcodeCobrancaService().code_line_to_barcode(code_line) | ||
elif barcode: | ||
values["code_line"] = BarcodeCobrancaService().barcode_to_code_line(barcode) | ||
self.code_line = BarcodeCobrancaService().barcode_to_code_line(barcode) | ||
else: | ||
raise ValueError("Informe a linha digitável ou código de barras!") | ||
|
||
values["barcode_image"] = BarcodeService().generate_barcode_b64image( | ||
values["barcode"] | ||
) | ||
return values | ||
self.barcode_image = BarcodeService().generate_barcode_b64image(self.barcode) | ||
return self | ||
|
||
|
||
class BarcodeTributo(BaseModel): | ||
code_line: Optional[constr(min_length=48, max_length=48, regex=r"^\d+$")] | ||
barcode: Optional[constr(min_length=44, max_length=44, regex=r"^\d+$")] | ||
barcode_image: Optional[str] | ||
|
||
# noinspection PyMethodParameters | ||
@validator("code_line") | ||
code_line: Annotated[ | ||
str, StringConstraints(min_length=48, max_length=48, pattern=r"^\d+$") | ||
] = None | ||
barcode: Annotated[ | ||
str, StringConstraints(min_length=44, max_length=44, pattern=r"^\d+$") | ||
] = None | ||
barcode_image: str = None | ||
|
||
@classmethod | ||
@field_validator("code_line") | ||
def _code_line_must_be_valid(cls, code_line): | ||
BarcodeTributoService().validate_code_line(code_line) | ||
return code_line | ||
|
||
# noinspection PyMethodParameters | ||
@validator("barcode") | ||
@classmethod | ||
@field_validator("barcode") | ||
def _barcode_must_be_valid(cls, barcode): | ||
BarcodeTributoService().validate_barcode(barcode) | ||
return barcode | ||
|
||
# noinspection PyMethodParameters | ||
@root_validator | ||
def _set_data(cls, values): | ||
@model_validator(mode="after") | ||
def _set_barcode_or_code_line(self): | ||
from ..services.barcode import BarcodeService | ||
|
||
code_line, barcode = values.get("code_line"), values.get("barcode") | ||
code_line, barcode = self.code_line, self.barcode | ||
|
||
if code_line: | ||
values["barcode"] = BarcodeTributoService().code_line_to_barcode(code_line) | ||
self.barcode = BarcodeTributoService().code_line_to_barcode(code_line) | ||
elif barcode: | ||
values["code_line"] = BarcodeTributoService().barcode_to_code_line(barcode) | ||
self.code_line = BarcodeTributoService().barcode_to_code_line(barcode) | ||
else: | ||
raise ValueError("Informe a linha digitável ou código de barras!") | ||
|
||
values["barcode_image"] = BarcodeService().generate_barcode_b64image( | ||
values["barcode"] | ||
) | ||
return values | ||
self.barcode_image = BarcodeService().generate_barcode_b64image(self.barcode) | ||
return self |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.