- Removed the unique constraints from the IssueProperty model to allow for more flexible naming.
- Updated the save method to ensure the name is generated solely from the display name
- Adjusted the migration to reflect these changes and removed the renaming logic for IssueProperty to maintain uniqueness.
* [WEB-5285] feat: Initial phase to make IssueProperty exist independant of IssueType
- Introduced the IssueTypeProperty model to manage properties associated with issue types.
- Updated the IssueProperty model to include ChangeTrackerMixin for tracking changes.
- Modified the save method in IssueProperty to ensure unique naming based on project and issue type.
- Adjusted unique constraints and added necessary migrations for the new model and changes.
* added missing workspace
* Use workspace_id instead of workspace
* Made issue_type optional
* Refactor issue property renaming to use bulk update for improved performance in migration
* feat: add migration for IssueTypeProperty and enhance IssueProperty uniqueness
- Introduced a new migration to create the IssueTypeProperty model with necessary fields and constraints.
- Updated the renaming logic for IssueProperty to ensure uniqueness by incorporating project identifiers and issue type names.
- Adjusted unique constraints and relationships for IssueProperty and IssueTypeProperty models to improve data integrity.
* Introduced a batch processing mechanism for updating IssueProperty names to enhance performance and reduce database load.
* enhance ChangeTrackerMixin to capture changed fields on save
- Overrode the save method in ChangeTrackerMixin to store changed fields before resetting tracking.
- Updated IssueComment and IssueProperty models to utilize _changes_on_save for determining changes, improving data integrity during updates.
---------
Co-authored-by: pablohashescobar <[email protected]>
* refactor: improve OIDC user data handling and random display name generation
* refactor: streamline configuration value retrieval for OIDC
* feat: add random display name generation if not provided in user info response
* refactor: enhance user data structure with display name
* feat: enhance user display name handling in authentication adapter
* add random display name generation if not provided by user info response
* update OIDC user data structure to ensure safe retrieval of first name, last name, and provider ID
* feat: add logging for missing email in OIDC user info response
* implement logging to warn when email is not found in user info response
* update display name generation logic to ensure valid email format
* feat: implement user data synchronization in authentication adapter
* add sync_user_data method to update user details including first name, last name, display name, and avatar
* integrate user data synchronization based on ENABLE_IDP_SYNC configuration
* enhance display name generation logic when not provided by user info response
* feat: add ENABLE_IDP_SYNC configuration to OIDC form
* refactor: define type for ENABLE_IDP_SYNC form field in OIDC configuration
* feat: refactor display name generation in authentication adapter and OIDC provider
* replace random display name generation with a centralized method in User model
* enhance display name handling to ensure consistency across authentication processes
* fix: correct email validation in display name generation logic
* update condition to ensure display name is generated only when email contains exactly one '@' symbol, improving robustness of the display name handling.
---------
Co-authored-by: b-saikrishnakanth <[email protected]>
- Replace advisory lock with transaction-level lock in Issue model save method
- Updated the save method in the Issue model to use a transaction-level advisory lock for better concurrency control.
- Simplified the locking mechanism by removing the explicit unlock step, as the lock is automatically released at the end of the transaction.
- Maintained existing functionality for sequence and sort order management while improving code clarity.
* fix: update feature flag response handling to return specific flag value
* refactor: simplify feature flag response handling and update payload key
* fix: enable response caching for feature flag endpoint
* fix: handle expiration parameter in S3Storage class for presigned URLs
* feat: enhance APITokenLogMiddleware to support logging to MongoDB
- Added functionality to log external API requests to MongoDB, with a fallback to PostgreSQL if MongoDB is unavailable.
- Implemented error handling for MongoDB connection and logging operations.
- Introduced additional fields for MongoDB logs, including timestamps and user identifiers.
- Refactored request logging logic to streamline the process and improve maintainability.
* fix: improve MongoDB availability checks in APITokenLogMiddleware
- Enhanced the logic for determining MongoDB availability by checking if the collection is not None.
- Added a check for MongoDB configuration before attempting to retrieve the collection.
- Updated error handling to ensure the middleware correctly reflects the state of MongoDB connectivity.
* feat: implement logging functionality in logger_task for API activity
- Added a new logger_task module to handle logging of API activity to MongoDB and PostgreSQL.
- Introduced functions for safely decoding request/response bodies and processing logs based on MongoDB availability.
- Refactored APITokenLogMiddleware to utilize the new logging functions, improving code organization and maintainability.
* refactor: simplify MongoDB logging in logger_task and middleware
- Removed direct dependency on MongoDB collection in log_to_mongo function, now retrieving it internally.
- Updated process_logs to check MongoDB configuration before logging, enhancing error handling.
- Cleaned up logger.py by removing unused imports related to MongoDB.
* feat: add Celery task decorator to process_logs function in logger_task
- Introduced the @shared_task decorator to the process_logs function, enabling asynchronous processing of log data.
- Updated function signature to include a return type of None for clarity.
- Added an override for the save method in ChangeTrackerMixin to store changed fields before resetting tracking.
- Implemented a new method, _reset_tracked_fields, to ensure subsequent saves detect changes relative to the last saved state.
- Updated IssueComment to utilize _changes_on_save for determining changed fields, improving accuracy in tracking modifications.
* feat: enhance clipboard functionality for markdown and HTML content
* fix: improve error handling and state management in CustomImageNodeView component
* fix: correct asset retrieval query by removing workspace filter in DuplicateAssetEndpoint
* fix: update meta tag creation in PasteAssetPlugin for clipboard HTML content
* feat: implement copyMarkdownToClipboard utility for enhanced clipboard functionality
* refactor: replace copyMarkdownToClipboard utility with copyTextToClipboard for simplified clipboard operations
* refactor: streamline clipboard operations by replacing copyTextToClipboard with copyMarkdownToClipboard in editor components
* refactor: simplify PasteAssetPlugin by removing unnecessary meta tag handling and streamlining HTML processing
* feat: implement asset duplication processing on paste for enhanced clipboard functionality
* chore:remove async from copy markdown method
* chore: add paste html
* remove:prevent default
* refactor: remove hasChanges from processAssetDuplication return type for simplified asset processing
* fix: format options-dropdown.tsx
* fix: crawl work item link for epics
* chore: WIP
* feat: update role activity
* feat: remove member activity
* feat: remove member activity
* feat: leave workspace member activity
* feat: accept and delete workspace invite activity
* chore: refactor UserWorkspaceInvitationsViewSet
* chore: refactor UserWorkspaceInvitationsViewSet
* feat: accept workspace member invite activity
* feat: workspace members activity api
* fix: activity api permission check
* migration: workspace member as nullable field
* fix: model name
* chore: use WorkspaceMemberActivity model
chore: use workspace_member_id in role change activity
* feat: activity for removing and adding seats
fix: use WorkspaceMemberActivity
chore: render workspace detail
* fix: code refactor
* chore: track seats added and removed
* fix: leave activity
* chore: featureflag and permission checks
fix: leave activity
* chore: code refactor
* chore: code refactor
* feat: implemented workspace members activity sidebar in the settings layout.
* fix: remove email validation
* fix: use ENUM
* refactor: simplify workspace member actions logic in settings layout
* chore: remove validate email
* fix: use DjangoFilterBackend
* feat: enhance workspace members activity functionality and UI in settings layout
* fix: use gte lookup to include members
* feat: refactor workspace members activity sidebar and layout integration
* refactor: simplify workspaceSlug usage in settings layout
* refactor: optimize activity date retrieval in workspace members activity store
---------
Co-authored-by: b-saikrishnakanth <[email protected]>
* chore: add static files collection and update settings for static files support
* chore: add WhiteNoise middleware for static file handling
* chore(deps): upgrade WhiteNoise to version 6.11.0 and add static file reverse proxy in Caddyfile
* fix: update avatar download headers to include authorization token
* fix: conditionally include authorization token in avatar download headers based on provider
* fix: refine avatar download headers to include access token conditionally based on token data
* feat: add avatar download and upload functionality in authentication adapter
- Implemented `download_and_upload_avatar` method to fetch and store user avatars from OAuth providers.
- Enhanced user data saving process to include avatar handling.
- Updated `S3Storage` class with a new `upload_file` method for direct file uploads to S3.
* feat: enhance avatar download functionality with size limit checks
- Added checks for content length before downloading avatar images to ensure they do not exceed the maximum allowed size.
- Implemented chunked downloading of avatar images to handle large files efficiently.
- Updated the upload process to return None if the upload fails, improving error handling.
* feat: improve avatar filename generation with content type handling
- Refactored avatar download logic to determine file extension based on the content type from the response headers.
- Removed redundant code for extension mapping, ensuring a cleaner implementation.
- Enhanced error handling by returning None for unsupported content types.
* fix: remove authorization header for avatar download
- Updated the avatar download logic to remove the Authorization header when token data is not present, ensuring compatibility with scenarios where authentication is not required.
* feat: add method for avatar download headers
- Introduced `get_avatar_download_headers` method to centralize header management for avatar downloads.
- Updated `download_and_upload_avatar` method to utilize the new header method, improving code clarity and maintainability.
* feat: add no_activity flag to control issue activity tracking during partial updates
* refactor: rename no_activity flag to skip_activity for clarity in issue activity tracking
* enhance description input handling with migration update support
* feat: implement skip_activity flag to conditionally log issue updates during partial updates
* refactor: skip-activity
* refactor: streamline code formatting and improve readability in EpicViewSet and related endpoints
* feat: add migration description update check to conditionally log issue updates
* fix: add check for migration description updates to prevent logging in EpicViewSet
* fix: add check for epics
---------
Co-authored-by: pablohashescobar <[email protected]>
* feat: add no_activity flag to control issue activity tracking during partial updates
* refactor: rename no_activity flag to skip_activity for clarity in issue activity tracking
* enhance description input handling with migration update support
* feat: implement skip_activity flag to conditionally log issue updates during partial updates
* refactor: skip-activity
* feat: add migration description update check to conditionally log issue updates
---------
Co-authored-by: pablohashescobar <[email protected]>