123456789101112131415161718192021222324252627282930 |
- # coding=utf-8
- from __future__ import unicode_literals
- from .. import BaseProvider
- class Provider(BaseProvider):
- def ean(self, length=13):
- code = [self.random_digit() for _ in range(length - 1)]
- if length not in (8, 13):
- raise AssertionError("length can only be 8 or 13")
- if length == 8:
- weights = [3, 1, 3, 1, 3, 1, 3]
- elif length == 13:
- weights = [1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3]
- weighted_sum = sum([x * y for x, y in zip(code, weights)])
- check_digit = (10 - weighted_sum % 10) % 10
- code.append(check_digit)
- return ''.join(str(x) for x in code)
- def ean8(self):
- return self.ean(8)
- def ean13(self):
- return self.ean(13)
|