wagtail_tenants is a Django/Wagtail app to provide multitenancy to your wagtail project.

Overview

wagtail-tenants

Documentation Status Testing the wagtail tenants with postgres

wagtail_tenants is a Django/Wagtail app to provide multitenancy to your wagtail project. You are able to run a main Wagtail Site and from within you are able to host as many Wagtailsites as you want. django_tenants is used to slice the database layer in a postgres database based on a given schema.

Detailed documentation will be in the "docs" directory.

Quick start

Installation

pip install wagtail-tenants

Configuration

  1. Add "wagtail_tenants" to your INSTALLED_APPS setting like this:

    SHARED_APPS = (
        'wagtail_tenants.customers'
        'wagtail_tenants',
        'wagtail.contrib.forms',
        ...
        "wagtail_tenants.users",
        "wagtail.users",
        ...
    )
    
    TENANT_APPS = (
        'wagtail_tenants',
        "django.contrib.contenttypes",
        ...
        # rest of the wagtail apps
        ...
        "wagtail_tenants.users",
        "wagtail.users",
        ...
    )
    
    INSTALLED_APPS = list(SHARED_APPS) + [
        app for app in TENANT_APPS if app not in SHARED_APPS
    ]
  2. Include the the tenants middleware at the beginning of your middlewares:

    MIDDLEWARE = [
    "wagtail_tenants.middleware.main.WagtailTenantMainMiddleware",
    ...
    ]
  3. Define the Tenant model Constants (and also set the default auto field if not already done):

    AUTH_USER_MODEL = 'wagtail_tenants.User' 
    TENANT_MODEL = "customers.Client" 
    TENANT_DOMAIN_MODEL = "customers.Domain"
    DEFAULT_AUTO_FIELD='django.db.models.AutoField'
  4. Set the Database backend to the django_tenants backend:

    DATABASES = {
        "default": {
            "ENGINE": "django_tenants.postgresql_backend",
            "NAME": "db_name",
            "USER": "db_user",
            "PASSWORD": "",
            "HOST": "127.0.0.1",
            "PORT": "5432",
        }
    }
  5. Set the Database Router to work with the tenants:

    DATABASE_ROUTERS = ("wagtail_tenants.routers.WagtailTenantSyncRouter",)
  6. Set the authentication backend to fit to our Tenant model.

    AUTHENTICATION_BACKENDS = [
        'wagtail_tenants.backends.TenantBackend',
    ]
  7. Run the migrations with ./manage.py migrate_schemas --shared

  8. Create a public schema with ./manage.py create_tenant

  9. Create a superuser for the public tenant ./manage.py create_tenant_superuser

  10. Start the Server and have fun

  11. You are able to create tenants within the admin of your public wagtailsite. If you want to log into a tenant you need at least one superuser for the tenant. You can use ./manage.py create_tenant_superuser for that.

You might also like...
django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing
django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project. Inspired in the dashboard framework Dashing

django-dashing django-dashing is a customisable, modular dashboard application framework for Django to visualize interesting data about your project.

APIs for a Chat app. Written with Django Rest framework and Django channels.
APIs for a Chat app. Written with Django Rest framework and Django channels.

ChatAPI APIs for a Chat app. Written with Django Rest framework and Django channels. The documentation for the http end points can be found here This

Getdp-project - A Django-built web app that generates a personalized banner of events to come

getdp-project https://get-my-dp.herokuapp.com/ A Django-built web app that gener

Django StatusPage - App to display statuspage for your services

Django StatusPage - App to display statuspage for your services

A Django app that allows visitors to interact with your site as a guest user without requiring registration.

django-guest-user A Django app that allows visitors to interact with your site as a guest user without requiring registration. Largely inspired by dja

Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app.

django-permissions-policy Set the draft security HTTP header Permissions-Policy (previously Feature-Policy) on your Django app. Requirements Python 3.

Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot. A fully Django starter project.

Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot 🚀 Features A Django stater project with fully basic requirements for a production-ready

Django Starter is a simple Skeleton to start with a Django project.

Django Starter Template Description Django Starter is a simple Skeleton to start

Intellicards-backend - A Django project bootstrapped with django-admin startproject mysite

Intellicards-backend - A Django project bootstrapped with django-admin startproject mysite

