Skip to content

Conversation

@Achintya-Chatterjee
Copy link
Contributor

Date:

Developer Name:


Issue Ticket Number

PR's Going in this Sync

Description

Documentation Updated?

  • Yes
  • No

Under Feature Flag

  • Yes
  • No

Database Changes

  • Yes
  • No

Breaking Changes

  • Yes
  • No

Development Tested?

  • Yes
  • No

Screenshots

Screenshot 1

Test Coverage

Screenshot 1

Additional Notes

* feat: add Docker configuration and deployment workflow

* fix: correct casing in Dockerfile FROM instruction

* fix: remove temporary branch from deployment workflow

* fix: update ssh-action version and improve Dockerfile pip install command
@coderabbitai
Copy link

coderabbitai bot commented May 22, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

…ls of a specific task (#39)

* feat: Add API to fetch a single task by ID

Implements the GET /tasks/{task_id} endpoint to retrieve details
of a specific task.

- Added get_by_id method to TaskRepository.
- Added get_task_by_id method to TaskService with error handling
  for TaskNotFoundException and invalid ObjectId format.
- Updated TaskView to handle requests for a single task ID,
  returning 404 for not found and 400 for invalid ID format.
- Added new URL pattern /tasks/<str:task_id> to todo/urls.py.
- Created GetTaskByIdResponse DTO for the response structure.
- Created TaskNotFoundException custom exception.
- Added PATH to ApiErrorSource enum for error reporting.
- Added new API error messages to todo/constants/messages.py.
- Added default SQLite DATABASES configuration to
  todo_project/settings/base.py to ensure Django's test runner
  operates correctly, resolving teardown errors.
- Added comprehensive unit tests for the new repository method,
  service method, and view logic.
- Added integration tests for the new endpoint, covering success (200),
  not found (404), and invalid ID format (400) scenarios.

* refactor: modified the class to include an __init__
method that sets a default descriptive error message, while still allowing a
custom message to be passed when raising the exception

* refactor(tests): address review feedback on task detail integration tests
.
- refactor  to use existing
  fixture instead of local mock data, improving test data consistency.

* refactor: address review feedback on exceptions and service logic

- Update  to use a predefined constant
  () for its default message,
  improving consistency with message management.

- Correct  instantiation in
  to use  instead of , aligning with Pydantic
  field definitions and alias usage.

* refactor: Standardize Task API Views, Error Handling, and URLS
    -   Refactored the monolithic TaskView into TaskListView (handling GET /tasks for listing and POST /tasks for creation) and TaskDetailView (handling GET /tasks/{task_id} for retrieval).
    -   Updated URL configurations in  to map to these new views, resolving previous Method Not Allowed errors and clarifying route responsibilities.
    -   Significantly enhanced the  to provide consistent  JSON structures for various error types.
    -   Ensured specific handling for  (and s indicating invalid ID format), mapping them to HTTP 400 with a standardized error message ().
    -   Corrected logic to ensure  objects consistently include a  for generic exceptions.
    -   Streamlined error message usage from .
    -   Updated  to explicitly raise  when  is encountered from the repository.
    -   Ensured pagination link generation in  uses the correct URL name () via .
    -   Refined exception handling within service methods to use constants from .
    -   Consolidated error messages: removed  and , relying on the primary messages ( and ).
    -   Removed an unnecessary docstring from  as per review feedback.
    -   Updated all relevant unit and integration tests to reflect changes in view names, URL structures, error response formats, and constant usage.
    -   Ensured tests for invalid task IDs now correctly expect HTTP 400 and the standardized error message.
    -   Modified tests for the custom exception handler to align with its comprehensive error formatting.

* refactor: fixed the grammer and also changed the constant message

* fix(tasks): standardize invalid task ID error to 404 TaskNotFound

- modifies  to handle
by raising a  with the message
. This results in a consistent
HTTP 404 response when a task ID is malformed.

- generic exception handler within  has also been
updated to raise .

- Integration tests (): Updated to expect an
  HTTP 404 status and the revised error structure for invalid task ID formats.
- Unit tests (): Updated to assert that
   is raised for invalid task ID formats.

* refactor: moved the  TASK_NOT_FOUND and INVALID_TASK_ID_FORMAT to ValidationErrors

* refactor: moved the  TASK_NOT_FOUND and INVALID_TASK_ID_FORMAT to ValidationErrors

* fix: Correct HTTP status and handling for invalid task ID format

* fix: Improve error handling for task ID issues and server errors

* refactor: Standardize InvalidId exception handling and naming

* refactor: Split TaskView, improve error handling & update tests

* refactor: Split TaskView, improve error handling & update tests

* fix: failing test

* chore: remove unnecessary comments
…c task (#46)

* feat: Add API to fetch a single task by ID

Implements the GET /tasks/{task_id} endpoint to retrieve details
of a specific task.

- Added get_by_id method to TaskRepository.
- Added get_task_by_id method to TaskService with error handling
  for TaskNotFoundException and invalid ObjectId format.
- Updated TaskView to handle requests for a single task ID,
  returning 404 for not found and 400 for invalid ID format.
- Added new URL pattern /tasks/<str:task_id> to todo/urls.py.
- Created GetTaskByIdResponse DTO for the response structure.
- Created TaskNotFoundException custom exception.
- Added PATH to ApiErrorSource enum for error reporting.
- Added new API error messages to todo/constants/messages.py.
- Added default SQLite DATABASES configuration to
  todo_project/settings/base.py to ensure Django's test runner
  operates correctly, resolving teardown errors.
- Added comprehensive unit tests for the new repository method,
  service method, and view logic.
- Added integration tests for the new endpoint, covering success (200),
  not found (404), and invalid ID format (400) scenarios.

* refactor: modified the class to include an __init__
method that sets a default descriptive error message, while still allowing a
custom message to be passed when raising the exception

* refactor(tests): address review feedback on task detail integration tests
.
- refactor  to use existing
  fixture instead of local mock data, improving test data consistency.

* refactor: address review feedback on exceptions and service logic

- Update  to use a predefined constant
  () for its default message,
  improving consistency with message management.

- Correct  instantiation in
  to use  instead of , aligning with Pydantic
  field definitions and alias usage.

* refactor: Standardize Task API Views, Error Handling, and URLS
    -   Refactored the monolithic TaskView into TaskListView (handling GET /tasks for listing and POST /tasks for creation) and TaskDetailView (handling GET /tasks/{task_id} for retrieval).
    -   Updated URL configurations in  to map to these new views, resolving previous Method Not Allowed errors and clarifying route responsibilities.
    -   Significantly enhanced the  to provide consistent  JSON structures for various error types.
    -   Ensured specific handling for  (and s indicating invalid ID format), mapping them to HTTP 400 with a standardized error message ().
    -   Corrected logic to ensure  objects consistently include a  for generic exceptions.
    -   Streamlined error message usage from .
    -   Updated  to explicitly raise  when  is encountered from the repository.
    -   Ensured pagination link generation in  uses the correct URL name () via .
    -   Refined exception handling within service methods to use constants from .
    -   Consolidated error messages: removed  and , relying on the primary messages ( and ).
    -   Removed an unnecessary docstring from  as per review feedback.
    -   Updated all relevant unit and integration tests to reflect changes in view names, URL structures, error response formats, and constant usage.
    -   Ensured tests for invalid task IDs now correctly expect HTTP 400 and the standardized error message.
    -   Modified tests for the custom exception handler to align with its comprehensive error formatting.

* refactor: fixed the grammer and also changed the constant message

* fix(tasks): standardize invalid task ID error to 404 TaskNotFound

- modifies  to handle
by raising a  with the message
. This results in a consistent
HTTP 404 response when a task ID is malformed.

- generic exception handler within  has also been
updated to raise .

- Integration tests (): Updated to expect an
  HTTP 404 status and the revised error structure for invalid task ID formats.
- Unit tests (): Updated to assert that
   is raised for invalid task ID formats.

* refactor: moved the  TASK_NOT_FOUND and INVALID_TASK_ID_FORMAT to ValidationErrors

* refactor: moved the  TASK_NOT_FOUND and INVALID_TASK_ID_FORMAT to ValidationErrors

* fix: Correct HTTP status and handling for invalid task ID format

* fix: Improve error handling for task ID issues and server errors

* refactor: Standardize InvalidId exception handling and naming

* refactor: Split TaskView, improve error handling & update tests

* refactor: Split TaskView, improve error handling & update tests

* fix: failing test

* chore: remove unnecessary comments

* feature: Implement the delete task API

* test: add test for view file

* test: add test for soft delete

* fix:merge conflicts

* fix: remove unnecessary spacing and simplify DB query logic

* fix: storing the task_id in variable

* refactor: remove unnecessary invalid ID exception handling

* refactor: remove unnecessary invalid ID exception handling

---------

Co-authored-by: Achintya-Chatterjee <[email protected]>
…CH /tasks/{task_id}/` (#52)

* feat: Implement PATCH /tasks/{task_id} to update tasks
- Added  method to handle update requests.
- Introduced  for validating incoming update data,
  ensuring all fields are optional and  is a future date.
- Added  method to  to perform the MongoDB
   operation, ensuring  is set.
- Implemented  to orchestrate the update logic:
    - Fetches the task or raises .
    - Processes validated data from the serializer.
    - Converts label string IDs to  and validates their existence.
    - Converts priority and status string names to their enum values for
      database storage.
    - Sets  (currently placeholder).
    - Calls the repository to persist changes.
- Corrected an issue where enum objects (Priority, Status) were passed
  directly to the database layer, causing a serialization error. Now,
  their primitive values are stored.
- Refined  construction in  to ensure
  all valid fields from the serializer are correctly prepared for update.

* refactor(tasks): Standardize error handling in TaskService update

- Removes redundant format validation for label ObjectIds, as this is
  already handled by .
- For missing (but validly formatted) label IDs,
  now raises  instead of a
  custom

* rfactor:  PATCH /tasks/{task_id} endpoint to have task title blank true

* refactor: improve error handling for task updates and ID validation

centralizes error handling for task update operations:

- Removes specific ObjectId validation from . Invalid ID formats will now correctly raise , which is handled by the global DRF exception handler to return a 400 Bad Request.
- Modifies  to raise  if the task to be updated is not found. This is also handled by the global exception handler, resulting in a 404 Not Found response

* refactor: Enhance serializer validations and repository clarity
    - Implemented validation to ensure `startedAt` cannot be a future date.
    - Added `FUTURE_STARTED_AT` to `ValidationErrors` in `constants/messages.py`
      for the new validation message.
    - Added an explicit type check to ensure `labels` input is a list or tuple.
    - Modified to collect all invalid ObjectId formats within the `labels` list
      and report them in a single `ValidationError` for better client feedback.
    - Moved the "Labels must be a list or tuple..." message to
      `ValidationErrors.INVALID_LABELS_STRUCTURE` in `constants/messages.py`
      and updated the serializer to use this constant.
    - Deleted an unreachable `if not update_data_with_timestamp: pass` block,
      as the updatedAt field ensures the dictionary is never empty at that point.

* Update todo/serializers/update_task_serializer.py

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* Update todo/views/task.py

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix: gramatical errors on the constants

* fix: added missing imports

* fix: used global exception handler for catching errors

* Refactor(TaskRepository): modify update method for input validation and ObjectId handling

* refactor(serializers): align validate_dueAt error handling pattern

-refactors the  method in
to collect validation errors in a list and raise a single
 with this list.

* refactor(services): reduce complexity of TaskService.update_task

-Refactors the  method in  to improve
readability and reduce cognitive complexity. The core logic for
processing specific field types (labels, enums) has been extracted
into dedicated helper methods:  and

* refactor(services): reduce complexity of TaskService.update_task

-Refactors the  method in  to improve
readability and reduce cognitive complexity. The core logic for
processing specific field types (labels, enums) has been extracted
into dedicated helper methods:  and

* refactor: refactor the code to improve maintainability

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
* feat: Implement PATCH /tasks/{task_id} to update tasks
- Added  method to handle update requests.
- Introduced  for validating incoming update data,
  ensuring all fields are optional and  is a future date.
- Added  method to  to perform the MongoDB
   operation, ensuring  is set.
- Implemented  to orchestrate the update logic:
    - Fetches the task or raises .
    - Processes validated data from the serializer.
    - Converts label string IDs to  and validates their existence.
    - Converts priority and status string names to their enum values for
      database storage.
    - Sets  (currently placeholder).
    - Calls the repository to persist changes.
- Corrected an issue where enum objects (Priority, Status) were passed
  directly to the database layer, causing a serialization error. Now,
  their primitive values are stored.
- Refined  construction in  to ensure
  all valid fields from the serializer are correctly prepared for update.

* refactor(tasks): Standardize error handling in TaskService update

- Removes redundant format validation for label ObjectIds, as this is
  already handled by .
- For missing (but validly formatted) label IDs,
  now raises  instead of a
  custom

* rfactor:  PATCH /tasks/{task_id} endpoint to have task title blank true

* refactor: improve error handling for task updates and ID validation

centralizes error handling for task update operations:

- Removes specific ObjectId validation from . Invalid ID formats will now correctly raise , which is handled by the global DRF exception handler to return a 400 Bad Request.
- Modifies  to raise  if the task to be updated is not found. This is also handled by the global exception handler, resulting in a 404 Not Found response

* refactor: Enhance serializer validations and repository clarity
    - Implemented validation to ensure `startedAt` cannot be a future date.
    - Added `FUTURE_STARTED_AT` to `ValidationErrors` in `constants/messages.py`
      for the new validation message.
    - Added an explicit type check to ensure `labels` input is a list or tuple.
    - Modified to collect all invalid ObjectId formats within the `labels` list
      and report them in a single `ValidationError` for better client feedback.
    - Moved the "Labels must be a list or tuple..." message to
      `ValidationErrors.INVALID_LABELS_STRUCTURE` in `constants/messages.py`
      and updated the serializer to use this constant.
    - Deleted an unreachable `if not update_data_with_timestamp: pass` block,
      as the updatedAt field ensures the dictionary is never empty at that point.

* Update todo/serializers/update_task_serializer.py

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* Update todo/views/task.py

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix: gramatical errors on the constants

* fix: added missing imports

* fix: used global exception handler for catching errors

* Refactor(TaskRepository): modify update method for input validation and ObjectId handling

* refactor(serializers): align validate_dueAt error handling pattern

-refactors the  method in
to collect validation errors in a list and raise a single
 with this list.

* refactor(services): reduce complexity of TaskService.update_task

-Refactors the  method in  to improve
readability and reduce cognitive complexity. The core logic for
processing specific field types (labels, enums) has been extracted
into dedicated helper methods:  and

* refactor(services): reduce complexity of TaskService.update_task

-Refactors the  method in  to improve
readability and reduce cognitive complexity. The core logic for
processing specific field types (labels, enums) has been extracted
into dedicated helper methods:  and

* refactor: refactor the code to improve maintainability

* feat: Implement PATCH `/tasks/{task_id}` endpoint unit tests (#53)

* feat: Implement PATCH /tasks/{task_id} endpoint unit tests
- Developed a comprehensive suite of unit tests for:
    -  (various valid/invalid payloads).
    -  (success, task not found, invalid ID).
    -  (success, task not found, label
      validation errors, repository update failures, enum handling).
    -  (success, serializer errors, service-layer
      exceptions like TaskNotFound, BsonInvalidId, DRFValidationError)

* refactor: improve error handling and update associated tests

Centralizes error handling for task update operations:
- Removes specific ObjectId validation from . Invalid ID formats now correctly raise , handled by the global DRF exception handler (400 Bad Request).
- Modifies  to raise  if the task to be updated is not found by the repository. This is also handled by the global exception handler (404 Not Found).

Updates unit tests to align with these changes:
-  now asserts  is raised.
-  is renamed to  and now asserts  is raised.

* refactor: adjust serializer tests for ListField behavior and add validation coverage

* fix: import errors

* refactor: harden TaskRepository.update and align tests

* fix: test assertions

* chore: remove test description

* chore: update develop branch into this branch

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
…tests to use real DB (#75)

* feat(test): add test database setup and refactor delete task integration test

* feat(test): add shared MongoDB test container for integration tests

* fix docker internal host ci

* refactor: test_task_detail integration test to use db

* fix: host name on linux machine

* test: add more check on invalid task id

* refactor: add error handling for mongo start and add proper spacing

* refactor: use constant value instead of hardcoded value

* fix: add logic to clear db with each test suite and use django inbuild reverse to generate url

* fix: replace 1s sleep with log-based wait for Mongo readiness

* fix: remove hardcoded host/port and use container IP for replica set init

* Fix: Properly close MongoDB connection in DatabaseManager.reset()
…app [skip tests] (#81)

* feat(auth): Integrated RDS Auth

* feat(auth): Integrated RDS Auth

* fix: env.example

* refactor: changes based on ai pr review

* feat(auth): Implemented google authentication for todo-app

* resolved pr comments

* resolved pr comments

* resolved bot comments

* removed exceptions from views file

* refactored auth views

* refactored unused field

* resolved review comments and added status code to api responses

* resolved pr comments

* resolved pr comments
VaibhavSingh8 and others added 2 commits June 18, 2025 01:22
* feat(auth): Integrated RDS Auth

* feat(auth): Integrated RDS Auth

* fix: env.example

* refactor: changes based on ai pr review

* feat(auth): Implemented google authentication for todo-app

* resolved pr comments

* resolved pr comments

* resolved bot comments

* removed exceptions from views file

* refactored auth views

* refactored unused field

* resolved review comments and added status code to api responses

* resolved pr comments

* resolved pr comments

* Tests for Authentication feature (#80)

* fix: add auth to pass tests

* tests: auth

* lint and format

* add test creds in test.yml for testing purpose

* auth view tests

* wip

* fix tests based on latest pull of test containers

* fixed tests based on updated response structure

* rebased on updated auth and fixed tests

* fixed workflow file

* refactor based on ai pr reviews
* feat(tasks): Add PATCH endpoint to defer tasks

 introduces a new feature allowing users to defer a task to a future date. A task can be deferred by making a PATCH request to the task detail endpoint with the action=defer query parameter.

- A new route in TaskDetailView that handles PATCH requests with ?action=defer.
- DeferTaskSerializer to validate the incoming deferredTill timestamp, ensuring it is a future date.
- A new defer_task method in TaskService containing the core business logic. This includes a validation rule that prevents deferring a task too close to its due date.
- The TaskModel has been updated with a deferredDetails field to store information about the deferral.
- A custom UnprocessableEntityException has been added to handle business rule violations, which the global exception handler now processes into a 422 HTTP response.

* refactor: refactor the codes according to the bot suggestions

* refactor: refactor the codes according to the bot suggestions

* Update todo/constants/messages.py

Co-authored-by: Anuj Chhikara <[email protected]>

* refactor:  robust task deferral endpoint

refactor the PATCH /tasks/{id}?action=defer API with extensive error handling and improved business logic based on code reviews.

- Adds a  error when deferring a  task.
- Enforces a configurable notice period for deferrals close to the due date.
- Hardens the API by validating the  parameter strictly.
- Refactors exception handling to be more specific and robust.
- Improves test coverage for new service logic, views, and exceptions.

* fix(task-service): normalise datetimes in defer_task to avoid naive/aware clash

- Force deferred_till to be UTC-aware if it arrives naive.
- Convert stored dueAt to UTC-aware before applying the minimum-notice rule.
- Prevents TypeError: can't compare offset-naive and offset-aware datetimes, eliminating 500 responses on PATCH /v1/tasks?action=defer.
- All integration tests now pass.

* fix: missing imports

* fix: added source path for task id to get the more appropiate error details

* refactor: align defer task serializer with Python conventions

* refactor: align defer task serializer with Python conventions

* fix(db): Resolve timezone inconsistency in API datetime fields

Previously, API responses for updated tasks returned naive datetime strings (e.g., 2025-10-21T02:35:25.433000), while responses for newly created tasks correctly returned timezone-aware strings (e.g., 2025-06-21T10:10:32.337301Z).

This was caused by the PyMongo  defaulting to . As a result, when a task was read from the database during an update operation, its timezone-aware BSON date was converted to a naive Python  object, which was then serialized into the API response without timezone information.

This commit configures the  with . This ensures that all datetime objects retrieved from the database remain timezone-aware, guaranteeing consistent ISO 8601 formatting with the UTC 'Z' suffix across all API responses.

* feat: added unit and integration tests for defer task endpoint (#79)

* feat: added unit test for defer task endpoint

* feat: added remaining unit tests for the defer task PATCH endpoint

* fix: failing tests

* fix: added deferredDetails on create task unit test

* feat: added integration tests for the defer task endpoint and also added missing integration tests for update task endpoint

* chore: remove comments from the integration tests code as it was unnecesseey

* chore: remove comments from the integration tests code as it was unnecesseey

* fix: imports

* fix: enhance defer task tests and fix auth issues

- corrected authentication failures in integration tests for task updates and deferrals. Introduced an AuthenticatedMongoTestCase to standardize JWT cookie setup, resolving multiple 401 Unauthorized errors.

- updated the global exception handler for TaskStateConflictException to include the source field in the error response, ensuring consistency and fixing a KeyError in the corresponding unit test.

-  added new integration tests for the defer task endpoint to validate API behavior with invalid and missing deferredTill dates, improving the feature's robustness.

- refactored the task update and deferral integration tests to follow the established authentication pattern from other tests, making them cleaner and more consistent.

* fix: failing test

---------

Co-authored-by: Anuj Chhikara <[email protected]>
* feat: add auth logic for all the APIs

* refactor: serializer and repositories tests

* refactor: integration test for auth logic

* refactor: unit tests for auth logic

* fix: remove csrf disable middleware

* refactor: move user setup and auth cookies to shared test utility

* fix: add createdBy validator
* feat: Integrate drf-spectacular for OpenAPI documentation and add schema endpoints

* fix: Add TEMPLATES and STATIC_URL configuration for drf-spectacular

* fix: Add trailing slashes to API docs paths and enable DEBUG mode

* fix: Replace Pydantic models with inline schemas in Swagger decorators

* fix: Update OpenAPI responses to use OpenApiResponse for consistency

---------

Co-authored-by: Amit Prakash <[email protected]>
* feat: added changes related to GET v1/labels

* modified to single db query instead two separate db queries

* fixes suggested by bot

* lint fix

* removed unnecessary code

* modified to strip search in serialzier

* feat: GET v1/labels tests (#96)

* feat: added test related to GET v1/labels

* tests for modified single db query instead two separate db queries

* lint fix

* remove unnecessary code

* fix typo of previous code

* tests modified to strip search in serialzier

* replaced with constants
* Update watchlist_dto.py

* Update watchlist_repository.py

* Update test_watchlist_service.py
* feat: add team invite code functionality

* feat: implement team invite code generation and verification functionality

* refactor: clean up code formatting and remove unused imports in team invite code files

* chore: add audit logs in team creation invite code

* refactor: improve error handling

* feat: add endpoint to list team creation invite codes with pagination and user details

* chore: remove unused user ID from team creation invite code

* refactor: improve code formatting

* refactor: enhance DTO descriptions

* refactor: update team creation invite code handling and validation logic

* fix: patch unit test

* refactor: rename method for retrieving team creation invite codes and improve error handling

* feat: enhance JWT authentication middleware to verify user existence and include email in request
…rkflows (#252)

* feat: Add ADMIN_EMAILS environment variable to deployment and test workflows

* fix: Correct ADMIN_EMAILS variable reference in deployment script
…sm (#258)

* feat: implement dual-write system for MongoDB to PostgreSQL synchronization

- Added comprehensive documentation for the dual-write feature in README.md
- Updated requirements.txt to include psycopg2-binary for PostgreSQL support
- Modified Django settings to configure PostgreSQL as the primary database
- Introduced dual-write operations with error handling and monitoring capabilities
- Enhanced project structure for future migration paths and Docker development setup

* feat: enhance PostgreSQL integration with new models and dual-write functionality

* refactor: consolidate PostgreSQL models

* feat: implement priority field fix and enhance dual-write functionality

* refactor: update PostgreSQL models and enhance dual-write service functionality

* refactor: simplify Postgres watchlist model and update dual-write service transformation

* fix: deferred task in postgres

* refactor: update Postgres audit log model

* refactor: remove old watchlist models and update user role structure for enhanced functionality

* refactor: enhance PostgreSQL model definitions and integrate dual-write service for task assignments and user roles

* feat: add task assignment creation functionality and streamline task assignment deletion process

* refactor: update task assignment models and repository to streamline data handling and enhance dual-write service integration

* feat: implement dual-write synchronization for team creation invite codes and update watchlist collection naming

* feat: add PostgreSQL synchronization service and management command for labels and roles

* chore: remove pgAdmin service from docker-compose configuration

* chore: remove deprecated docker-compose and environment configuration files

* feat: add PostgreSQL availability checks and environment variables for dual-write and sync services

* feat: configure database settings for testing and production environments

* fix: update environment variable names for PostgreSQL configuration in docker-compose and application settings

* refactor: update PostgreSQL environment variable name and enhance docker-compose commands and health checks

* refactor: rename PostgreSQL task assignment index names for consistency

---------

Co-authored-by: Amit Prakash <[email protected]>
…t variables and README for database migrations (#264)

* feat: update environment variables and README for database migrations

* feat: update environment variables and docker-compose for PostgreSQL configuration

* feat: add --noinput flag to manage.py migrate command in Dockerfiles
@prakashchoudhary07 prakashchoudhary07 merged commit 5d991a3 into main Aug 31, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.