GuXSs commited on
Commit
9d6afff
·
verified ·
1 Parent(s): f7c4c80

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +48 -10
app.py CHANGED
@@ -50,7 +50,7 @@ class UserCreate(BaseModel):
50
  class APIResponse(BaseModel):
51
  success: bool
52
  data: Any = None
53
- error: str = None
54
  timestamp: datetime = datetime.now()
55
 
56
  # ----------------- Enhanced Logger -----------------
@@ -324,14 +324,20 @@ class GemmaSaaSService:
324
 
325
  return APIResponse(
326
  success=success,
327
- data={"api_key": api_key} if success else None,
328
  error=message if not success else None
329
  )
330
  except ValidationError as e:
331
- return APIResponse(success=False, error=f"Validation error: {e}")
 
 
 
332
  except Exception as e:
333
  logger.error(f"Service error creating user: {e}")
334
- return APIResponse(success=False, error="Internal service error")
 
 
 
335
 
336
  async def generate_text(self, prompt: str, api_key: str, **kwargs) -> APIResponse:
337
  """Generate text with authentication and rate limiting"""
@@ -339,11 +345,17 @@ class GemmaSaaSService:
339
  # Validate API key
340
  user = await self.db.validate_api_key(api_key)
341
  if not user:
342
- return APIResponse(success=False, error="⚠️ Invalid API key")
 
 
 
343
 
344
  # Check rate limit
345
  if not await self.db.check_rate_limit(user['id']):
346
- return APIResponse(success=False, error="⚠️ Rate limit exceeded. Try again later.")
 
 
 
347
 
348
  # Generate text
349
  request = GenerationRequest(prompt=prompt, **kwargs)
@@ -362,18 +374,27 @@ class GemmaSaaSService:
362
  }
363
  )
364
  else:
365
- return APIResponse(success=False, error=text)
 
 
 
366
 
367
  except Exception as e:
368
  logger.error(f"Service error generating text: {e}")
369
- return APIResponse(success=False, error="Internal service error")
 
 
 
370
 
371
  async def get_user_stats(self, api_key: str) -> APIResponse:
372
  """Get user statistics"""
373
  try:
374
  user = await self.db.validate_api_key(api_key)
375
  if not user:
376
- return APIResponse(success=False, error="Invalid API key")
 
 
 
377
 
378
  stats = {
379
  "name": user.get('name'),
@@ -391,7 +412,10 @@ class GemmaSaaSService:
391
 
392
  except Exception as e:
393
  logger.error(f"Error getting user stats: {e}")
394
- return APIResponse(success=False, error="Error retrieving stats")
 
 
 
395
 
396
  # ----------------- Enhanced UI -----------------
397
  class GradioInterface:
@@ -803,6 +827,20 @@ class GradioInterface:
803
  return response.error, {}, False
804
 
805
  async def handle_user_creation(name, email, plan):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
806
  response = await self.service.create_user(name, email, plan)
807
 
808
  if response.success:
 
50
  class APIResponse(BaseModel):
51
  success: bool
52
  data: Any = None
53
+ error: Optional[str] = None
54
  timestamp: datetime = datetime.now()
55
 
56
  # ----------------- Enhanced Logger -----------------
 
324
 
325
  return APIResponse(
326
  success=success,
327
+ data={"api_key": api_key, "message": message} if success else None,
328
  error=message if not success else None
329
  )
330
  except ValidationError as e:
331
+ return APIResponse(
332
+ success=False,
333
+ error=f"Validation error: {str(e)}"
334
+ )
335
  except Exception as e:
336
  logger.error(f"Service error creating user: {e}")
337
+ return APIResponse(
338
+ success=False,
339
+ error="Internal service error"
340
+ )
341
 
342
  async def generate_text(self, prompt: str, api_key: str, **kwargs) -> APIResponse:
343
  """Generate text with authentication and rate limiting"""
 
345
  # Validate API key
346
  user = await self.db.validate_api_key(api_key)
347
  if not user:
348
+ return APIResponse(
349
+ success=False,
350
+ error="⚠️ Invalid API key"
351
+ )
352
 
353
  # Check rate limit
354
  if not await self.db.check_rate_limit(user['id']):
355
+ return APIResponse(
356
+ success=False,
357
+ error="⚠️ Rate limit exceeded. Try again later."
358
+ )
359
 
360
  # Generate text
361
  request = GenerationRequest(prompt=prompt, **kwargs)
 
374
  }
375
  )
376
  else:
377
+ return APIResponse(
378
+ success=False,
379
+ error=text
380
+ )
381
 
382
  except Exception as e:
383
  logger.error(f"Service error generating text: {e}")
384
+ return APIResponse(
385
+ success=False,
386
+ error="Internal service error"
387
+ )
388
 
389
  async def get_user_stats(self, api_key: str) -> APIResponse:
390
  """Get user statistics"""
391
  try:
392
  user = await self.db.validate_api_key(api_key)
393
  if not user:
394
+ return APIResponse(
395
+ success=False,
396
+ error="Invalid API key"
397
+ )
398
 
399
  stats = {
400
  "name": user.get('name'),
 
412
 
413
  except Exception as e:
414
  logger.error(f"Error getting user stats: {e}")
415
+ return APIResponse(
416
+ success=False,
417
+ error="Error retrieving stats"
418
+ )
419
 
420
  # ----------------- Enhanced UI -----------------
421
  class GradioInterface:
 
827
  return response.error, {}, False
828
 
829
  async def handle_user_creation(name, email, plan):
830
+ if not name or not name.strip():
831
+ return (
832
+ f'<div class="alert-error">❌ Name is required</div>',
833
+ "",
834
+ False
835
+ )
836
+
837
+ if not email or not email.strip():
838
+ return (
839
+ f'<div class="alert-error">❌ Email is required</div>',
840
+ "",
841
+ False
842
+ )
843
+
844
  response = await self.service.create_user(name, email, plan)
845
 
846
  if response.success: