The business logic layer encodes the application's business rules, such as validations and automatic computations. We will add the logic for our button now. This is done with Python code, using the methods in the Python class that represent the model.
Previously, we added a button to the Book Form section to check whether the ISBN is valid. Modern ISBNs have 13 digits, where the last one is a check digit computed from the first 12.
There is little point getting into the details of the algorithm used, so here is a Python function that implements this validation. It should be added inside the class Book(...)
object, before the name
field:
@api.multi def _check_isbn(self): self.ensure_one() digits = [int(x) for x in self.isbn if x.isdigit()] if len(digits) == 13: ponderations = [1, 3] * 6 terms = [a * b for a, b in zip(digits[:12], ponderations)] remain = sum(terms) % 10 ...