docs
A comprehensive Customer Relationship Management software built on Django with extensive customization capabilities
npx @tessl/cli install tessl/pypi-creme-crm@2.7.0A comprehensive, highly configurable Customer Relationship Management (CRM) software built with Django that features an entities/relationships architecture enabling extensive customization and workflow adaptation. The application provides integrated modules for managing contacts & organizations, documents & folders, activities with calendar integration, products & services, invoicing systems, opportunities tracking, commercial actions, email campaigns, reporting, ticketing, alerts/todos, and geolocation services.
pip install creme-crmimport creme
from creme.creme_core.models import CremeEntity, CremeUser, Relation
from creme.creme_core import get_concrete_modelFor Django management (console script):
# Use via command line:
creme runserver
creme migrate
creme creme_populateDirect function import:
from creme.manage import execute # Main entry point function# Get the current version
from creme import get_version
version = get_version() # Returns "2.7"
# Access core models
from creme.creme_core.models import CremeUser, CremeEntity, Relation
# Get concrete model implementations
from creme.creme_core import get_concrete_model
ContactModel = get_concrete_model('PERSONS_CONTACT_MODEL')
OrganisationModel = get_concrete_model('PERSONS_ORGANISATION_MODEL')
# Create entities (requires Django setup)
contact = ContactModel.objects.create(
first_name="John",
last_name="Doe",
email="john@example.com"
)
# Create relationships between entities
from creme.creme_core.models import RelationType
rel_type = RelationType.objects.get(pk='some-relation-id')
Relation.objects.create(
subject_entity=contact,
object_entity=some_organisation,
type=rel_type
)Creme CRM follows Django's app-based architecture with several key design principles:
CremeEntity, providing a unified interface for properties, relationships, permissions, and history trackingRelation and RelationType modelsThis design enables businesses to customize workflows, add custom fields and entities, configure user interfaces, and extend functionality while maintaining data integrity and security.
Command-line interface for administrative tasks and server management.
def execute():
"""
Main Django management command interface for Creme CRM.
Sets up Django environment and executes management commands.
Environment Variables:
- DJANGO_SETTINGS_MODULE: Django settings module (defaults to 'creme.settings')
Usage via command line:
creme runserver
creme migrate
creme creme_populate
"""Entity system, relationships, permissions, and core Django models that provide the foundation for all CRM functionality.
class CremeEntity(CremeModel):
"""
Base class for all business entities in Creme CRM.
Fields: created, modified, entity_type, header_filter_search_field,
is_deleted, user, description, uuid, sandbox, extra_data
Manager: CremeEntityManager
"""
class CremeUser(AbstractUser):
"""Extended user model with CRM-specific fields and 30-char username limit."""
class Relation(models.Model):
"""Relationships between entities with typed connections."""
def get_concrete_model(model_setting: str) -> type[models.Model]:
"""Get active model class from settings configuration."""Manage contacts, organizations, and their relationships with comprehensive contact information, custom fields, and relationship tracking.
class Contact(CremeEntity):
"""Individual contact entity with personal information."""
class Organisation(CremeEntity):
"""Company/organization entity with business information."""Task management, calendar integration, activity scheduling, and reminder systems for organizing business activities.
class Activity(CremeEntity):
"""Activity/task entity for scheduling and time management."""
class Calendar(models.Model):
"""Calendar for organizing activities."""Invoice generation, quotations, credit notes, sales orders, and financial document workflows with PDF generation and email integration.
class Invoice(CremeEntity):
"""Invoice entity for billing customers."""
class Quote(CremeEntity):
"""Quotation entity for price estimates."""
class CreditNote(CremeEntity):
"""Credit note for refunds and corrections."""File storage, document organization, folder structures, and document sharing with version control and access permissions.
class Document(CremeEntity):
"""Document entity for file management."""
class Folder(CremeEntity):
"""Folder entity for document organization."""Email template creation, mailing list management, campaign execution, and email tracking with SMTP integration.
class EmailTemplate(CremeEntity):
"""Email template for consistent messaging."""
class EmailCampaign(CremeEntity):
"""Email campaign for mass communications."""
class MailingList(CremeEntity):
"""Mailing list for organizing recipients."""Sales pipeline management, opportunity tracking, sales phase configuration, and revenue forecasting.
class Opportunity(CremeEntity):
"""Sales opportunity entity for pipeline management."""
class SalesPhase(models.Model):
"""Sales phase for opportunity progression."""Product catalog management, service definitions, pricing, categories, and inventory integration.
class Product(CremeEntity):
"""Product entity for catalog management."""
class Service(CremeEntity):
"""Service entity for service catalog."""Business intelligence, custom reports, graph generation, and data analysis with configurable dashboards.
class Report(CremeEntity):
"""Custom report entity for business intelligence."""
class Graph(CremeEntity):
"""Graph entity for data visualization."""User accounts, role-based permissions, team management, and security configuration with fine-grained access control.
class UserRole(models.Model):
"""Role-based permission system."""
class EntityCredentials(models.Model):
"""Entity-level access permissions."""System configuration, custom fields, custom forms, UI customization, and workflow configuration for adapting the system to business needs.
class CustomEntityType(models.Model):
"""Custom entity type definition."""
class FieldsConfig(models.Model):
"""Field visibility and behavior configuration."""Data import/export functionality, batch processing, CSV/Excel support, and data migration tools.
class Job(models.Model):
"""Background job for long-running operations."""
class MassImportJobResult(models.Model):
"""Results of mass import operations."""Support ticket management for customer service with priority levels, status tracking, and template support.
class Ticket(CremeEntity):
"""Support ticket entity for customer service."""
class TicketTemplate(CremeEntity):
"""Template for standardized ticket creation."""
def get_ticket_model():
"""Returns the active Ticket model."""Event management system for meetings, conferences, workshops, and business gatherings.
class Event(CremeEntity):
"""Event entity for meeting and conference management."""
class EventType(models.Model):
"""Event type classification system."""
def get_event_model():
"""Returns the active Event model."""Administrative configuration interface for system settings, entity configuration, and UI customization.
class ConfigRegistry:
"""Central registry for configuration items."""
class FieldsConfig(models.Model):
"""Entity field visibility configuration."""Creme CRM provides comprehensive Django settings for database, security, internationalization, media handling, and application-specific configurations.
Administrative commands for database initialization, user creation, maintenance, and system management.
Template tags, context processors, and custom widgets for building the web interface and customizing the user experience.
Creating custom apps, extending entities, adding custom fields, and integrating third-party services.
REST endpoints, AJAX interfaces, and integration patterns for connecting external systems.
# Core entity types
CremeEntity = Any # Base entity class
CremeUser = Any # User model
Relation = Any # Entity relationship
# Configuration types
FieldsConfig = Any # Field configuration
HeaderFilter = Any # List view configuration
EntityFilter = Any # Entity filtering
# Job system types
Job = Any # Background job
JobResult = Any # Job execution result
# Form types
CremeForm = Any # Base form class
CremeModelForm = Any # Model form class