Releases: nofusscomputing/centurion_erp
Release list
1.20.2
1.20.2 (2025-08-25)
Fixes
- access: When creating an item and tenancy not required, cater for this within authorization
- access: Update old models for new permssion check methods
Tests
- api: Test case to confirm MetaData can be fetch for list action
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:7bccacb0caff267343ab99356df1ad96d7ecc200docker pull docker.io/nofusscomputing/centurion-erp:1.20.2
1.20.1
1.20.1 (2025-08-22)
Fixes
- access: Check both permissions and permissions by tenancy seperatly
- access: Ensure superuser check is done
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:d0d6e401451e96d8a989392a6101493cb63bd31cdocker pull docker.io/nofusscomputing/centurion-erp:1.20.1
1.20.0
1.20.0 (2025-08-22)
feat
- access: Switch Tenancy Object to use refactord Tenancy Manager
- Switch authorization object from request.tenancy -> request.user
- base: Switch user model to CenturionUser
- access: CenturionUser model migrations
Fixes
- access: When checking for user within TenancyManager, ensure it has an id
- settings: AppSettings model should return
owner_organizationforget_organization - access: CenturionUser model must inherit from Abstract User
- dont load user object during app load
Refactoring
- access: do prefetch user orgs, permissions and content_types
- access: rename mixin OrganizationPermissionMixin -> TenancyPermissionMixin
- api: ensure kwargs are copied for api perm test cases
- core: when deleting a model dont re-fetch from db, use current data
Tests
- functional: Add Token Authentication Functional Test Suite
- integration: Test to ensure that migrations run successfully
- access: Correct TenantModelNote userOrgs fetch test case to use correct model
- access: Updated Test Suite for mixin TenancyPermission
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:e9b79f921d96b646a0bf59bb72332ce5b50b5129docker pull docker.io/nofusscomputing/centurion-erp:1.20.0
1.19.3
1.19.3 (2025-08-17)
Fixes
- api: ensure human_resources is behind its feature flag
- human_resources: correct index route name
- access: correct access route name
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:c1aa0cd52d15e99f01d25b8003226a55d10af462docker pull docker.io/nofusscomputing/centurion-erp:1.19.3
1.19.2
1.19.2 (2025-08-16)
Fixes
- base: before setting up metrics if enabled, create data dir
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:1bd4e6d48d0776fb383c59259fcdf0405a289b57docker pull docker.io/nofusscomputing/centurion-erp:1.19.2
1.19.1
1.19.1 (2025-08-15)
Fixes
- docker: if not testing dont attempt to import coverage
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:83d55de525ab1bbdd59b05d5421e8befb5adf097docker pull docker.io/nofusscomputing/centurion-erp:1.19.1
1.19.0
1.19.0 (2025-08-15)
feat
- core: add to migration signal system user and use for inventory objects
- docker: Adjust gunicorn works=4 100reqs/max and preload app
- api: Ensure that serializer converts Django exceptions to rest_framework exceptions
- access: Filter history permissions
- access: Add Audit and notes tables for model Role
- access: Add AuditHistory Serializer for Role model
- access: Add Notes Serializer for Role model
- itam: Add AuditHistory Serializer for ITAMAssetBase model
- itam: Add Notes Serializer for ITAMAssetBase model
- accounting: Add AuditHistory Serializer for AssetBase model
- accounting: Add Notes Serializer for AssetBase model
- When attempting to create and objetc must be unique and alrready exists, dont return error return existing object
- access: History + Notes model migrations for Company Model
- api: map notfound and perm denied django -> drf exceptions
- human_resources: Add model tag for Employee model
- human_resources: Add AuditHistory Serializer for Employee model
- human_resources: Add Notes Serializer for Employee model
- human_resources: Change model to inherit from
CenturionModelfor Employee model - access: Add model tag for Person model
- access: Add AuditHistory Serializer for Person model
- access: Add Notes Serializer for Person model
- access: Change model to inherit from
CenturionModelfor Person model - access: Add model tag for Contact model
- access: Add AuditHistory Serializer for Contact model
- access: Add Notes Serializer for Contact model
- access: Change model to inherit from
CenturionModelfor Contact model - access: Add AuditHistory Serializer for Company model
- access: Add Notes Serializer for Entity model
- access: Change model to inherit from
CenturionModelfor Company model - access: Change model to inherit from
CenturionModelfor Entity model - access: Add AuditHistory Serializer for Entity model
- access: Add Notes Serializer for Entity model
- access: Change model to inherit from
CenturionModelfor Entity model - settings: Add model tag for ExtrnalLink model
- settings: Add AuditHistory Serializer for UserSettings model
- settings: Add Notes Serializer for UserSettings model
- settings: Change model to inherit from
CenturionModelfor UserSettings model - settings: Add model ExternalLink to migrate for history and notes
- settings: Add AuditHistory Serializer for ExternalLink model
- settings: Add Notes Serializer for ExternalLink model
- settings: Change model to inherit from
CenturionModelfor ExternalSettings model - settings: Add model AppSettings to migrate for history and notes
- settings: Add AuditHistory Serializer for AppSettings model
- settings: Add Notes Serializer for AppSettings model
- settings: Change model to inherit from
CenturionModelfor AppSettings model - project_management: Add model ProjectType to migrate for history and notes
- project_management: Add AuditHistory Serializer for ProjectTYpe model
- project_management: Add Notes Serializer for ProjectType model
- project_management: Change model to inherit from
CenturionModelfor ProjectType model - project_management: Add model ProjectState to migrate for history and notes
- project_management: Add AuditHistory Serializer for ProjectState model
- project_management: Add Notes Serializer for ProjectState model
- project_management: Change model to inherit from
CenturionModelfor ProjectState model - project_management: Add model ProjectMilestone to migrate for history and notes
- project_management: Add AuditHistory Serializer for ProjectMilestone model
- project_management: Add Notes Serializer for ProjectMilestone model
- project_management: Change model to inherit from
CenturionModelfor ProjectManagement model - project_management: Add model Project to migrate for history and notes
- project_management: Add AuditHistory Serializer for Project model
- project_management: Add Notes Serializer for Project model
- project_management: Change model to inherit from
CenturionModelfor Project model - itim: Add model Service to migrate for history and notes
- itim: Add AuditHistory Serializer for Service model
- itim: Add Notes Serializer for Service model
- itim: Change model to inherit from
CenturionModelfor Service model - itim: Add model Port to migrate for history and notes
- itim: Add AuditHistory Serializer for Port model
- itim: Add Notes Serializer for Port model
- itim: Change model to inherit from
CenturionModelfor Port model - itim: Add AuditHistory Serializer for ClusterType model
- itim: Add Notes Serializer for ClusterType model
- itim: Change model to inherit from
CenturionModelfor ClusterType model - itim: Add model Cluster to migrate for history and notes
- itim: Add Notes Serializer for Cluster model
- itim: Add AuditHistory Serializer for Cluster model
- itim: Change model to inherit from
CenturionModelfor Cluster model - itam: Add model SoftwareVersion to migrate for history and notes
- itam: Add Notes Serializer for SoftwareVersiony model
- itam: Add AuditHistory Serializer for SoftwareVersion model
- itam: Change model to inherit from
CenturionModelfor SoftwareVersion model - itam: Add model SoftwareCategory to migrate for history and notes
- itam: Add Notes Serializer for SoftwareCategory model
- itam: Add AuditHistory Serializer for SoftwareCategory model
- itam: Change model to inherit from
CenturionModelfor SoftwareCategory model - itam: Add model Software to migrate for history and notes
- itam: Add Notes Serializer for Software model
- itam: Add AuditHistory Serializer for Software model
- itam: Change model to inherit from
CenturionModelfor Software model - itam: Add model OperatingSystemVersion to migrate for history and notes
- itam: Add Notes Serializer for OperatingSystemVersion model
- itam: Add AuditHistory Serializer for OperatingSystemVersion model
- itam: Change model to inherit from
CenturionModelfor OperatingSystemVersion model - itam: Add model OperatingSystem to migrate for history and notes
- itam: Add Note Serializer for DeviceSoftware model
- itam: Add AuditHistory Serializer for DeviceSoftware model
- itam: Change model to inherit from
CenturionModelfor DeviceSoftware model - itam: Change model to inherit from
Centurionfor DeviceSoftware model - itam: Add model_tag to DeviceType model
- itam: Add DeviceType for history and notes data migration
- itam: Add DeviceModel for history and notes data migration
- itam: Add DEvice for history and notes data migration
- devops: Switch SoftwareEnabledFeatureFlag model to inherit from CenturionModel
- devops: Update checkin model fixture so it creates the feature flag
- devops: Add methods get_url and get_url_kwargs to CheckIn model
- devops: Add migration to signal
- devops: Add migration to signal
- devops: Add migration to signal
- devops: Add migration to signal
- devops: Update URL route basename
- devops: Migrations for switching GitLabRepository model to inherit from
CenturionModel - devops: Migrations for switching GitRepository model to inherit from
CenturionModel - devops: Migrations for switching GitRepository model to inherit from
CenturionModel - devops: Serializers for GitRepository models notes and history
- devops: Serializers for GitHubGitRepository models notes and history
- devops: Serializers for GitLabGitRepository models notes and history
- devops: Switch GitLabGitRepository model to inherit from
CenturionModel - devops: Switch GitHubGitRepository model to inherit from
CenturionModel - devops: Switch GitRepository model to inherit from
CenturionModel - devops: Update Checkin model url route basename
- devops: Add app_namespace Checkin model
- devops: Add Checkin to migrate model history/notes
- devops: Migrations for switching Checkin model to inherit from
CenturionModel - devops: Switch Checkin model to inherit from
CenturionModel - core: add TicketCommentCategory to history/notes migration
- core: add model tag to ticket comment category
- core: Migrations for TicketCategory
- core: add TicketCategory to history/notes migration
- core: add model tag to ticket category
- core: add Manufacturer to history/notes migration
- core: add model tag to manufacturer
- config_management: add ConfigGroups to history/notes migration
- config_management: add ConfigGroupSoftware to history/notes migration
- config_management: add ConfigGroupHosts to history/notes migration
- access: add tenant to history/notes migration
- access: Migration for switching model inheritence to
CenturionModel - itam: Update model methods
- access: Migration for switching model inheritence to
CenturionMixin - access: Switch model inheritence to
CenturionMixin - itam: Update url basename
- itam: Update url basename
- base: add support for manytomany for model unit tests
- itam: Update url basename
- core: Update url basename
- core: Update url basename
- core: Update url basename
- core: Update url basename
- core: Update url basename
- core: Update url basename
- access: TeamUsers do not require notes
- config_management: ConfigGroupHosts and ConfigGroupSoftware do not require notes
- config_management: Add url_kwargs to ConfigGroupSoftware model
- access: Add url_kwargs to Team model
- access: Add url_kwargs to TeamUser model
- access: Update TeamUser API basename
- access: Update Team API basename
- **ita...
1.18.0
1.18.0 (2025-07-03)
feat
- python: upgrade django 5.1.9 -> 5.1.10
Fixes
- itim: Correct config that is in the incorrect format
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:3d2d759d6b1cde01771ca46e846f943af3319ba2docker pull docker.io/nofusscomputing/centurion-erp:1.18.0
1.17.1
1.17.1 (2025-06-02)
Fixes
- base: Add python metrics to prometheus exporter
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:4fb94bdd6dae9cf23b924f52b9df20686d739ac8docker pull docker.io/nofusscomputing/centurion-erp:1.17.1
1.17.0
1.17.0 (2025-05-16)
⚠️ Important 🛑
As Organizations was renamed to Tenant the migrations will have to be done in two stages. The migrations commands are:
python manage.py migrate access 0007_rename_organization_tenant
This does the table rename and triggers the creation of the new permissions.- python manage.py migrate
This will complete the migrations
Note: If you fail to do the migrations in two steps you will receive an error stating django.contrib.auth.models.Permission.DoesNotExist: Permission matching query does not exist. If you jumped the gun and failed to run the migrations as above. Roll the migrations back by running python manage.py migrate access 0007_rename_organization_tenant
feat
- access: model access.Company feature flag
2025-00008 - access: URL route for model access.Company
- access: Migration for model access.Company
- access: Serializer for model access.Company
- access: New model access.Company
- access: Organization -> Tenant Permission Migration
- docker: Serve a robots.txt file for NO indexing
- access: Organization -> Tenant Permission Migration
- base: Add var
AUTH_USER_MODELto settings - core: Add Action comments on ticket change
- core: Remove add, change and delete permissions for model TicketCommentAction from permission selector
- core: Serializer for model TicketCommentAction
- core: Migrations for model TicketCommentAction
- core: New model TicketCommentAction
- core: Setup serializer to meet requirements
- core: Setup model to meet requirements
- api: Add exception logging to ViewSetCommon
- python: Upgrade DRF Spectacular 0.27.2 -> 0.28.0
- python: Upgrade DRF 3.15.2 -> 3.16.0
- core: When processing slash command duration, cater for new ticket models
- api: Add Logging function to Common ViewSet
- access: Add Logging function to Tenancy model
- base: Enable user to customize log file location
- core: Do validate the comment_type field for TicketCommentBase
- itam: Add Feature Flag
2025-00007ITAMAssetBase - itam: Add endpoint for ITAMAssetBase
- Model tag migration for Asset and IT Asset
- itam: Model tag for ITAsset
- accounting: Model tag for Asset
- accounting: Add app label to kb articles for notes
- accounting: Migrations for notes model for AssetBase
- accounting: Migrations for history model for AssetBase
- accounting: Notes Viewset for AssetBase
- accounting: Notes Serializer for AssetBase
- accounting: Notes model for AssetBase
- accounting: History model for AssetBase
- itam: Serializer for ITAssetBase
- itam: Migrations for ITAssetBase
- itam: Add Model ITAssetBase
- accounting: Viewset for Assets
- accounting: Serializer for model AssetBase
- accounting: Migrations for model AssetBase
- accounting: Add Model AssetBase
Fixes
- api: Dont try to access attribute if not exist in common viewset
- api: Dont try to access attribute if not exist in common viewset
- api: Correct ViewSet Sub-Model lookup
- core: Only take action on ticket comment if view exists
- api: Ensure multi-nested searching for sub-models works
- core: ensure slash command is called on ticket description
- core: Spent slash command is valid for time spent
- core: Correct logic for TicketCommentSolution
- core: Correct logic for TicketCommentBase
- accounting: Ensure correct sub-model check is conducted within model type
- itam: ensure RO field asset_type is set
- itim: Ensure that itam base model is always imported
Refactoring
- human_resources: Update Functional ViewSet to use PyTest for Employee Model
- Access: Update Functional ViewSet to use PyTest for Person Model
- Access: Update Functional ViewSet to use PyTest for Entity Model
- Access: Update Functional ViewSet to use PyTest for Contact Model
- Access: Update Functional Permission to use PyTest for Person Model
- Access: Update Functional Permission to use PyTest for Entity Model
- Access: Update Functional Permission to use PyTest for Contact Model
- Access: Update Functional Serializer to use PyTest for Contact Model
- Access: Update Functional Serializer to use PyTest for Entity Model
- Access: Update Functional Serializer to use PyTest for Person Model
- human_resources: Update Functional Serializer to use PyTest for Employee Model
- human_resources: Update Functional Permissions to use PyTest for Employee Model
- human_resources: Update Functional Metadata to use PyTest for Employee Model
- access: Update Functional Metadata to use PyTest for Person Model
- access: Update Functional Metadata to use PyTest for Entity Model
- access: Update Functional Metadata to use PyTest for Contact Model
- access: Update Model Entity to use PyTest for Model Test Suite
- access: Update Model Contact to use PyTest for Model Test Suite
- access: Update Model Person to use PyTest for Model Test Suite
- human_resources: Update Model Employee to use PyTest for Model Test Suite
- human_resources: Update Model Employee to use PyTest API Fields Render
- access: Update Model Person to use PyTest API Fields Render
- access: Update Model Contact to use PyTest API Fields Render
- access: Update Model Entity to use PyTest API Fields Render
- access: Rename model Organization -> Tenant
- settings: Update all references to
Userto useget_user_model() - project_management: Update all references to
Userto useget_user_model() - itam: Update all references to
Userto useget_user_model() - devops: Update all references to
Userto useget_user_model() - core: Update all references to
Userto useget_user_model() - config_management: Update all references to
Userto useget_user_model() - assistance: Update all references to
Userto useget_user_model() - app: Update all references to
Userto useget_user_model() - api: Update all references to
Userto useget_user_model() - accounting: Update all references to
Userto useget_user_model() - access: Update all references to
Userto useget_user_model() - access: when fetching parent object, use the parent_model get function
- api: Limit url pk regex to ensure the value is a number
Tests
- access: Functional ViewSet Test Suite Company model
- access: Functional Serializer Test Suite Company model
- access: Functional Permissions Test Suite Company model
- access: Functional MetaData Test Suite Company model
- access: ViewSet Test Suite Company model
- access: API field render Test Suite Company model
- access: Model Test Suite Company model
- core: Unit viewset Test Cases for TicketCommentAction model
- core: Unit model Test Cases for TicketCommentAction model
- core: Unit API Render Test Cases for TicketCommentAction model
- core: Interim Functional model Test Case TicketCommentAction
- core: Ensure that a ticket milestone comes from the same assigned project
- core: SKIP Tests TicketBase Description Slash command Checks
- core: TicketBase Description Slash command Checks
- core: TicketBase Remaining Serializer Chacks
- core: Partial functional Model Test Suite covering some slash commande for TicketCommentSolution
- core: ensure ticket is un-solved for ticketcomment unit api render fields check
- core: ensure slash command is called on ticket comment
- core: Unit ViewSet Test Suite for TicketCommentSolution
- core: Unit ViewSet Test Suite for TicketCommentBase
- core: Skip Related slash command checks until migrating tickets to new model
- core: Add ability to unit api field rendering test case for second api request if required
- core: Partial Functional Model test cases (Slash Commands) for TicketCommentBase
- core: Functional Model test cases (Slash Commands) for TicketBaseModel
- core: Partial Slash Command re-write
- core: correct field so its valid for unit TicketCommentBase model
- core: Unit API Fields Render for TicketCommentSolution model
- core: Unit API Fields Render for TicketCommentBase model
- core: Unit Model assert save and call are called for TicketBase
- core: Unit Model Checks for TicketCommentSolution
- core: Unit Model Checks for TicketCommentBase
- itam: test meta attribute itam_sub_model_type for ITAMBaseModel
- itam: Dont use constants where variables should be used
- itam: Remaining Unit Model test cases for AssetBase
- accounting: Remaining Unit Model test cases for AssetBase
- itam: Functional ViewSet Test Cases for ITAMAssetBase
- itam: Functional Serializer Test Cases for ITAMAssetBase
- itam: Functional Permissions Test Cases for ITAMAssetBase
- itam: Functional Metadata Test Cases for ITAMAssetBase
- itam: Functional History Test Cases for ITAMAssetBase
- accounting: Functional ViewSet Test Cases for AssetBase
- accounting: Functional Serializer Test Cases for AssetBase
- accounting: Functional Permissions Test Cases for AssetBase
- accounting: Functional Metadata Test Cases for AssetBase
- accounting: History Test Cases for AssetBase
- add missing merge of add_data for api permissions tests
- remove ticket only vars from api permissions tests
- api: dont use constants for variable data
- correct viewset tests
- itam: Unit Viewset checks for AssetBase Model
- core: Add missing fields is_global checks for ticket base
- api: Add submodel url resolution for metadata
- itam: Unit API Fields checks for ITAM AssetBase Model
- **ac...