push
This commit is contained in:
72
app/cli.py
Normal file
72
app/cli.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import click
|
||||
from werkzeug.security import generate_password_hash
|
||||
from app.extensions import db
|
||||
from app.models.user import User
|
||||
from app.models.company import Company, UserCompanyAccess
|
||||
from app.seed import seed_data
|
||||
from app.services.backup_service import BackupService
|
||||
from app.services.mail_service import MailService
|
||||
from app.services.pdf_service import PdfService
|
||||
from app.services.sync_service import SyncService
|
||||
|
||||
|
||||
def register_cli(app):
|
||||
@app.cli.command('init-db')
|
||||
def init_db():
|
||||
db.create_all()
|
||||
print('Database initialized')
|
||||
|
||||
@app.cli.command('create-company')
|
||||
@click.option('--name', prompt=True)
|
||||
@click.option('--tax-id', default='')
|
||||
def create_company(name, tax_id):
|
||||
company = Company(name=name, tax_id=tax_id)
|
||||
db.session.add(company)
|
||||
db.session.commit()
|
||||
print(f'Company created: {company.id}')
|
||||
|
||||
@app.cli.command('create-user')
|
||||
@click.option('--email', prompt=True)
|
||||
@click.option('--name', prompt=True)
|
||||
@click.option('--password', prompt=True, hide_input=True, confirmation_prompt=True)
|
||||
@click.option('--role', default='admin', type=click.Choice(['admin', 'operator', 'readonly']))
|
||||
@click.option('--company-id', type=int, default=None)
|
||||
@click.option('--access-level', default='full', type=click.Choice(['full', 'readonly']))
|
||||
def create_user(email, name, password, role, company_id, access_level):
|
||||
if User.query.filter_by(email=email.lower()).first():
|
||||
raise click.ClickException('User already exists')
|
||||
user = User(email=email.lower(), name=name, password_hash=generate_password_hash(password), role=role)
|
||||
db.session.add(user)
|
||||
db.session.flush()
|
||||
if company_id:
|
||||
db.session.add(UserCompanyAccess(user_id=user.id, company_id=company_id, access_level=access_level))
|
||||
db.session.commit()
|
||||
print('User created')
|
||||
|
||||
@app.cli.command('seed-data')
|
||||
def seed_command():
|
||||
seed_data()
|
||||
print('Seed data inserted')
|
||||
|
||||
@app.cli.command('sync-ksef')
|
||||
@click.option('--company-id', type=int, default=None)
|
||||
def sync_ksef(company_id):
|
||||
company = db.session.get(Company, company_id) if company_id else Company.query.first()
|
||||
SyncService(company).run_manual_sync()
|
||||
print('KSeF sync complete')
|
||||
|
||||
@app.cli.command('rebuild-pdf')
|
||||
def rebuild_pdf():
|
||||
PdfService().rebuild_all()
|
||||
print('PDF rebuild complete')
|
||||
|
||||
@app.cli.command('resend-mail')
|
||||
@click.option('--delivery-id', prompt=True, type=int)
|
||||
def resend_mail(delivery_id):
|
||||
MailService().retry_delivery(delivery_id)
|
||||
print('Mail resent')
|
||||
|
||||
@app.cli.command('backup-data')
|
||||
def backup_data():
|
||||
path = BackupService().create_backup()
|
||||
print(f'Backup created: {path}')
|
||||
Reference in New Issue
Block a user