59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
from datetime import datetime
|
|
|
|
from flask_admin.contrib.peewee import ModelView
|
|
from flask_login import current_user
|
|
from peewee import CharField
|
|
from peewee import DateTimeField
|
|
from peewee import TextField
|
|
from werkzeug.security import generate_password_hash
|
|
|
|
from afpy.models import BaseModel
|
|
|
|
|
|
class AdminUser(BaseModel):
|
|
username = CharField(null=False, help_text="Username of admin user", verbose_name="Username")
|
|
email = CharField(null=False, help_text="Email of admin user", verbose_name="Email")
|
|
password = TextField(null=False, help_text="Hashed password of admin user", verbose_name="Password")
|
|
dt_added = DateTimeField(
|
|
null=False, default=datetime.now, help_text="When was the admin user entry added", verbose_name="Datetime Added"
|
|
)
|
|
|
|
def get_id(self) -> int:
|
|
return int(self.id)
|
|
|
|
@property
|
|
def is_authenticated(self):
|
|
return True
|
|
|
|
@property
|
|
def is_active(self):
|
|
return True
|
|
|
|
@property
|
|
def is_anonymous(self):
|
|
return False
|
|
|
|
# Required for administrative interface
|
|
def __unicode__(self):
|
|
return self.username
|
|
|
|
|
|
class AdminUser_Admin(ModelView):
|
|
model_class = AdminUser
|
|
|
|
def is_accessible(self):
|
|
return current_user.is_authenticated
|
|
|
|
|
|
if not AdminUser.table_exists():
|
|
AdminUser.create_table()
|
|
try:
|
|
AdminUser.get_by_id(1)
|
|
except AdminUser.DoesNotExist:
|
|
AdminUser.create(
|
|
email="admin@admin.org",
|
|
username="admin",
|
|
password=generate_password_hash("password"),
|
|
dt_added=datetime.now(),
|
|
).save()
|