Releases: nofusscomputing/centurion_erp
Releases · nofusscomputing/centurion_erp
1.29.0
1.29.0 (2026-02-09)
Features
- core: Convert comment with only time tracking command, to action comment
- core: Enable linking ticket sub models to parent model
- base: Add oauth token required claim check to sso pipeline
- core: TicketPermission must check if user has perm for create
- access: remove super user check from centurion user function has_perm
- access: remove super user check from tenancy permission
- core: Add post_migration signal for cleaning up stale permissions
- core: Add triage check within TicketBase Serializer
- core: TicketComment ViewSet Permission_classes updated to require Ticket or SuperUser
- core: Ticket ViewSet Permission_classes updated to require Ticket or SuperUser
- core: Add TicketPermissions Class
- access: Cache the tenancy within Tenancy Permission class
- access: Adjust permissions for Tenancy mixin to be Tenancy or SuperUser
- core: Update Markdown Serializer field to provide render data for UI
- itim: Add Menu Feature Flag to model ProblemTicket
- itim: Add Menu Feature Flag to model IncidentTicket
- itim: Add Menu Feature Flag to model ChangeTicket
- python: Update django 5.1.14 -> 5.1.15
- core: Task comment Permissions must also have ticket triage
- core: Add parent_model to CenturionNote so that tenancy can be obtained during creation
- core: Add ability to specify additional ViewSet permissions
- core: remove
triagepermission from all ticket comment types - itam: Update
ticketmodel_deviceserializer to corrrect inheritance. - core: Always return the sub-model serializer when accessing the TicketModel base serializer
- core: Only add threads URL to comment if there are threads
- core: Ticket Comment base endpoint to use sub-models serializer
- core: Serializer model core.TicketCommentTask
- core: migrations model core.TicketCommentTask
- core: new model core.TicketCommentTask
- core: Create an action comment when a dependency is removed from ticket
- core: Create an action comment when a model link is removed from ticket
- core: model audit_values must return ALL fields for a model
- core: Add the ticket action comment signal
- core: Add m2m field data to model get_audit_values function
- itim: Add Feature Flag 2025-00011 for ProblemTicket
- itim: Add Feature Flag 2025-00010 for IncidentTicket
- itim: Add Feature Flag 2025-00009 for ChangeTicket
- itim: Add Navigation entries for ticket models
- project_management: Add Migrations for project task ticket models
- itim: Add Migrations for ticket models
- project_management: Add Serializer for model project_management.ProjectTaskTicket
- itim: Add Serializer for model itim.IncidentTicket
- itim: Add Serializer for model itim.ProblemTicket
- itim: Add Serializer for model itim.ChangeTicket
- project_management: Add model project_management.ProjectTaskTicket
- itim: Add model itim.ProblemTicket
- itim: Add model itim.ChangeTicket
- itim: Add model itim.IncidentTicket
- core: filter ticket linked models to that of the ticket viewing
- core: Re-import new ticket model linking to slash commands
- core: When a ticket depedency is added via ticket description, create Action comment
- core: When a ticket depedency is added via comment, create Action comment
- python: update django 5.1.13 -> 5.1.14
- core: Add New slash command for ticket dependencies to new ticket model
- core: Updated Migrations to create model core.TicketDependency
- core: Depreciate old ticket linked items
- core: Depreciate old related tickets/ticket dependencies
- core: Migrations to create model core.TicketDependency
- core: Add URL Route for model core.TicketDependency
- core: Add ViewSet for model core.TicketDependency
- core: Add Serializer for model core.TicketDependency
- core: Add model core.TicketDependency
Fixes
- docker: use pip and apk cache from build
- core: Correct which fields are read-only for both import and triage user
- human_resources: signal centurion_user_add_entity must use log instead of stdout
- core: User requires access to add/update ticket urgency field
- core: if user lacks tenancy permissions dont process additional for ticket
- Correct permission inheritence
- core: Capture errors in perms_map for TicketComment ViewSet
- core: TicketModel manager must inherit from TenancyManager
- access: Always filter tenancy objects to tenancy list even if empty
- access: During permission get_tenancy, use the parent model if one exists and the action=create
- access: When checking tenancy permissions and a tenancy is required, ensure it exists
- access: Capture exceptions within tenancy permissions
- access: Function has_perms for user model must cater for obj or direct tenancy passed, inc no tenancy
- core: Ticket sub-model must return display_name as markdown model_tag
- core: Add missing ticket type fields to ticket comment category serializer
- core: when fetching related model ensure the model is of the correct type
- core: If replying to a ticket comment, the parent comment must be set as not closed
- core: dont create modelticket link tables for sub-models
- core: use correct var for solution comment when checking type
- core: When creating a standard ticket comment, set its status to closed
- core: When creating a ticket action comment, set its status to closed
- core: When cleaning viewset model context, dont remove if not exists
- core: Allow HTTP/DELETE on ticket_model_link endpoint
- core: When cleaning up request context from model, only remove the modifications instead of replacing with clean
- api: Use correct field to determine ticket rendering options
Refactoring
- use get_organization function instead of property
- api: remove superflous code paths
- core: Add time tracking slash command for new ticket models
- core: instead of throwing an error for wrong comment type, set it as per meta
- access: All TenancyPermission.has_permission() to be within try..catch
- accounting: Update modelticket serializer inheritence for AssetBase model
- settings: Update modelticket serializer inheritence for ExternalLink model
- project_management: Update modelticket serializer inheritence for ProjectType model
- project_management: Update modelticket serializer inheritence for ProjectState model
- itim: Update modelticket serializer inheritence for Service model
- itim: Update modelticket serializer inheritence for Port model
- itim: Update modelticket serializer inheritence for ClusterType model
- itim: Update modelticket serializer inheritence for Cluster model
- itam: Update modelticket serializer inheritence for SoftwareVersion model
- itam: Update modelticket serializer inheritence for SoftwareCategory model
- itam: Update modelticket serializer inheritence for Software model
- itam: Update modelticket serializer inheritence for OperatingSystemVersion model
- itam: Update modelticket serializer inheritence for OperatingSystem model
- itam: Update modelticket serializer inheritence for ITAMAssetBase model
- itam: Update modelticket serializer inheritence for DeviceType model
- itam: Update modelticket serializer inheritence for DeviceModel model
- itam: Update modelticket serializer inheritence for Device model
- core: Update modelticket serializer inheritence for TicketCommentCategory model
- core: Update modelticket serializer inheritence for TicketCategory model
- devops: Update modelticket serializer inheritence for GitRepository model
- devops: Update modelticket serializer inheritence for GitlabRepository model
- devops: Update modelticket serializer inheritence for GithubRepository model
- devops: Update modelticket serializer inheritence for GitGroup model
- devops: Update modelticket serializer inheritence for FeatureFlag model
- config_management: Update modelticket serializer inheritence for ConfigGroups model
- assistance: Update modelticket serializer inheritence for KnowledgeBaseCategory model
- assistance: Update modelticket serializer inheritence for KnowledgeBase model
- accounting: Update modelticket serializer inheritence for AssetBase model
- access: Update modelticket serializer inheritence for Tenant model
- access: Update modelticket serializer inheritence for Role model
- human_resources: Update modelticket serializer inheritence for Employee model
- access: Update modelticket serializer inheritence for Person model
- access: Update modelticket serializer inheritence for Contact model
- access: Update modelticket serializer inheritence for Company model
- access: Update modelticket serializer inheritence for Entity model
- api: set mock viewset kwargs before calling model within ComonViewSet test cases
- access: When checking a list of user permissions, check ALL permissions first, then return the result.
- access: User permissions checks to use plural check instead of singular permission check
- core: remove superflous function
get_permission_requiredfrom ViewSet - api: Update ticket model linking to use the new ticket sub-models for markdown rendering
- core: Adjust ticket fields name to be single word for fields assigned and subscribed
- core: Use Centurion fileds history for tickets
- api: Update ticket linked models metadata to use refactored model
- core: Dont use link model serializer within slash command for linkmodel
- core: move model validation from serializer to model for TicketDependency model.
Tests
- core: Add functional test suite for slash command time tracking
- base: OAuth Pipeline required claim Test Suite
- **core...
1.28.1
1.28.1 (2026-02-01)
Fixes
- core: When fetching model history, if value not a model use raw value
- access: If migrations have not run when loading permissions, catch error gracefully
- celery: Setup prometheus on main process only
Refactoring
- docker: remove build artifacts from container layers
- base: Limit errors to permission fetching loop
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:0607dc13485757bc23fb86d55f11ca13aca5ed4adocker pull docker.io/nofusscomputing/centurion-erp:1.28.1
1.28.0
1.28.0 (2026-01-23)
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:356b85290dfec76bf362bdbf80b241bda93dd371docker pull docker.io/nofusscomputing/centurion-erp:1.28.0
1.28.0-rc1
1.28.0-rc1 (2026-01-23)
Features
- Build and Release python package
- python: Update django 5.1.13 -> 5.1.15
Fixes
- core: some models may not be centurion models, so use their pk
- within settings import use relative
- python: use module namespace for script
- when fetching audit history, if A==B, try fetching history before validation
- docker: remove pip uninstall prompt during build
- docker: requirements_test was renamed to requirements_dev
Refactoring
- build: split prod requirements further to docker
- docker: Remove setuptools as its not required
Tests
- core: use audit values func to ensure before and after the same for validation test
- integration: fix. ensure test cont is rebuilt
- integration: fix. use cont env var for checking hash
- fix. ensure the var is cast bool
- docker: Dont test work with
settings.Debug=True - remove code migrated to pytest-simplified plugin
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:37081a86750dbd733d805025b73303485a04fd3bdocker pull docker.io/nofusscomputing/centurion-erp:1.28.0-rc1
1.27.0
1.27.0 (2025-11-02)
feat
- core: Migration signal to migrate manufacturers to companies
- itam: Add Company field to model itam.Software
- itam: Add Company field to model itam.OperatingSystem
- itam: Add Company field to model itam.DeviceModels
- access: Add Global settings option to set company to global organization
Refactoring
- itam: Migrate Manufacturer management command to use access.company model
Tests
- base: Correct migration update so it works properly
- access: Add Test cases to Company model to ensure that global org is correctly set
- access: Add Functional Model Test Suite for Company model
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:a6a7f76b40ad415c79de042382ec4b92a05983c4docker pull docker.io/nofusscomputing/centurion-erp:1.27.0
1.26.1
1.26.1 (2025-10-19)
Refactoring
- human_resources: Adjust employee id field, int -> bigint
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:da5a061d75494b2e638a5cf48cfbb6f85650b6b7docker pull docker.io/nofusscomputing/centurion-erp:1.26.1
1.26.0
1.26.0 (2025-10-18)
feat
- core: When a ticket comment is created, associate with currently authenticated user
- core: ensure that when attempting to link sub-model reqs are met
- human_resources: Add user field to Employee details page
- human_resources: Add Migration signal to ensure that all users have an Employy entity created.
- core: Add Linking of parent models when sub-model is being created
- human_resources: Migration for field user to Employee Entity model
- human_resources: Add field user to Employee Entity model
- human_resources: remove feature flag 2025-00005
Fixes
- core: Whn attempting to link a model, if it already has an id, dont attempt to link to a parent
- human_resources: when adding users as an employee as part of migration signal auto-generate the names if hey are blank
- access: Entity qs must e cached
- itam: Oranizatio field must be null if not defined for Software model
- core: When validating a ticket comment always set its tenancy to the tickets tenancy
- core: when saving a model if no before data is found (
=None) set to empty dict by default - access: when fetching data, determine type by model
- core: When fetching model history during save, when no pk exists, always assume creatung model
- access: Contacts must be filtered to those who opt for directory listing
- access: when setting display name for entiry models, use get_related_model function
Refactoring
- core: When generating entity display name, look in the entity type class for it first
- core: migrations for TicketBase field to be Entity model
- core: migrate opened_by field to be Entity model
- access: organization field must be null for tenancy_abstract_model
- core: update get_url functions to use get_related_model function
- migrate function get_related_model to Centurion mixin
- migrate function get_related_field_name to Centurion mixin
Tests
- base: Functional test cases to ensure that when creating and edting a model that the supplied data matches what's saved
- core: Ensure ticket comment cant be created if the user has no entity assigned
- core: Ensure ticket cant be created if the user has no entity assigned
- access: Test cases to ensure that child model links to existing person model
- access: Test cases to ensure that child model links to existing contact model
- access: remove test for validation of duplicate
- human_resources: Update Test suites for employee to perform fiels User checks
- core: Remove centrion mixin function test to check returning related model name
- human_resources: Unit ViewSet test suite for Employee model
- human_resources: Unit serializer test suite for Employee model
- human_resources: Functional model test suite for Employee model
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:e04a196ec0389531843210b6a777fb64605f57c8docker pull docker.io/nofusscomputing/centurion-erp:1.26.0
1.25.0
1.25.0 (2025-10-10)
feat
- python: update social-auth-app-django 5.4.1 -> 5.6.0
- python: Upgrade django 5.1.12 -> 5.1.13
- base: prevent python depreciation warnings within the docker container
- core: add model manager ModelTicket
- core: Add new method for processing link slash command
- core: enable posting to modelticket endpoint
- Add field
modelto modelticket setializers - core: Make model core.ModelTicketMetaModel so ticket only assigned once
- core: Add URL Route for model core.ModelTicketMetaModel
- core: Add URL Route for model core.ModelTicket again
- core: order model ModelTicket by created date
- core: Add Migrations for model core.ModelTicket
- core: Add URL Route for model core.ModelTicket
- core: Add ViewSet for model core.ModelTicket
- core: Add serializer for model core.ModelTicket
- core: Add new model core.ModelTicket
- core: Do not allow a ticket comment to be deleted when it has threads
- core: Add TicketBase model permissions import, purge and triage
Fixes
- core: Ensure model_type=tenant selects the right type
- core: when validating ModelTicket uniqueness, exclude self
- core: Correct model field name and description for ModelTicket
- ModelTicket sub-Serializers require field
ticketbe writable - api: when converting viewset exception, check msg attr exists
- core: TicketModel ViewSerializer to inherit from bas ViewSerializer
- core: ret model_suffix to ViewSet
- core: Field change detection for ticket must cater for foriegn field ids
- core: When adding a comment of TicketCommentSolution, it must solve the ticket
- core: Add delete method to TicketCommentBase
- core: TicketCommentBase model method clean must call super
- settings: AppSettings model method clean must call super
- itim: Service model method clean must call super
- itam: Software model method clean must call super
- itam: SoftwareCategory model method clean must call super
- itam: DeviceType model method clean must call super
- itam: DeviceModel model method clean must call super
- core: TicketBase model method clean must call super
- core: Manufacturer model method clean must call super
Refactoring
- core: move ticket sub url so it's fully-dynamic
Tests
- core: Unit Test cases for ModelTicket Serializer Validate method
- core: Unit Test cases for ModelTicket Serializer Validate method
- core: ModelTicket Manager Test Suite
- refactor fixtures to fixture factories
- api: Ensure when checking queryset filtered results all of the test data is available.
- core: Add functional model test to ensure ticket and model can only be assigned once
- core: Add functional ViewSet Test suite for ALL ModelTickets models
- core: Add functional Model Test suite for ALL ModelTickets models
- core: Add functional API Permissions Test suite for ALL ModelTickets endpoints
- core: Add API Fields REnder Functional Test suites for model ModelTicket
- core: Add ViewSet Unit test suite for model ModelTicketMetaModels
- core: Add Serializer Unit test suite for model ModelTicketMetaModels again
- core: Add Serializer Unit test suite for model ModelTicketMetaModels
- core: Add Serializer Unit test suite for model ModelTicketMeta
- core: Add Model Unit test suite for model ModelTicketMetaModels
- core: Add Model Unit test suite for model ModelTicketMetaModel
- core: Correct Serializer Unit test case for model ModelTicket is_valid
- core: Add Serializer Unit test suite for model ModelTicket
- core: Add ViewSet Unit test suite for model ModelTicket
- core: Add Unit test case for model attribute
_ticket_linkable - core: Add Unit test suite for model ModelTicket
- core: Add TicketCommentAction Unit Serializer test suite
- core: Add TicketCommentSolution Unit Serializer test suite
- core: Add TicketCommentSolution functional ViewSet test suite
- core: Add TicketCommentAction functional ViewSer test suite
- core: Add TicketCommentSolution functional model test cases for threads
- core: Add TicketCommentAction functional model test cases for threads
- core: Add TicketBaseComment functional model test cases for threads
- core: Update TicketCommentSolution unit model test suite
- core: Update TicketCommentSolution unit ViewSet test suite
- core: Update TicketCommentAction unit ViewSet test suite
- core: Update TicketCommentBase unit ViewSet test suite
- core: Add TicketCommentBase unit Serializer test suite
- itim: Remove skip for TicketCommentBase unit model test suite
- itim: Add TicketCommentBase functional ViewSet test suite
- itim: Remove skip for TicketCommentBase Functional api_fields test suite
- itim: add RequestTicket Functional model test suite
- itim: add SLMTicket Functional model test suite
- core: skip clean_fields method super call test case as model is abstract for model MetaAbstract Note
- core: skip clean_fields method super call test case as model is abstract for model MetaAbstract Audit
- Add test cases to unit Model test suite for all model clean fields methods along inheritance chain
- core: Add sub-Model unit test cases for model TicketBase
- core: Model functional test cases for model TicketBase clean function
- itim: Update viewset functional test suite for model RequestTicket
- itim: Update viewset functional test suite for model SLMTicket
- core: Update viewset functional test suite for model TicketBase
- core: Update metadata functional test suite for model TicketBase
- core: Model unit test case for model TicketBase checking milstone choices
- core: Re-Enable Model unit test suit for model TicketBase
- core: Add ViewSet unit test suit for model TicketBase
- itim: Add ViewSet unit test suit for model SLMTicket
- itim: Add Serializer unit test suit for model SLMTicket
- itim: Add ViewSet unit test suit for model RequestTicket
- itim: Add Serializer unit test suit for model RequestTicket
- core: Add ViewSet unit test suit for model TicketBase
- core: Add Serializer unit test suit for model TicketBase
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:43447ec6e2600d131598316cad992147898d004cdocker pull docker.io/nofusscomputing/centurion-erp:1.25.0
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:43447ec6e2600d131598316cad992147898d004cdocker pull docker.io/nofusscomputing/centurion-erp:1.25.0
1.24.1
1.24.1 (2025-09-17)
Fixes
- base: remove gunicorn syslog address
- feature_flag: when fetching a feature flag and it's not enabled, ALWAYS return false
- base: gunicorn logging config setup
- feature_flag: use get to fetch a potentially empty dict
- base: Dont add syslog handler when no address is supplied
Refactoring
- base: set gunicorn to only log errors
- base: configure handlers for error log
- base: Move supervisor app logs to own dir for clarity
- base: Log ALL errors to own file in addition to specified log
- base: Add logging levels to base class
Tests
- devops: Ensure that feature flags are not obtained during HTTP request processing
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:7c7426beb1e0723a04dfa0b005371d93bfe5332bdocker pull docker.io/nofusscomputing/centurion-erp:1.24.1
1.24.0
1.24.0 (2025-09-13)
feat
- base: Add Optional Trace Debugging to Centurion
Images part of this release
The following images were built and published:
docker pull docker.io/nofusscomputing/centurion-erp:devdocker pull docker.io/nofusscomputing/centurion-erp:75a4b8381fe6355861c01a02ffc7a9ea98be433adocker pull docker.io/nofusscomputing/centurion-erp:1.24.0