mirror of
https://github.com/imartinez/privateGPT.git
synced 2025-06-29 08:47:19 +00:00
Fixed bug with subscriptions
This commit is contained in:
parent
0b79c23f68
commit
bcc3f03e25
@ -0,0 +1,32 @@
|
||||
"""Remove is_active from subscription
|
||||
|
||||
Revision ID: bca1465a100f
|
||||
Revises: cccea6c7d70d
|
||||
Create Date: 2024-01-21 12:18:59.279663
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = 'bca1465a100f'
|
||||
down_revision: Union[str, None] = 'cccea6c7d70d'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
# op.create_unique_constraint('unique_user_role', 'user_roles', ['user_id', 'role_id', 'company_id'])
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
# op.drop_constraint('unique_user_role', 'user_roles', type_='unique')
|
||||
pass
|
||||
# ### end Alembic commands ###
|
@ -26,12 +26,12 @@ def create_app(root_injector: Injector) -> FastAPI:
|
||||
|
||||
app = FastAPI(dependencies=[Depends(bind_injector_to_request)])
|
||||
|
||||
app.include_router(completions_router)
|
||||
app.include_router(chat_router)
|
||||
app.include_router(chunks_router)
|
||||
app.include_router(ingest_router)
|
||||
app.include_router(embeddings_router)
|
||||
app.include_router(health_router)
|
||||
# app.include_router(completions_router)
|
||||
# app.include_router(chat_router)
|
||||
# app.include_router(chunks_router)
|
||||
# app.include_router(ingest_router)
|
||||
# app.include_router(embeddings_router)
|
||||
# app.include_router(health_router)
|
||||
|
||||
app.include_router(api_router)
|
||||
|
||||
|
@ -124,3 +124,21 @@ async def get_company_name(company_id: int, db: Session = Depends(get_db)) -> st
|
||||
if not company:
|
||||
raise HTTPException(status_code=404, detail="Company not found")
|
||||
return company.name
|
||||
|
||||
|
||||
def get_active_subscription(
|
||||
current_user: models.User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
company_id = current_user.user_role.company_id
|
||||
if company_id:
|
||||
company = crud.company.get(db, company_id)
|
||||
if company and company.subscriptions:
|
||||
active_subscription = next((sub for sub in company.subscriptions if sub.is_active), None)
|
||||
if active_subscription:
|
||||
return company
|
||||
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail="Access Forbidden - No Active Subscription",
|
||||
)
|
@ -204,4 +204,5 @@ def register_without_company_assignment(
|
||||
"access_token": security.create_access_token(token_payload, expires_delta=timedelta(minutes=settings.ACCESS_TOKEN_EXPIRE_MINUTES)),
|
||||
"refresh_token": security.create_refresh_token(token_payload, expires_delta=timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_MINUTES)),
|
||||
"token_type": "bearer",
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@ def read_subscriptions_by_company(
|
||||
status_code=status.HTTP_200_OK,
|
||||
content={
|
||||
"message": "Subscriptions retrieved successfully",
|
||||
"subscriptions": subscriptions_list
|
||||
"subscriptions": jsonable_encoder(subscriptions)
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -204,3 +204,14 @@ def update_user(
|
||||
content={"message": "User updated successfully", "user": jsonable_encoder(user_data)},
|
||||
)
|
||||
|
||||
|
||||
@router.get("/")
|
||||
def home_page(
|
||||
*,
|
||||
db: Session = Depends(deps.get_db),
|
||||
current_user: models.User = Security(
|
||||
deps.get_active_subscription,
|
||||
),
|
||||
):
|
||||
|
||||
return JSONResponse(status_code=status.HTTP_200_OK, content={"message": "Welcome to QuickGPT"})
|
@ -13,7 +13,6 @@ class Subscription(Base):
|
||||
company_id = Column(Integer, ForeignKey("companies.id"))
|
||||
start_date = Column(DateTime, default=datetime.utcnow())
|
||||
end_date = Column(DateTime, default=datetime.utcnow() + timedelta(days=30)) # Example: 30 days subscription period
|
||||
is_active = Column(Boolean, default=False)
|
||||
|
||||
company = relationship("Company", back_populates="subscriptions")
|
||||
|
||||
|
@ -7,7 +7,6 @@ from private_gpt.users.schemas.company import Company
|
||||
class SubscriptionBase(BaseModel):
|
||||
start_date: datetime
|
||||
end_date: datetime
|
||||
is_active: bool
|
||||
|
||||
class SubscriptionCreate(SubscriptionBase):
|
||||
company_id: int
|
||||
|
Loading…
Reference in New Issue
Block a user