=====
authentication(user api),CMS
=====
BaseCode of Space-o Technology 
Detailed documentation is in the "docs" directory.

Quick start

-----------

1. include in  settings.py :

INSTALLED_APPS = [
    'jazzmin', 
    .
    .
    .                         
    'CMS',                               
    'authentication' ,                    
    'debug_toolbar',                    
    'tinymce',                           
    'rest_framework',                    
    'drf_spectacular',
    'rest_framework_simplejwt',
]

#add middel ware
MIDDLEWARE = [
    "debug_toolbar.middleware.DebugToolbarMiddleware"
    ...
    ...
    ...
    'authentication.custom_middleware.simple_middleware',
    
]



#for password hashing
PASSWORD_HASHERS = [
    'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
    'django.contrib.auth.hashers.PBKDF2PasswordHasher',
    'django.contrib.auth.hashers.Argon2PasswordHasher',
]
#add language
LANGUAGE_CODE = 'en-us'
LANGUAGES = [
    ('en', ('English')),
    ('hi', ('hindi')),
]
TIME_ZONE = 'Asia/Kolkata'




#rest framework
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}


#Spectacular
SPECTACULAR_SETTINGS = {
    'PREPROCESSING_HOOKS': ["Custom.url_remover.preprocessing_filter_spec"]
}

#add custom user 
AUTH_USER_MODEL = "authentication.User"




#add admin pannel jazzmin settings
JAZZMIN_SETTINGS = {
    "language_chooser": True,
    "site_title": "Django",
    "show_ui_builder" : True,
    "copyright": "Space-O",
    "navigation_expanded": False,   
    "related_modal_active": False,
    "site_brand": "BaseCode",
    "welcome_sign": "welcome to www.site.com",
    "icons": {
        "auth": "fas fa-users-cog",
        "authentication.user": "fas fa-user",
        "auth.Group": "fas fa-users",
        "cms.Cms":"fas fa-regular fa-keyboard",
        "authentication.setting":"fas fa-edit",
        "authentication.mobile":"fa fa-mobile"        
    },
    
}
JAZZMIN_UI_TWEAKS = {
    "theme": 'litera',
}



2. Include all this in your project urls.py like this::

urlpatterns = [
    path('__debug__/',include('debug_toolbar.urls')),
    path('api-auth/', include('rest_framework.urls')),
    path('', include('authentication.urls')),
    path('content-pages/', include('CMS.urls')),
    path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
    path('schema/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
    path('api/schema/swagger-ui/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
]
#reset password for admin pannel
urlpatterns += [
    path(                                               
        'account/reset/',
        auth_views.PasswordResetView.as_view(),
        name='admin_password_reset',
    ),  
]
#fir language in admin pannel
urlpatterns += [path('i18n/', include('django.conf.urls.i18n')),]
urlpatterns += i18n_patterns(path('admin/', admin.site.urls))



3. Run ``python manage.py makemigrations authentication`` 
  after Run python manage.py migrate
to create the authentication models.

4. Run ``python manage.py makemigrations CMS`` 
  after Run python manage.py migrate
to create the authentication models.

4. Start the development server and visit http://127.0.0.1:8000/admin/
 

5. Visit http://127.0.0.1:8000/api/schema/swagger-ui/ to user api

6. customization-
how to import module
example-
from authentication.view import loginAPIView
now you can simplay customiz it 

7. we have three module authentication,BaseCode,CMS and custom
authentication- having all api and models
CMS-having content api and models
custom-having all validation,response and pagination classes
BaseCode- having only one module settings.py all setting in this

8. (OPTIONAL)
add this script in your base.html of admin panel
<script>
    function myFunction(id, elem)
    {  
        
        url = 'http://172.16.17.30:8000/verified/inactive/'+id
        $.ajax({
            url: url,
            success: function(data) 
            {   console.log(id)
                elem.textContent = "Inactive"
                elem.className = "btn btn-danger btn-sm"
            },
            error:function(a,b,c)
            {
                console.log(c);
            }   
        }); 
    }
    function myFunctions(id, elem)
    {  
        url = 'http://172.16.17.30:8000/verified/active/'+id
        $.ajax({
            url: url,
            success: function(data) 
            {   console.log(id, "bha")
            elem.textContent = "active"
            elem.className = "btn btn-primary btn-sm"

        },
        error:function(a,b,c)
        {
            console.log(c);
        }   
    });
    }
    function activeInactive(id){
        var elem = document.getElementById('myButton'+id)
        if(elem.textContent == 'active'){
            myFunction(id, elem)
        }else{
            myFunctions(id, elem)
        }
    }

</script>

8. if you have any query please contact 
    @deppak.spaceo@gmail.com

