Includes: - Odoo 19 framework (odoo/) - 27 custom EnCoach addons (new_project/custom_addons/) - encoach_core, encoach_api, encoach_lms_api, encoach_adaptive_api - encoach_exam, encoach_taxonomy, encoach_adaptive, encoach_assignment - encoach_ai, encoach_ai_grading, encoach_ai_generation, encoach_ai_media - encoach_courseware, encoach_communication, encoach_subscription - encoach_notification, encoach_approval, encoach_branding - encoach_classroom, encoach_registration, encoach_stats - encoach_faq, encoach_ticket, encoach_training, encoach_resources - encoach_adaptive_ai, encoach_sis - 21 OpenEduCat Enterprise modules (new_project/enterprise-19/) - 14 OpenEduCat Community modules (new_project/openeducat_erp-19.0/) - Configuration: odoo.conf, requirements.txt, scripts - 200+ REST API endpoints with JWT authentication - SRS and test documentation Made-with: Cursor
29 lines
955 B
Python
29 lines
955 B
Python
import secrets
|
|
import sys
|
|
import textwrap
|
|
|
|
from passlib.hash import pbkdf2_sha512
|
|
|
|
from odoo.cli import Command
|
|
from odoo.tools import config
|
|
|
|
|
|
class GenProxyToken(Command):
|
|
""" Generate and (re)set proxy access token in config file """
|
|
|
|
def generate_token(self, length=16):
|
|
token = secrets.token_hex(int(length / 2))
|
|
split_size = int(length / 4)
|
|
return '-'.join(textwrap.wrap(token, split_size))
|
|
|
|
def run(self, cmdargs):
|
|
self.parser.add_argument('-c', '--config', type=str, help="Specify an alternate config file")
|
|
self.parser.add_argument('--token-length', type=int, help="Token Length", default=16)
|
|
args, _ = self.parser.parse_known_args()
|
|
if args.config:
|
|
config.rcfile = args.config
|
|
token = self.generate_token(length=args.token_length)
|
|
config['proxy_access_token'] = pbkdf2_sha512.hash(token)
|
|
config.save()
|
|
sys.stdout.write(f'{token}\n')
|