Skip to content

Commit

Permalink
Adicionando função is_valid_processo_juridico #207 (#248)
Browse files Browse the repository at this point in the history
Co-authored-by: Marcel Cattaneo <marcel.cattaneo@deal.com.br>
  • Loading branch information
MarcelFox and Marcel Cattaneo committed Oct 16, 2023
1 parent cad13df commit 11a34a8
Show file tree
Hide file tree
Showing 6 changed files with 78 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Utilitário `is_valid_titulo_eleitoral` [#235](https://github.com/brazilian-utils/brutils-python/pull/235)
- Suporte ao Python 3.12 [#245](https://github.com/brazilian-utils/brutils-python/pull/245)
- Utilitário `is_valid_processo_juridico` [#207](https://github.com/brazilian-utils/brutils-python/pull/207)
- Utilitário `generate_processo_juridico` [#208](https://github.com/brazilian-utils/brutils-python/pull/208)
- Utilitário `get_license_plate_format` [#243](https://github.com/brazilian-utils/brutils-python/pull/243)
- Utilitário `is_valid_license_plate` [#237](https://github.com/brazilian-utils/brutils-python/pull/237)
Expand Down
18 changes: 18 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ False
- [format_processo_juridico](#format_processo_juridico)
- [remove\_symbols\_processo\_juridico](#remove_symbols_processo_juridico)
- [generate_processo_juridico](#generate_processo_juridico)
- [is_valid_processo_juridico](#is_valid_processo_juridico)

## CPF

Expand Down Expand Up @@ -538,6 +539,23 @@ Gera um número de processo válido de acordo com o ano informado e o órgão. P
>>>
```

## is_valid_processo_juridico

Verifica se o número de um processo informado por string é válido ou não.

```python
>>> from brutils import is_valid_processo_juridico
>>> is_valid_processo_juridico('10188748220234018200')
True
>>> is_valid_processo_juridico('45532346920234025107')
True
>>> is_valid_processo_juridico('00000000000000000000')
False
>>> is_valid_processo_juridico('455323423QQWEQWSsasd&*(()')
False
>>>
```

# Novos Utilitários e Reportar Bugs

Caso queira sugerir novas funcionalidades ou reportar bugs, basta criar
Expand Down
18 changes: 18 additions & 0 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ False
- [format_processo_juridico](#format_processo_juridico)
- [remove\_symbols\_processo\_juridico](#remove_symbols_processo_juridico)
- [generate_processo_juridico](#generate_processo_juridico)
- [is_valid_processo_juridico](#is_valid_processo_juridico)

## CPF

Expand Down Expand Up @@ -546,6 +547,23 @@ Generates a valid legal process number according to the arguments of _ano_ which
>>>
```

## is_valid_processo_juridico

Checks if a string containing a legal process number is valid or not.

```python
>>> from brutils import is_valid_processo_juridico
>>> is_valid_processo_juridico('10188748220234018200')
True
>>> is_valid_processo_juridico('45532346920234025107')
True
>>> is_valid_processo_juridico('00000000000000000000')
False
>>> is_valid_processo_juridico('455323423QQWEQWSsasd&*(()')
False
>>>
```

# Feature Request and Bug Report

If you want to suggest new features or report bugs, simply create
Expand Down
1 change: 1 addition & 0 deletions brutils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,6 @@
from brutils.legal_process import (
format_processo_juridico,
generate_processo_juridico,
is_valid_processo_juridico,
remove_symbols as remove_symbols_processo_juridico,
)
26 changes: 26 additions & 0 deletions brutils/legal_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,29 @@ def _checksum(basenum): # type: (int) -> str
`basenum` needs to be a digit without the verification id.
"""
return str(97 - ((int(basenum) * 100) % 97)).zfill(2)


def is_valid_processo_juridico(legal_process_id): # type: (str) -> bool
"""
Returns whether or not the verifying checksum digits of the given Legal
Process ID number match it's varification digit and if the numbers match
a valid ID from a legal process.
"""
clean_legal_process_id = remove_symbols(legal_process_id)
DD = clean_legal_process_id[7:9]
J = clean_legal_process_id[13:14]
TR = clean_legal_process_id[14:16]
OOOO = clean_legal_process_id[16:]
with open("brutils/data/legal_process_ids.json") as file:
legal_process_ids = json.load(file)
process = legal_process_ids.get(f"orgao_{J}")
if not process:
return False
valid_process = int(TR) in process.get("id_tribunal") and int(
OOOO
) in process.get("id_foro")

return (
_checksum(int(clean_legal_process_id[0:7] + clean_legal_process_id[9:]))
== DD
) and valid_process
14 changes: 14 additions & 0 deletions tests/test_legal_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
remove_symbols,
generate_processo_juridico,
_checksum,
is_valid_processo_juridico,
)


Expand Down Expand Up @@ -61,6 +62,19 @@ def test_check_sum(self):
self.assertEqual(_checksum(546611720238150014), "77")
self.assertEqual(_checksum(403818720238230498), "50")

def test_is_valid_processo_juridico(self):
self.assertTrue(is_valid_processo_juridico("10188748220234018200"))
self.assertTrue(is_valid_processo_juridico("45532346920234025107"))
self.assertFalse(is_valid_processo_juridico("10188748220239918200"))
self.assertFalse(is_valid_processo_juridico("00000000000000000000"))
self.assertFalse(is_valid_processo_juridico("455323469202340251"))
self.assertFalse(
is_valid_processo_juridico("455323469202340257123123123")
)
self.assertFalse(
is_valid_processo_juridico("455323423QQWEQWSsasd&*(()")
)


if __name__ == "__main__":
unittest.main()

0 comments on commit 11a34a8

Please sign in to comment.