1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

Fix init tables

This commit is contained in:
MoonTestUse1
2025-01-06 22:56:27 +06:00
parent ed2a1185b7
commit 28a20247d5
5 changed files with 41 additions and 7 deletions

22
backend/app/db/init_db.py Normal file
View File

@@ -0,0 +1,22 @@
"""Database initialization script"""
from sqlalchemy.orm import Session
from app.core.config import settings
from app.models.employee import Employee
from app.utils.auth import get_password_hash
def init_db(db: Session) -> None:
"""Initialize database with default data"""
# Создаем администратора по умолчанию
admin = db.query(Employee).filter(Employee.email == settings.ADMIN_USERNAME).first()
if not admin:
admin = Employee(
email=settings.ADMIN_USERNAME,
full_name="System Administrator",
hashed_password=get_password_hash(settings.ADMIN_PASSWORD),
is_active=True,
is_admin=True,
department="Administration"
)
db.add(admin)
db.commit()
db.refresh(admin)

View File

@@ -1,8 +1,21 @@
"""Main application module""" """Main application module"""
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from sqlalchemy.orm import Session
from . import models from . import models
from .routers import admin, employees, requests, auth, statistics from .routers import admin, employees, requests, auth, statistics
from .database import engine, SessionLocal
from .db.init_db import init_db
# Создаем таблицы
models.Base.metadata.create_all(bind=engine)
# Инициализируем базу данных
db = SessionLocal()
try:
init_db(db)
finally:
db.close()
app = FastAPI( app = FastAPI(
# Включаем автоматическое перенаправление со слэшем # Включаем автоматическое перенаправление со слэшем

View File

@@ -13,8 +13,8 @@ class Employee(Base):
hashed_password = Column(String, nullable=False) hashed_password = Column(String, nullable=False)
is_active = Column(Boolean, default=True) is_active = Column(Boolean, default=True)
is_admin = Column(Boolean, default=False) is_admin = Column(Boolean, default=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
department = Column(String, nullable=True) department = Column(String, nullable=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# Определяем отношение к Request # Определяем отношение к Request
requests = relationship("Request", back_populates="employee", cascade="all, delete-orphan") requests = relationship("Request", back_populates="employee", cascade="all, delete-orphan")

View File

@@ -1,12 +1,12 @@
"""Employee schemas""" """Employee schemas"""
from pydantic import BaseModel, ConfigDict from pydantic import BaseModel, ConfigDict, EmailStr
from datetime import datetime from datetime import datetime
from typing import Optional from typing import Optional
class EmployeeBase(BaseModel): class EmployeeBase(BaseModel):
email: str email: EmailStr
full_name: str full_name: str
department: str department: Optional[str] = None
is_active: bool = True is_active: bool = True
is_admin: bool = False is_admin: bool = False
@@ -16,10 +16,9 @@ class EmployeeCreate(EmployeeBase):
password: str password: str
class EmployeeUpdate(BaseModel): class EmployeeUpdate(BaseModel):
email: Optional[str] = None email: Optional[EmailStr] = None
full_name: Optional[str] = None full_name: Optional[str] = None
department: Optional[str] = None department: Optional[str] = None
password: Optional[str] = None
is_active: Optional[bool] = None is_active: Optional[bool] = None
is_admin: Optional[bool] = None is_admin: Optional[bool] = None

View File

@@ -3,7 +3,7 @@
<div class="max-w-md w-full bg-white rounded-xl shadow-2xl p-8"> <div class="max-w-md w-full bg-white rounded-xl shadow-2xl p-8">
<div class="text-center mb-8"> <div class="text-center mb-8">
<h2 class="text-3xl font-bold text-gray-900"> <h2 class="text-3xl font-bold text-gray-900">
Панель администратора 55 Панель администратора
</h2> </h2>
<p class="mt-2 text-gray-600"> <p class="mt-2 text-gray-600">
Вход в систему управления Вход в систему управления