Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added

- 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()