old_contents: from freeposte import manager, db
  from freeposte.admin import models
  from passlib import hash
  
  
  @manager.command
  def flushdb():
      """ Flush the database
      """
      db.drop_all()
  
  
  @manager.command
  def initdb():
      """ Initialize the database
      """
      db.create_all()
  
  
  @manager.command
  def admin(localpart, domain_name, password):
      """ Create an admin user
      """
      domain = models.Domain(name=domain_name)
      user = models.User(
          localpart=localpart,
          domain=domain,
          global_admin=True,
          password=hash.sha512_crypt.encrypt(password)
      )
      db.session.add(domain)
      db.session.add(user)
      db.session.commit()
  
  
  if __name__ == "__main__":
      manager.run()
  
new_contents: from freeposte import manager, db
  from freeposte.admin import models
  from passlib import hash
  
  
  @manager.command
  def flushdb():
      """ Flush the database
      """
      db.drop_all()
  
  
  @manager.command
  def initdb():
      """ Initialize the database
      """
      db.create_all()
  
  
  @manager.command
  def admin(localpart, domain_name, password):
      """ Create an admin user
      """
      domain = models.Domain.query.get(domain_name)
      if not domain:
          domain = models.Domain(name=domain_name)
          db.session.add(domain)
      user = models.User(
          localpart=localpart,
          domain=domain,
          global_admin=True,
          password=hash.sha512_crypt.encrypt(password)
      )
      db.session.add(user)
      db.session.commit()
  
  
  if __name__ == "__main__":
      manager.run()
  
subject: Allow admin creation after initial setup