423baff73b
- Docker bridge 网络隔离(8000 端口封死) - Gunicorn 4 Worker 多进程 - Alembic 数据库迁移基线 - 日志轮转 20m×3 - JWT 密钥 + DB 密码 + CORS 收紧 - 3-2-1 备份链路(NAS + R740-B 冷备) - 连接池 pool_pre_ping + pool_recycle=3600
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
import hashlib
|
|
|
|
from openpyxl.descriptors import (Bool, Integer, String)
|
|
from openpyxl.descriptors.excel import Base64Binary
|
|
from openpyxl.descriptors.serialisable import Serialisable
|
|
|
|
from openpyxl.worksheet.protection import (
|
|
hash_password,
|
|
_Protected
|
|
)
|
|
|
|
|
|
class ChartsheetProtection(Serialisable, _Protected):
|
|
tagname = "sheetProtection"
|
|
|
|
algorithmName = String(allow_none=True)
|
|
hashValue = Base64Binary(allow_none=True)
|
|
saltValue = Base64Binary(allow_none=True)
|
|
spinCount = Integer(allow_none=True)
|
|
content = Bool(allow_none=True)
|
|
objects = Bool(allow_none=True)
|
|
|
|
__attrs__ = ("content", "objects", "password", "hashValue", "spinCount", "saltValue", "algorithmName")
|
|
|
|
def __init__(self,
|
|
content=None,
|
|
objects=None,
|
|
hashValue=None,
|
|
spinCount=None,
|
|
saltValue=None,
|
|
algorithmName=None,
|
|
password=None,
|
|
):
|
|
self.content = content
|
|
self.objects = objects
|
|
self.hashValue = hashValue
|
|
self.spinCount = spinCount
|
|
self.saltValue = saltValue
|
|
self.algorithmName = algorithmName
|
|
if password is not None:
|
|
self.password = password
|