Bulgarian Banking Integration - Crypto Wallet

l10n_bg_bank_wallet
REPOSITORY
REPOSITORYOCA/l10n-bulgaria
GIT
GIThttps://github.com/OCA/l10n-bulgaria.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/l10n-bulgaria/tree/18.0/l10n_bg_bank_wallet
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYLocalization
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Rosen Vladimirov
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Rosen Vladimirov
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, rosenvladimirov
WEBSITE
WEBSITEhttps://github.com/OCA/l10n-bulgaria
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - base
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES cryptography
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Secure storage of cryptographic keys and passwords for banking integrations.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
crypto_wallet_form_view crypto.wallet.form crypto.wallet form New
crypto_wallet_search_view crypto.wallet.search crypto.wallet search New
crypto_wallet_tree_view crypto.wallet.list crypto.wallet list New
view_crypto_wallet_add_key_wizard_form crypto.wallet.add.key.wizard.form crypto.wallet.add.key.wizard form New
view_crypto_wallet_change_password_wizard_form crypto.wallet.change.password.wizard.form crypto.wallet.change.password.wizard form New
view_crypto_wallet_export_wizard_form crypto.wallet.export.wizard.form crypto.wallet.export.wizard form New
view_crypto_wallet_generate_keypair_wizard_form crypto.wallet.generate.keypair.wizard.form crypto.wallet.generate.keypair.wizard form New
view_crypto_wallet_key_manager_form crypto.wallet.key.manager.form crypto.wallet.key.manager form New
view_crypto_wallet_unlock_wizard_form crypto.wallet.unlock.wizard.form crypto.wallet.unlock.wizard form New
Models touched (8)

New fields (10)
  • created_date Datetime
    default=fields.Datetime.now readonly=True args: 'Wallet created at'
  • decrypted_keys Text
    readonly=True store=False
  • encrypted_data Text
    readonly=True args: 'Encrypted data'
  • file_path Char
    readonly=True args: 'File path on disk'
  • is_locked Boolean
    default=True args: 'Locked'
  • last_accessed Datetime
    readonly=True args: 'Last opened'
  • master_password Char
    store=False args: 'Master password'
  • name Char
    required=True
  • salt Text
    readonly=True args: 'Salt to encrypt'
  • user_id Many2one → res.users
    default=<expr> required=True args: 'res.users', 'User'
Public methods (30)
  • action_add_key(self)
    Action for 'Add Key' button - opens wizard
  • action_change_master_password(self)
    Action for 'Change Master Password' button - opens wizard
  • action_export_wallet(self)
    Action for 'Export Wallet' button - opens wizard
  • action_list_keys(self)
    Action for the 'Show All Keys' button - shows a detailed list
  • action_manage_keys(self)
    Action for the 'Manage Keys' button-shows key management interface
  • action_unlock_wallet(self)
    Action for 'Unlock Wallet' button - opens wizard
  • add_key_with_user_password(self, key_name, key_type, key_data)
    Add key using user's master password
  • change_master_password(self, old_password, new_password)
    Change wallet master password
  • check_access(self, operation)
    Override for record access checks - updated for Odoo 18.0
  • cleanup_orphaned_files(self)
    Clean up files without corresponding records in database
  • copy_key_to_user(self, key_name, target_user_id)
    Copy key to another user's wallet
  • create(self, vals_list)
    @api.model_create_multi
    Create new crypto wallet records
  • crypto_manager(self)
    @property
    Lazy initialization of crypto manager
  • export_wallet(self, master_password=None, export_password=None)
    Export wallet for backup
  • filesystem_manager(self)
    @property
    Lazy initialization of filesystem manager
  • generate_keypair(self, key_name, key_type='rsa')
    Generate keypair (public/private)
  • get_key_with_user_password(self, key_name)
    Get key using user's password
  • get_user_master_password(self)
    Get master password for current user - renamed for clarity
  • get_user_wallet(self, user_id=None)
    @api.model
    Get a user wallet without creating if it doesn't exist
  • get_user_wallet_or_create(self, user_id=None)
    @api.model
    Get user wallet, create if doesn't exist - renamed for clarity
  • list_keys_with_user_password(self)
    List keys using user's password
  • list_wallet_files_on_disk(self)
    Show all wallet files on disk
  • lock_wallet(self)
    Lock the wallet
  • quick_access(self, key_name, user_id=None)
    Quick access to the key
  • quick_store(self, key_name, key_type, key_data, user_id=None)
    Quick key storage
  • remove_key_with_user_password(self, key_name)
    Remove key using user's password
  • unlink(self)
    Remove wallet and file from disk
  • unlock_wallet_with_password(self, master_password)
    Unlock wallet with master password - renamed for clarity
  • unlock_with_user_password(self)
    Unlock wallet using user's master password
  • write(self, vals)
    Update crypto wallet records

New fields (4)
  • description Text
    help='Допълнителна информация за ключа' args: 'Описание'
  • key_data Text
    help='Съдържанието на ключа (ще бъде криптирано)' required=True args: 'Данни на ключа'
  • key_name Char
    help='Уникално име за идентификация на ключа' required=True args: 'Име на ключа'
  • key_type Selection
    default='api_key' required=True args: [('rsa_private', 'RSA Частен ключ'), ('rsa_public', 'RSA Публичен ключ'), ('api_key', 'API ключ'), ('password', 'Парола'), ('certificate', 'Сертификат'), ('token', 'Токен'), ('ssh_key', 'SSH ключ'), ('pgp_key', 'PGP ключ'), ('other', 'Друго')], 'Тип на ключа'
