Przeglądaj źródła

feat: add create tenant command (#4974)

tags/0.6.11
takatost 1 rok temu
rodzic
commit
3579fd1b09
No account linked to committer's email address
2 zmienionych plików z 46 dodań i 2 usunięć
  1. 45
    1
      api/commands.py
  2. 1
    1
      api/pyproject.toml

+ 45
- 1
api/commands.py Wyświetl plik

import base64 import base64
import json import json
import secrets import secrets
from typing import Optional


import click import click
from flask import current_app from flask import current_app
from werkzeug.exceptions import NotFound from werkzeug.exceptions import NotFound


from constants.languages import languages
from core.rag.datasource.vdb.vector_factory import Vector from core.rag.datasource.vdb.vector_factory import Vector
from core.rag.models.document import Document from core.rag.models.document import Document
from extensions.ext_database import db from extensions.ext_database import db
from models.dataset import Document as DatasetDocument from models.dataset import Document as DatasetDocument
from models.model import Account, App, AppAnnotationSetting, AppMode, Conversation, MessageAnnotation from models.model import Account, App, AppAnnotationSetting, AppMode, Conversation, MessageAnnotation
from models.provider import Provider, ProviderModel from models.provider import Provider, ProviderModel
from services.account_service import RegisterService, TenantService




@click.command('reset-password', help='Reset the account password.') @click.command('reset-password', help='Reset the account password.')
account.password = base64_password_hashed account.password = base64_password_hashed
account.password_salt = base64_salt account.password_salt = base64_salt
db.session.commit() db.session.commit()
click.echo(click.style('Congratulations!, password has been reset.', fg='green'))
click.echo(click.style('Congratulations! Password has been reset.', fg='green'))




@click.command('reset-email', help='Reset the account email.') @click.command('reset-email', help='Reset the account email.')
fg='green')) fg='green'))




@click.command('create-tenant', help='Create account and tenant.')
@click.option('--email', prompt=True, help='The email address of the tenant account.')
@click.option('--language', prompt=True, help='Account language, default: en-US.')
def create_tenant(email: str, language: Optional[str] = None):
"""
Create tenant account
"""
if not email:
click.echo(click.style('Sorry, email is required.', fg='red'))
return

# Create account
email = email.strip()

if '@' not in email:
click.echo(click.style('Sorry, invalid email address.', fg='red'))
return

account_name = email.split('@')[0]

if language not in languages:
language = 'en-US'

# generate random password
new_password = secrets.token_urlsafe(16)

# register account
account = RegisterService.register(
email=email,
name=account_name,
password=new_password,
language=language
)

TenantService.create_owner_tenant_if_not_exist(account)

click.echo(click.style('Congratulations! Account and tenant created.\n'
'Account: {}\nPassword: {}'.format(email, new_password), fg='green'))


def register_commands(app): def register_commands(app):
app.cli.add_command(reset_password) app.cli.add_command(reset_password)
app.cli.add_command(reset_email) app.cli.add_command(reset_email)
app.cli.add_command(vdb_migrate) app.cli.add_command(vdb_migrate)
app.cli.add_command(convert_to_agent_apps) app.cli.add_command(convert_to_agent_apps)
app.cli.add_command(add_qdrant_doc_id_index) app.cli.add_command(add_qdrant_doc_id_index)
app.cli.add_command(create_tenant)



+ 1
- 1
api/pyproject.toml Wyświetl plik

line-length = 120 line-length = 120


[tool.ruff.lint] [tool.ruff.lint]
ignore-init-module-imports = true
select = [ select = [
"B", # flake8-bugbear rules "B", # flake8-bugbear rules
"F", # pyflakes rules "F", # pyflakes rules
"B006", # mutable-argument-default "B006", # mutable-argument-default
"B007", # unused-loop-control-variable "B007", # unused-loop-control-variable
"B026", # star-arg-unpacking-after-keyword-arg "B026", # star-arg-unpacking-after-keyword-arg
"B901", # return-in-generator
"B904", # raise-without-from-inside-except "B904", # raise-without-from-inside-except
"B905", # zip-without-explicit-strict "B905", # zip-without-explicit-strict
] ]

Ładowanie…
Anuluj
Zapisz