История изменений
Исправление
tz4678,
(текущая версия)
:
Значениями битовых флагов должны быть двойки в степени иначе работать не будет. Там все на двоичное представление завязано. Должны быть 0001, 0010, 0100. Сочетания этих флагов будут давать что-то типа 0101.
In [11]: (2 | 4 | 8) & 8
Out[11]: 8
In [12]: (2 | 4) & 8
Out[12]: 0
...
In [16]: CREATE = 1 << 1
In [17]: READ = 1 << 2
In [18]: UPDATE = 1 << 3
In [19]: DELETE = 1 << 4
In [20]: CREATE
Out[20]: 2
In [21]: DELETE
Out[21]: 16
In [22]: CREATE | READ | UPDATE
Out[22]: 14
In [23]: (CREATE | READ | UPDATE) & DELETE
Out[23]: 0
In [24]: (CREATE | READ | UPDATE) & UPDATE
Out[24]: 8
Исходная версия
tz4678,
:
Битовые флаги должны двойки в степени иначе работать не будет. Там все на двоичное представление завязано. Должны быть 0001, 0010, 0100. Сочетания этих флагов будут давать что-то типа 0101.
In [11]: (2 | 4 | 8) & 8
Out[11]: 8
In [12]: (2 | 4) & 8
Out[12]: 0
...
In [16]: CREATE = 1 << 1
In [17]: READ = 1 << 2
In [18]: UPDATE = 1 << 3
In [19]: DELETE = 1 << 4
In [20]: CREATE
Out[20]: 2
In [21]: DELETE
Out[21]: 16
In [22]: CREATE | READ | UPDATE
Out[22]: 14
In [23]: (CREATE | READ | UPDATE) & DELETE
Out[23]: 0
In [24]: (CREATE | READ | UPDATE) & UPDATE
Out[24]: 8