Public methods (4)
  • add_key_and_add_another(self)
    Добавя ключа и отваря нов wizard за следващ ключ
  • add_key_to_wallet(self)
    Добавя ключа в портфела на потребителя
  • default_get(self, fields_list)
    @api.model
    Задава defaults при отворяне на wizard-a
  • preview_key_info(self)
    Показва preview на информацията за ключа

New fields (6)
  • confirm_password Char
    help='Въведете отново новата парола за потвърждение' args: 'Потвърди новата парола'
  • new_password Char
    help='Въведете новата главна парола' args: 'Нова парола'
  • old_password Char
    help='Въведете текущата главна парола' args: 'Стара парола'
  • update_user_password Boolean
    default=False help='Обновява и паролата на потребителя в системата' args: 'Обнови паролата на потребителя'
  • use_current_user_password Boolean
    default=True help='Използва паролата на текущия потребител като стара парола' args: 'Използвай паролата на потребителя като стара'
  • wallet_id Many2one → crypto.wallet
    args: 'crypto.wallet', 'Портфел'
Public methods (2)
  • change_password(self)
    Променя главната парола на портфела
  • change_password_and_unlock(self)
    Променя паролата и отключва портфела

New fields (9)
  • confirm_export_password Char
    help='Потвърдете паролата за експорта' args: 'Потвърди паролата'
  • export_data Text
    readonly=True args: 'Експортирани данни'
  • export_filename Char
    readonly=True args: 'Име на файла'
  • export_format Selection
    default='encrypted' required=True args: [('json', 'JSON (незащитен)'), ('encrypted', 'Криптиран експорт')], 'Формат на експорта'
  • export_password Char
    help='Парола за криптиране на експорта (само за криптиран формат)' args: 'Парола за експорта'
  • include_metadata Boolean
    default=True help='Включва създаване дата, потребител и др.' args: 'Включи метаданни'
  • master_password Char
    help='Въведете главната парола за отключване на портфела' args: 'Главна парола'
  • use_user_password Boolean
    default=True help='Използва паролата на текущия потребител' args: 'Използвай паролата на потребителя'
  • wallet_id Many2one → crypto.wallet
    args: 'crypto.wallet', 'Портфел'
Public methods (3)
  • copy_to_clipboard(self)
    Копира данните в clipboard (чрез JavaScript)
  • download_export(self)
    Създава файл за изтегляне
  • export_wallet(self)
    Експортира портфела

New fields (7)
  • description Text
    help='Описание на предназначението на ключовете' args: 'Описание'
  • generation_result Text
    readonly=True args: 'Резултат от генерирането'
  • key_name Char
    help='Базово име за двойката ключове (ще се добавят _private и _public)' required=True args: 'Име на ключовете'
  • key_type Selection
    default='rsa' required=True args: [('rsa', 'RSA (2048 бита)'), ('ec', 'Elliptic Curve (SECP256R1)')], 'Тип на ключовете'
  • private_key_name Char
    readonly=True args: 'Име на частния ключ'
  • public_key_name Char
    readonly=True args: 'Име на публичния ключ'
  • wallet_id Many2one → crypto.wallet
    required=True args: 'crypto.wallet', 'Портфел'
Public methods (4)
  • generate_and_add_another(self)
    Генерира ключове и отваря нов wizard
  • generate_keypair(self)
    Генерира двойка ключове
  • view_private_key(self)
    Показва частния ключ
  • view_public_key(self)
    Показва публичния ключ

New fields (8)
  • is_wallet_locked Boolean
    compute='_compute_wallet_state' args: 'Портфелът е заключен'
  • key_list Text
    compute='_compute_key_list' args: 'Списък с ключове'
  • keys_count Integer
    compute='_compute_wallet_state' args: 'Брой ключове'
  • selected_key_created Char
    readonly=True args: 'Дата на създаване'
  • selected_key_data Text
    readonly=True args: 'Данни на ключа'
  • selected_key_name Char
    args: 'Избран ключ'
  • selected_key_type Char
    readonly=True args: 'Тип на ключа'
  • wallet_id Many2one → crypto.wallet
    required=True args: 'crypto.wallet', 'Портфел'
Public methods (7)
  • add_key(self)
    Отваря wizard за добавяне на ключ
  • export_key(self)
    Експортира конкретен ключ
  • generate_keypair(self)
    Отваря wizard за генериране на двойка ключове
  • refresh_keys(self)
    Обновява списъка с ключове
  • remove_key(self)
    Премахва избрания ключ
  • unlock_wallet(self)
    Отваря wizard за отключване на портфела
  • view_key(self)
    Показва данните на избрания ключ

New fields (3)
  • master_password Char
    help='Въведете главната парола за отключване на портфела' args: 'Главна парола'
  • use_user_password Boolean
    default=True help='Използва паролата на текущия потребител като главна парола' args: 'Използвай паролата на потребителя'
  • wallet_id Many2one → crypto.wallet
    args: 'crypto.wallet', 'Портфел'
Public methods (2)
  • unlock_and_show_keys(self)
    Отключва портфела и показва списък с ключовете
  • unlock_wallet(self)
    Отключва портфела

New fields (1)
  • crypto_wallet_ids One2many → crypto.wallet
    help='Криптирани портфейли на потребителя' string='Crypto Wallets' args: 'crypto.wallet', 'user_id'
Public methods (0)

No public methods.