mirror of
https://github.com/imartinez/privateGPT.git
synced 2025-06-30 17:22:43 +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 = FastAPI(dependencies=[Depends(bind_injector_to_request)])
|
||||||
|
|
||||||
app.include_router(completions_router)
|
# app.include_router(completions_router)
|
||||||
app.include_router(chat_router)
|
# app.include_router(chat_router)
|
||||||
app.include_router(chunks_router)
|
# app.include_router(chunks_router)
|
||||||
app.include_router(ingest_router)
|
# app.include_router(ingest_router)
|
||||||
app.include_router(embeddings_router)
|
# app.include_router(embeddings_router)
|
||||||
app.include_router(health_router)
|
# app.include_router(health_router)
|
||||||
|
|
||||||
app.include_router(api_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:
|
if not company:
|
||||||
raise HTTPException(status_code=404, detail="Company not found")
|
raise HTTPException(status_code=404, detail="Company not found")
|
||||||
return company.name
|
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",
|
||||||
|
)
|
@ -205,3 +205,4 @@ def register_without_company_assignment(
|
|||||||
"refresh_token": security.create_refresh_token(token_payload, expires_delta=timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_MINUTES)),
|
"refresh_token": security.create_refresh_token(token_payload, expires_delta=timedelta(minutes=settings.REFRESH_TOKEN_EXPIRE_MINUTES)),
|
||||||
"token_type": "bearer",
|
"token_type": "bearer",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ def read_subscriptions_by_company(
|
|||||||
status_code=status.HTTP_200_OK,
|
status_code=status.HTTP_200_OK,
|
||||||
content={
|
content={
|
||||||
"message": "Subscriptions retrieved successfully",
|
"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)},
|
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"))
|
company_id = Column(Integer, ForeignKey("companies.id"))
|
||||||
start_date = Column(DateTime, default=datetime.utcnow())
|
start_date = Column(DateTime, default=datetime.utcnow())
|
||||||
end_date = Column(DateTime, default=datetime.utcnow() + timedelta(days=30)) # Example: 30 days subscription period
|
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")
|
company = relationship("Company", back_populates="subscriptions")
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ from private_gpt.users.schemas.company import Company
|
|||||||
class SubscriptionBase(BaseModel):
|
class SubscriptionBase(BaseModel):
|
||||||
start_date: datetime
|
start_date: datetime
|
||||||
end_date: datetime
|
end_date: datetime
|
||||||
is_active: bool
|
|
||||||
|
|
||||||
class SubscriptionCreate(SubscriptionBase):
|
class SubscriptionCreate(SubscriptionBase):
|
||||||
company_id: int
|
company_id: int
|
||||||
|
Loading…
Reference in New Issue
Block a user