diff --git a/.env.sample b/.env.sample index 0572197..d04a7fe 100644 --- a/.env.sample +++ b/.env.sample @@ -1,3 +1,3 @@ AMMENTOR_DB_URL= SMTP_EMAIL= -SMTP_PASSWORD= +SMTP_PASSWORD= \ No newline at end of file diff --git a/alembic/versions/564b64825d51_remove_submitted_late.py b/alembic/versions/564b64825d51_remove_submitted_late.py new file mode 100644 index 0000000..e6bc0eb --- /dev/null +++ b/alembic/versions/564b64825d51_remove_submitted_late.py @@ -0,0 +1,28 @@ +"""remove submitted_late + +Revision ID: 564b64825d51 +Revises: eb395efd59b7 +Create Date: 2025-07-15 10:31:44.975046 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '564b64825d51' +down_revision: Union[str, None] = 'eb395efd59b7' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + pass + + +def downgrade() -> None: + """Downgrade schema.""" + pass diff --git a/alembic/versions/eb395efd59b7_add_submitted_late.py b/alembic/versions/eb395efd59b7_add_submitted_late.py new file mode 100644 index 0000000..7dc1b3b --- /dev/null +++ b/alembic/versions/eb395efd59b7_add_submitted_late.py @@ -0,0 +1,32 @@ +"""add submitted_late + +Revision ID: eb395efd59b7 +Revises: 786378e6e511 +Create Date: 2025-07-07 16:31:12.789234 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'eb395efd59b7' +down_revision: Union[str, None] = '786378e6e511' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/app/db/crud.py b/app/db/crud.py index f520c2f..a04e09f 100644 --- a/app/db/crud.py +++ b/app/db/crud.py @@ -2,7 +2,7 @@ from app.schemas.submission import SubmissionOut from sqlalchemy.orm import Session,joinedload from app.db import models -from datetime import datetime, date +from datetime import datetime, date, timedelta from sqlalchemy import func def get_user_by_email(db: Session, email: str): @@ -19,22 +19,29 @@ def submit_task(db: Session, mentee_id: int, task_id: int, reference_link: str, task = db.query(models.Task).filter(models.Task.id == task_id).first() if not task: raise Exception("Task not found") + + start_date = start_date + submitted_at = date.today() + deadline = start_date + timedelta(days=task.deadline_days) + + if deadline >= submitted_at: + submission = models.Submission( + mentee_id=mentee_id, + task_id=task.id, + task_name=task.title, + task_no=task.task_no, + reference_link=reference_link, + submitted_at=date.today(), + status="submitted", + start_date=start_date, + ) - submission = models.Submission( - mentee_id=mentee_id, - task_id=task.id, - task_name=task.title, - task_no=task.task_no, - reference_link=reference_link, - submitted_at=date.today(), - status="submitted", - start_date=start_date, - ) - - db.add(submission) - db.commit() - db.refresh(submission) - return submission + db.add(submission) + db.commit() + db.refresh(submission) + return submission + else: + return "late submission not allowed" def approve_submission(db: Session, submission_id: int, mentor_feedback: str, status: str): sub = db.query(models.Submission).filter_by(id=submission_id).first() diff --git a/app/db/models.py b/app/db/models.py index a755358..b1c8e31 100644 --- a/app/db/models.py +++ b/app/db/models.py @@ -1,4 +1,4 @@ -from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, UniqueConstraint +from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, UniqueConstraint, Boolean from sqlalchemy.orm import relationship from datetime import datetime from app.db.db import Base diff --git a/app/routes/progress.py b/app/routes/progress.py index 0130b93..3f59c74 100644 --- a/app/routes/progress.py +++ b/app/routes/progress.py @@ -22,7 +22,8 @@ def submit_task(data: SubmissionCreate, db: Session = Depends(get_db)): submission = crud.submit_task(db, mentee_id=mentee.id, task_id=task.id, reference_link=data.reference_link, start_date=data.start_date) if not submission: raise HTTPException(status_code=400, detail="Task already submitted") - + if submission == "late submission not allowed": + raise HTTPException(status_code=400, detail="You cannot submit this task as the deadline has passed") return submission @router.patch("/approve-task", response_model=SubmissionOut) diff --git a/docker-compose.yml b/docker-compose.yml index eee26ef..da66268 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -11,6 +11,8 @@ services: depends_on: - db command: uvicorn app.main:app --host 0.0.0.0 --port 8000 + volumes: + - ./alembic/versions:/app/alembic/versions db: image: postgres:14