Improve UI
This commit is contained in:
@@ -449,7 +449,41 @@ class EnhancedUserService:
|
||||
new_role=new_role,
|
||||
error=str(e))
|
||||
raise DatabaseError(f"Failed to update role: {str(e)}")
|
||||
|
||||
|
||||
async def update_user_field(
|
||||
self,
|
||||
user_id: str,
|
||||
field_name: str,
|
||||
field_value: Any
|
||||
) -> bool:
|
||||
"""Update a single field on a user record"""
|
||||
try:
|
||||
async with self.database_manager.get_session() as session:
|
||||
user_repo = UserRepository(User, session)
|
||||
|
||||
# Update the specific field
|
||||
updated_user = await user_repo.update(user_id, {field_name: field_value})
|
||||
if not updated_user:
|
||||
logger.error("User not found for field update",
|
||||
user_id=user_id,
|
||||
field_name=field_name)
|
||||
return False
|
||||
|
||||
await session.commit()
|
||||
|
||||
logger.info("User field updated",
|
||||
user_id=user_id,
|
||||
field_name=field_name)
|
||||
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Failed to update user field",
|
||||
user_id=user_id,
|
||||
field_name=field_name,
|
||||
error=str(e))
|
||||
return False
|
||||
|
||||
async def get_user_activity(self, user_id: str) -> Dict[str, Any]:
|
||||
"""Get user activity information using repository pattern"""
|
||||
try:
|
||||
|
||||
@@ -29,8 +29,10 @@ class Tenant(Base):
|
||||
latitude = Column(Float)
|
||||
longitude = Column(Float)
|
||||
|
||||
# Timezone configuration for accurate scheduling
|
||||
# Regional/Localization configuration
|
||||
timezone = Column(String(50), default="Europe/Madrid", nullable=False)
|
||||
currency = Column(String(3), default="EUR", nullable=False) # Currency code: EUR, USD, GBP
|
||||
language = Column(String(5), default="es", nullable=False) # Language code: es, en, eu
|
||||
|
||||
# Contact info
|
||||
phone = Column(String(20))
|
||||
|
||||
@@ -68,6 +68,10 @@ class TenantResponse(BaseModel):
|
||||
address: str
|
||||
city: str
|
||||
postal_code: str
|
||||
# Regional/Localization settings
|
||||
timezone: Optional[str] = "Europe/Madrid"
|
||||
currency: Optional[str] = "EUR" # Currency code: EUR, USD, GBP
|
||||
language: Optional[str] = "es" # Language code: es, en, eu
|
||||
phone: Optional[str]
|
||||
is_active: bool
|
||||
subscription_plan: Optional[str] = None # Populated from subscription relationship or service
|
||||
@@ -125,6 +129,10 @@ class TenantUpdate(BaseModel):
|
||||
phone: Optional[str] = None
|
||||
business_type: Optional[str] = None
|
||||
business_model: Optional[str] = None
|
||||
# Regional/Localization settings
|
||||
timezone: Optional[str] = None
|
||||
currency: Optional[str] = Field(None, pattern=r'^(EUR|USD|GBP)$') # Currency code
|
||||
language: Optional[str] = Field(None, pattern=r'^(es|en|eu)$') # Language code
|
||||
|
||||
class TenantListResponse(BaseModel):
|
||||
"""Response schema for listing tenants"""
|
||||
|
||||
@@ -68,7 +68,10 @@ def upgrade() -> None:
|
||||
sa.Column('postal_code', sa.String(length=10), nullable=False),
|
||||
sa.Column('latitude', sa.Float(), nullable=True),
|
||||
sa.Column('longitude', sa.Float(), nullable=True),
|
||||
sa.Column('timezone', sa.String(length=50), nullable=False),
|
||||
# Regional/Localization configuration
|
||||
sa.Column('timezone', sa.String(length=50), nullable=False, server_default='Europe/Madrid'),
|
||||
sa.Column('currency', sa.String(length=3), nullable=False, server_default='EUR'), # Currency code: EUR, USD, GBP
|
||||
sa.Column('language', sa.String(length=5), nullable=False, server_default='es'), # Language code: es, en, eu
|
||||
sa.Column('phone', sa.String(length=20), nullable=True),
|
||||
sa.Column('email', sa.String(length=255), nullable=True),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=True),
|
||||
|
||||
@@ -364,6 +364,10 @@ class EnhancedTrainingService:
|
||||
job_id, results=json_safe_result
|
||||
)
|
||||
|
||||
# CRITICAL: Commit the session to persist the completed status to database
|
||||
# Without this commit, the status update is lost when the session closes
|
||||
await session.commit()
|
||||
|
||||
logger.info("Enhanced training job completed successfully",
|
||||
job_id=job_id,
|
||||
models_created=len(stored_models))
|
||||
@@ -380,7 +384,10 @@ class EnhancedTrainingService:
|
||||
await self.training_log_repo.complete_training_log(
|
||||
job_id, error_message=str(e)
|
||||
)
|
||||
|
||||
|
||||
# Commit the failure status to database
|
||||
await session.commit()
|
||||
|
||||
error_result = {
|
||||
"job_id": job_id,
|
||||
"tenant_id": tenant_id,
|
||||
|
||||
Reference in New Issue
Block a user