You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.1 KiB
42 lines
1.1 KiB
import sys
|
|
from app import create_app, db
|
|
from sqlalchemy.exc import (
|
|
InvalidRequestError,
|
|
InterfaceError,
|
|
DataError,
|
|
DatabaseError,
|
|
)
|
|
from usermodel import User # noqa: F401
|
|
from distribusimodel import Distribusis # noqa: F401
|
|
|
|
|
|
def admintool():
|
|
"""Admin CLI tool. To elevate a user to admin"""
|
|
app = create_app()
|
|
app.app_context().push()
|
|
elevateusertoadmin()
|
|
|
|
|
|
def elevateusertoadmin():
|
|
"""To elevates user of first command line argument to admin"""
|
|
user = User.query.filter_by(email=sys.argv[1]).first()
|
|
print(f"user {user.username} found with email {user.email}")
|
|
try:
|
|
user.admin = True
|
|
db.session.commit()
|
|
print(f"Account {user.email} succesfully made into an admin")
|
|
except InvalidRequestError:
|
|
db.session.rollback()
|
|
print("Something went wrong!")
|
|
except InterfaceError:
|
|
db.session.rollback()
|
|
print("Error connecting to the database")
|
|
except DataError:
|
|
db.session.rollback()
|
|
print("Invalid Entry")
|
|
except DatabaseError:
|
|
db.session.rollback()
|
|
print("Error connecting to the database")
|
|
|
|
|
|
admintool()
|
|
|