Comments
  • DB Error on create_tenant (UndefinedTable: relation

    DB Error on create_tenant (UndefinedTable: relation "wagtailcore_pagerevision" does not exist)

    I have a fresh Install of Wagtail (4.0.1) and Django (4.1.1).

    When creating the first tenant, there is a database migration error. Maybe you have an idea about this?

    (env) C:\Users\ano\coding>manage.py create_tenant                                                                                                                                                                                                                                                                                                 
    schema name: web1                                                                                                                                                                                                                                                            
    name: web1                                                                                                                                                                                                                                                                   
    paid until: 2022-12-31                                                                                                                                                                                                                                                       
    on trial: False                                                                                                                                                                                                                                                              
    [1/1 (100%) standard:web1] === Starting migration                                                                                                                                                                                                                            
    [1/1 (100%) standard:web1] Operations to perform:                                                                                                                                                                                                                            
    [1/1 (100%) standard:web1]   Apply all migrations: admin, auth, contenttypes, customers, home, sessions, taggit, users, wagtail_tenants, wagtailadmin, wagtailcore, wagtaildocs, wagtailembeds, wagtailforms, wagtailimages, wagtailredirects, wagtailsearch, wagtailusers   
    [1/1 (100%) standard:web1] Running migrations:                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying customers.0001_initial...                                                                                                                                                                                                              
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying contenttypes.0001_initial...                                                                                                                                                                                                           
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying contenttypes.0002_remove_content_type_name...                                                                                                                                                                                          
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0001_initial...                                                                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0002_alter_permission_name_max_length...                                                                                                                                                                                          
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0003_alter_user_email_max_length...                                                                                                                                                                                               
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0004_alter_user_username_opts...                                                                                                                                                                                                  
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0005_alter_user_last_login_null...                                                                                                                                                                                                
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0006_require_contenttypes_0002...                                                                                                                                                                                                 
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0007_alter_validators_add_error_messages...                                                                                                                                                                                       
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0008_alter_user_username_max_length...                                                                                                                                                                                            
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0009_alter_user_last_name_max_length...                                                                                                                                                                                           
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0010_alter_group_name_max_length...                                                                                                                                                                                               
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0011_update_proxy_permissions...                                                                                                                                                                                                  
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying auth.0012_alter_user_first_name_max_length...                                                                                                                                                                                          
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtail_tenants.0001_initial...                                                                                                                                                                                                        
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying admin.0001_initial...                                                                                                                                                                                                                  
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying admin.0002_logentry_remove_auto_add...                                                                                                                                                                                                 
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying admin.0003_logentry_add_action_flag_choices...                                                                                                                                                                                         
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying customers.0002_clientbackup...                                                                                                                                                                                                         
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying customers.0003_alter_clientbackup_created_at...                                                                                                                                                                                        
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0001_squashed_0016_change_page_url_path_to_text_field...                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0017_change_edit_page_permission_description...                                                                                                                                                                            
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0018_pagerevision_submitted_for_moderation_index...                                                                                                                                                                        
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0019_verbose_names_cleanup...                                                                                                                                                                                              
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0020_add_index_on_page_first_published_at...                                                                                                                                                                               
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0021_capitalizeverbose...                                                                                                                                                                                                  
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0022_add_site_name...                                                                                                                                                                                                      
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0023_alter_page_revision_on_delete_behaviour...                                                                                                                                                                            
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0024_collection...                                                                                                                                                                                                         
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0025_collection_initial_data...                                                                                                                                                                                            
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0026_group_collection_permission...                                                                                                                                                                                        
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0027_fix_collection_path_collation...                                                                                                                                                                                      
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0024_alter_page_content_type_on_delete_behaviour...                                                                                                                                                                        
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0028_merge...                                                                                                                                                                                                              
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0029_unicode_slugfield_dj19...                                                                                                                                                                                             
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0030_index_on_pagerevision_created_at...                                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0031_add_page_view_restriction_types...                                                                                                                                                                                    
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0032_add_bulk_delete_page_permission...                                                                                                                                                                                    
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0033_remove_golive_expiry_help_text...                                                                                                                                                                                     
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0034_page_live_revision...                                                                                                                                                                                                 
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0035_page_last_published_at...                                                                                                                                                                                             
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0036_populate_page_last_published_at...                                                                                                                                                                                    
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0037_set_page_owner_editable...                                                                                                                                                                                            
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0038_make_first_published_at_editable...                                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0039_collectionviewrestriction...                                                                                                                                                                                          
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying wagtailcore.0040_page_draft_title...                                                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying home.0001_initial...                                                                                                                                                                                                                   
    [1/1 (100%) standard:web1]  OK                                                                                                                                                                                                                                               
    [1/1 (100%) standard:web1]   Applying home.0002_create_homepage...                                                                                                                                                                                                           
    Traceback (most recent call last):                                                                                                                                                                                                                                           
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 89, in _execute                                                                                                                              
        return self.cursor.execute(sql, params)                                                                                                                                                                                                                                  
    psycopg2.errors.UndefinedTable: relation "wagtailcore_pagerevision" does not exist                                                                                                                                                                                           
    LINE 1: ...ge_id", "wagtailcore_pagerevision"."user_id" FROM "wagtailco...                                                                                                                                                                                                   
                                                                 ^                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                 
    The above exception was the direct cause of the following exception:                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                 
    Traceback (most recent call last):                                                                                                                                                                                                                                           
      File "C:\Users\ano\coding\manage.py", line 10, in <module>                                                                                                                                                                      
        execute_from_command_line(sys.argv)                                                                                                                                                                                                                                      
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line                                                                                                     
        utility.execute()                                                                                                                                                                                                                                                        
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\__init__.py", line 440, in execute                                                                                                                       
        self.fetch_command(subcommand).run_from_argv(self.argv)                                                                                                                                                                                                                  
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\base.py", line 402, in run_from_argv                                                                                                                     
        self.execute(*args, **cmd_options)                                                                                                                                                                                                                                       
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\base.py", line 448, in execute                                                                                                                           
        output = self.handle(*args, **options)                                                                                                                                                                                                                                   
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\management\commands\create_tenant.py", line 69, in handle                                                                                                        
        tenant = self.store_tenant(**tenant_data)                                                                                                                                                                                                                                
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\management\commands\create_tenant.py", line 106, in store_tenant                                                                                                 
        tenant = get_tenant_model().objects.create(**fields)                                                                                                                                                                                                                     
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\manager.py", line 85, in manager_method                                                                                                                        
        return getattr(self.get_queryset(), name)(*args, **kwargs)                                                                                                                                                                                                               
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\query.py", line 671, in create                                                                                                                                 
        obj.save(force_insert=True, using=self.db)                                                                                                                                                                                                                               
      File "C:\Users\ano\coding\env\lib\site-packages\wagtail_tenants\customers\models.py", line 18, in save                                                                                                                          
        super(Client, self).save(*args, **kwargs)                                                                                                                                                                                                                                
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\models.py", line 111, in save                                                                                                                                    
        self.create_schema(check_if_exists=True, verbosity=verbosity)                                                                                                                                                                                                            
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\models.py", line 198, in create_schema                                                                                                                           
        call_command('migrate_schemas',                                                                                                                                                                                                                                          
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\__init__.py", line 198, in call_command                                                                                                                  
        return command.execute(*args, **defaults)                                                                                                                                                                                                                                
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\base.py", line 448, in execute                                                                                                                           
        output = self.handle(*args, **options)                                                                                                                                                                                                                                   
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\management\commands\migrate_schemas.py", line 77, in handle                                                                                                      
        executor.run_migrations(tenants=tenants)                                                                                                                                                                                                                                 
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\migration_executors\standard.py", line 14, in run_migrations                                                                                                     
        run_migrations(self.args, self.options, self.codename, schema_name, idx=idx, count=len(tenants))                                                                                                                                                                         
      File "C:\Users\ano\coding\env\lib\site-packages\django_tenants\migration_executors\base.py", line 53, in run_migrations                                                                                                         
        MigrateCommand(stdout=stdout, stderr=stderr).execute(*args, **options)                                                                                                                                                                                                   
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\base.py", line 448, in execute                                                                                                                           
        output = self.handle(*args, **options)                                                                                                                                                                                                                                   
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\base.py", line 96, in wrapped                                                                                                                            
        res = handle_func(*args, **kwargs)                                                                                                                                                                                                                                       
      File "C:\Users\ano\coding\env\lib\site-packages\django\core\management\commands\migrate.py", line 349, in handle                                                                                                                
        post_migrate_state = executor.migrate(                                                                                                                                                                                                                                   
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\migrations\executor.py", line 135, in migrate                                                                                                                         
        state = self._migrate_all_forwards(                                                                                                                                                                                                                                      
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\migrations\executor.py", line 167, in _migrate_all_forwards                                                                                                           
        state = self.apply_migration(                                                                                                                                                                                                                                            
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\migrations\executor.py", line 252, in apply_migration                                                                                                                 
        state = migration.apply(state, schema_editor)                                                                                                                                                                                                                            
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\migrations\migration.py", line 130, in apply                                                                                                                          
        operation.database_forwards(                                                                                                                                                                                                                                             
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\migrations\operations\special.py", line 193, in database_forwards                                                                                                     
        self.code(from_state.apps, schema_editor)                                                                                                                                                                                                                                
      File "C:\Users\ano\coding\home\migrations\0002_create_homepage.py", line 14, in create_homepage                                                                                                                                 
        Page.objects.filter(id=2).delete()                                                                                                                                                                                                                                       
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\query.py", line 1131, in delete                                                                                                                                
        collector.collect(del_query)                                                                                                                                                                                                                                             
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\deletion.py", line 343, in collect                                                                                                                             
        if sub_objs:                                                                                                                                                                                                                                                             
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\query.py", line 408, in __bool__                                                                                                                               
        self._fetch_all()                                                                                                                                                                                                                                                        
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\query.py", line 1866, in _fetch_all                                                                                                                            
        self._result_cache = list(self._iterable_class(self))                                                                                                                                                                                                                    
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\query.py", line 87, in __iter__                                                                                                                                
        results = compiler.execute_sql(                                                                                                                                                                                                                                          
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\models\sql\compiler.py", line 1395, in execute_sql                                                                                                                    
        cursor.execute(sql, params)                                                                                                                                                                                                                                              
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 103, in execute                                                                                                                              
        return super().execute(sql, params)                                                                                                                                                                                                                                      
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 67, in execute                                                                                                                               
        return self._execute_with_wrappers(                                                                                                                                                                                                                                      
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 80, in _execute_with_wrappers                                                                                                                
        return executor(sql, params, many, context)                                                                                                                                                                                                                              
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 84, in _execute                                                                                                                              
        with self.db.wrap_database_errors:                                                                                                                                                                                                                                       
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\utils.py", line 91, in __exit__                                                                                                                                       
        raise dj_exc_value.with_traceback(traceback) from exc_value                                                                                                                                                                                                              
      File "C:\Users\ano\coding\env\lib\site-packages\django\db\backends\utils.py", line 89, in _execute                                                                                                                              
        return self.cursor.execute(sql, params)                                                                                                                                                                                                                                  
    django.db.utils.ProgrammingError: relation "wagtailcore_pagerevision" does not exist                                                                                                                                                                                         
    LINE 1: ...ge_id", "wagtailcore_pagerevision"."user_id" FROM "wagtailco...                                                                                                                                                                                                   
                                                                 ^                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                 
                                                                  
    
    bug 
    opened by mschiegg 2
  • the default schema has no domains associated with

    the default schema has no domains associated with

    currently, if you follow the documentations tep by step, the public schema has no doamin associated with, therefore it is not visitable in the development stage (localhost), it would be good if we add a new management command for that

    opened by hazho 1
  • Multi-site per tenant should be set by the tenants' superadmins, not by developers

    Multi-site per tenant should be set by the tenants' superadmins, not by developers

    currently, tenant superuser can create another site for themselves, but the tenant middleware is preventing them from visiting it, because there is no tenant-record for the newly created site domain, even if it is a sub-domain..! it would be great if we automate the tenant-record registering for the multi-sites per tenant/ without the need to create a new schema..!

    opened by hazho 2
Owner
Hi there, how are you?
<bbr>
Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project

Django URL Shortener Django URL Shortener is a Django app to to include URL Shortening feature in your Django Project Install this package to your Dja

Rishav Sinha 4 Nov 18, 2021
Django Persistent Filters is a Python package which provide a django middleware that take care to persist the querystring in the browser cookies.

Django Persistent Filters Django Persistent Filters is a Python package which provide a django middleware that take care to persist the querystring in

Lorenzo Prodon 2 Aug 5, 2022
Django-shared-app-isolated-databases-example - Django - Shared App & Isolated Databases

Django - Shared App & Isolated Databases An app that demonstrates the implementa

Ajai Danial 5 Jun 27, 2022
Django project starter on steroids: quickly create a Django app AND generate source code for data models + REST/GraphQL APIs (the generated code is auto-linted and has 100% test coverage).

Create Django App ?? We're a Django project starter on steroids! One-line command to create a Django app with all the dependencies auto-installed AND

imagine.ai 68 Oct 19, 2022
Django-Audiofield is a simple app that allows Audio files upload, management and conversion to different audio format (mp3, wav & ogg), which also makes it easy to play audio files into your Django application.

Django-Audiofield Description: Django Audio Management Tools Maintainer: Areski Contributors: list of contributors Django-Audiofield is a simple app t

Areski Belaid 167 Nov 10, 2022
A Django app to initialize Sentry client for your Django applications

Dj_sentry This Django application intialize Sentry SDK to your Django application. How to install You can install this packaging by using: pip install

Gandi 1 Dec 9, 2021
This a Django TODO app project and practiced how to deploy and publish the project to Heroku

ToDo App Demo | Project Table of Contents Overview Built With Features How to use Acknowledgements Contact Overview Built With HTML CSS JS Django How

Cetin OGUT 1 Nov 19, 2021
A reusable Django app that configures your project for deployment

django-simple-deploy This app gives you a management command that configures your project for an initial deployment. It targets Heroku at the moment,

Eric Matthes 205 Dec 26, 2022
A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a unique id.

Django-URL-Shortener A beginner django project and also my first Django project which involves shortening of a longer URL into a short one using a uni

Rohini Rao 3 Aug 8, 2021
pytest-django allows you to test your Django project/applications with the pytest testing tool.

pytest-django allows you to test your Django project/applications with the pytest testing tool.

pytest-dev 1.1k Dec 14, 2022