development branch created to preserve working deploy project
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# Git
|
||||
.git
|
||||
.gitignore
|
||||
|
||||
# Docker
|
||||
.dockerignore
|
||||
docker-compose.yml
|
||||
docker-compose.dev.yml
|
||||
docker-compose-deploy.yml
|
||||
docker-compose with volume.yml
|
||||
dockerfile
|
||||
*.tar
|
||||
|
||||
# Python
|
||||
.venv
|
||||
__pycache__
|
||||
*.pyc
|
||||
|
||||
# Database
|
||||
db.sqlite3
|
||||
*.bak
|
||||
|
||||
# IDE
|
||||
.idea
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
production.env
|
||||
|
||||
# Other
|
||||
gemini.cmd - Shortcut.lnk
|
||||
@@ -36,6 +36,7 @@ MINIO_ENDPOINT="localhost:9000"
|
||||
MINIO_ACCESS_KEY="kikimor"
|
||||
MINIO_SECRET_KEY="shushunka1"
|
||||
MINIO_BUCKET_NAME="damages"
|
||||
AWS_S3_CUSTOM_DOMAIN='localhost:9000' # For browser acce
|
||||
AWS_S3_URL_PROTOCOL='http'
|
||||
MINIO_SERVER_URL="http://localhost:9000"
|
||||
#MINIO_STATIC_BUCKET_NAME=depot-static
|
||||
#AWS_S3_CUSTOM_DOMAIN='localhost:9000' # For browser acce
|
||||
#AWS_S3_URL_PROTOCOL='http'
|
||||
#MINIO_SERVER_URL="http://localhost:9000"
|
||||
Generated
+20
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="dataSourceStorageLocal" created-in="PY-251.26927.74">
|
||||
<data-source name="depot@localhost" uuid="2186be09-0cb1-4210-bad0-d279af5e6702">
|
||||
<database-info product="PostgreSQL" version="17.4" jdbc-version="4.2" driver-name="PostgreSQL JDBC Driver" driver-version="42.7.3" dbms="POSTGRES" exact-version="17.4" exact-driver-version="42.7">
|
||||
<identifier-quote-string>"</identifier-quote-string>
|
||||
</database-info>
|
||||
<case-sensitivity plain-identifiers="lower" quoted-identifiers="exact" />
|
||||
<secret-storage>master_key</secret-storage>
|
||||
<user-name>postgres</user-name>
|
||||
<schema-mapping>
|
||||
<introspection-scope>
|
||||
<node kind="database" qname="@">
|
||||
<node kind="schema" qname="@" />
|
||||
</node>
|
||||
</introspection-scope>
|
||||
</schema-mapping>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
Generated
+12
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="depot@localhost" uuid="2186be09-0cb1-4210-bad0-d279af5e6702">
|
||||
<driver-ref>postgresql</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:postgresql://localhost:5432/depot</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
+6515
File diff suppressed because it is too large
Load Diff
Generated
+1
@@ -0,0 +1 @@
|
||||
#n:depot
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#n:information_schema
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#n:pg_catalog
|
||||
!<md> [null, 0, null, null, -2147483648, -2147483648]
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
#n:public
|
||||
!<md> [1114, 0, null, null, -2147483648, -2147483648]
|
||||
Generated
+64
-58
@@ -5,39 +5,38 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="7410a44d-51b9-408b-85ad-4fa46776b372" name="Changes" comment="commit unversioned files ;)">
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0002_clientpermission_codename_clientpermission_name.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0003_remove_depotuser_is_company_admin_and_more.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0004_employeepermission_depotuser_employee_permissions.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0005_alter_depotuser_managers_alter_depotuser_user_type.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0006_alter_clientpermission_options.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/accounts/migrations/0007_auto_20250725_1920.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/migrations/0002_rename_bookingmodel_booking.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/migrations/0003_booking_container_expedited_count.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/migrations/0004_booking_status.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/migrations/0005_alter_booking_vehicles_left.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/booking/views/common.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/common/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/common/migrations/0002_alter_companymodel_short_name_and_more.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/common/migrations/0003_auto_20250725_1920.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/common/migrations/0005_companymodel_active_containerkindmodel_active_and_more.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0002_rename_receive_vehicles_container_receive_vehicle.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0003_alter_container_booking.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0004_rename_line_id_container_line.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0005_alter_container_expedited_by_and_more.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0006_containerphotos.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/migrations/0007_container_preinfo.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/damages_api/__init__.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/payments/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/payments/migrations/0002_additionalfees_containertariffperiod.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/payments/migrations/0003_auto_20250725_1920.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/payments/migrations/__init__.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/preinfo/migrations/0001_initial.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/preinfo/migrations/0002_alter_preinfomodel_deleted_by_and_more.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/preinfo/migrations/0003_rename_preinfomodel_preinfo.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/containers/views/client_views.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/minio_backend/__init__.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/minio_backend/storage.py" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/production.env" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/static/images/test.jpg" afterDir="false" />
|
||||
<change afterPath="$PROJECT_DIR$/templates/common/allowed-vehicles.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.env" beforeDir="false" afterPath="$PROJECT_DIR$/.env" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/DepoT/settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/DepoT/settings.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/accounts/admin.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/admin.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/accounts/backends.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/backends.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/accounts/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/urls.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/accounts/views.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/booking/views/client_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/views/client_views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/common/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/urls.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/common/views/client_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/views/client_views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/common/views/shared_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/views/shared_views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/containers/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/containers/urls.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/docker-compose-deploy.yml" beforeDir="false" afterPath="$PROJECT_DIR$/docker-compose-deploy.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/docker-compose.dev.yml" beforeDir="false" afterPath="$PROJECT_DIR$/docker-compose.dev.yml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/dockerfile" beforeDir="false" afterPath="$PROJECT_DIR$/dockerfile" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/preinfo/views/client_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/preinfo/views/client_views.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/requirements.txt" beforeDir="false" afterPath="$PROJECT_DIR$/requirements.txt" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/static/styles/sidebar.css" beforeDir="false" afterPath="$PROJECT_DIR$/static/styles/sidebar.css" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/client-dashboard-content.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/client-dashboard-content.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/client-sidebar.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/client-sidebar.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/client/booking-list.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/client/booking-list.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/client/line-list.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/client/line-list.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/client/preinfo-list.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/client/preinfo-list.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/employee-dashboard-content.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/employee-dashboard-content.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/employee-sidebar.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/employee-sidebar.html" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/templates/landing-page.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/landing-page.html" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -69,39 +68,39 @@
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent">{
|
||||
"keyToString": {
|
||||
"DefaultHtmlFileTemplate": "HTML File",
|
||||
"Django Server.DepoT.executor": "Debug",
|
||||
"RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"RunOnceActivity.pycharm.django.structure.promotion.once.per.project": "true",
|
||||
"django.template.preview.state": "SHOW_EDITOR_AND_PREVIEW",
|
||||
"git-widget-placeholder": "master",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"last_opened_file_path": "C:/dev_projects/python/Django/DepoT",
|
||||
"list.type.of.created.stylesheet": "CSS",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"DefaultHtmlFileTemplate": "HTML File",
|
||||
"Django Server.DepoT.executor": "Debug",
|
||||
"RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
"RunOnceActivity.pycharm.django.structure.promotion.once.per.project": "true",
|
||||
"django.template.preview.state": "SHOW_EDITOR_AND_PREVIEW",
|
||||
"git-widget-placeholder": "master",
|
||||
"ignore.virus.scanning.warn.message": "true",
|
||||
"last_opened_file_path": "C:/dev_projects/python/Django/DepoT",
|
||||
"list.type.of.created.stylesheet": "CSS",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "npm",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"DatabaseDriversLRU": [
|
||||
"postgresql"
|
||||
"keyToStringList": {
|
||||
"DatabaseDriversLRU": [
|
||||
"postgresql"
|
||||
]
|
||||
}
|
||||
}</component>
|
||||
}]]></component>
|
||||
<component name="RecentsManager">
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="C:\dev_projects\python\Django\DepoT" />
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\minio_backend" />
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\templates\employee" />
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\templates\client" />
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\templates" />
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\templates\registration" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="C:\dev_projects\python\Django\DepoT" />
|
||||
@@ -161,7 +160,9 @@
|
||||
<workItem from="1753175068058" duration="4635000" />
|
||||
<workItem from="1753179863298" duration="8357000" />
|
||||
<workItem from="1753197869497" duration="98156000" />
|
||||
<workItem from="1753637487803" duration="47474000" />
|
||||
<workItem from="1753637487803" duration="71422000" />
|
||||
<workItem from="1754046655407" duration="19056000" />
|
||||
<workItem from="1754068089083" duration="32822000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Add IntelliJ IDEA project configuration files This commit adds IntelliJ IDEA-specific configuration files for the project, including module setup, version control integration, inspection profiles, and workspace settings. These files facilitate development environment configuration for contributors using IntelliJ IDEA.">
|
||||
<option name="closed" value="true" />
|
||||
@@ -283,7 +284,7 @@
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/common/views/client_views.py</url>
|
||||
<line>118</line>
|
||||
<line>131</line>
|
||||
<option name="timeStamp" value="61" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
@@ -296,6 +297,11 @@
|
||||
<line>56</line>
|
||||
<option name="timeStamp" value="99" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/DepoT/settings.py</url>
|
||||
<line>12</line>
|
||||
<option name="timeStamp" value="100" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="javascript">
|
||||
<url>file://$PROJECT_DIR$/static/js/container_validation.js</url>
|
||||
<line>4</line>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+62
-3
@@ -13,6 +13,7 @@ https://docs.djangoproject.com/en/5.2/ref/settings/
|
||||
from pathlib import Path
|
||||
import os
|
||||
import environ
|
||||
from minio_backend.storage import MinioStaticStorage, MinioMediaStorage
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
|
||||
@@ -21,9 +22,13 @@ environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
|
||||
|
||||
SECRET_KEY = "django-insecure-g%187p84o9^rr)3#9@r3n^o2v1i%@6=+puxm7hlodg+kbsk%n#"
|
||||
|
||||
DEBUG = True
|
||||
DEBUG = False
|
||||
|
||||
ALLOWED_HOSTS = ['192.168.24.43', '127.0.0.1', 'localhost', ]
|
||||
ALLOWED_HOSTS = ['192.168.24.43', '127.0.0.1', 'localhost', 'depot.kikimor.com', ]
|
||||
|
||||
CSRF_TRUSTED_ORIGINS = ['https://depot.kikimor.com']
|
||||
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|
||||
USE_X_FORWARDED_HOST = True
|
||||
|
||||
|
||||
PROJECT_APPS = [
|
||||
@@ -45,6 +50,8 @@ INSTALLED_APPS = [
|
||||
"django.contrib.staticfiles",
|
||||
"rest_framework",
|
||||
"damages_api",
|
||||
"django_minio_backend",
|
||||
"minio_backend",
|
||||
] + PROJECT_APPS
|
||||
|
||||
MIDDLEWARE = [
|
||||
@@ -145,6 +152,8 @@ STATICFILES_DIRS = [
|
||||
BASE_DIR / 'static'
|
||||
]
|
||||
|
||||
STATIC_ROOT = BASE_DIR / 'staticfiles'
|
||||
|
||||
TEMP_FILE_FOLDER = "/tmp/damages_photos"
|
||||
# Default primary key field type
|
||||
# https://docs.djangoproject.com/en/5.2/ref/settings/#default-auto-field
|
||||
@@ -181,8 +190,58 @@ if all([ADMIN_USER_NAME, ADMIN_USER_EMAIL]):
|
||||
MINIO_ENDPOINT = env('MINIO_ENDPOINT')
|
||||
AWS_S3_CUSTOM_DOMAIN = env('AWS_S3_CUSTOM_DOMAIN')
|
||||
MINIO_SERVER_URL = env('MINIO_SERVER_URL')
|
||||
MINIO_EXTERNAL_ENDPOINT = AWS_S3_CUSTOM_DOMAIN
|
||||
MINIO_EXTERNAL_ENDPOINT_USE_HTTPS = True
|
||||
AWS_S3_URL_PROTOCOL = env('AWS_S3_URL_PROTOCOL')
|
||||
MINIO_ACCESS_KEY = env('MINIO_ACCESS_KEY')
|
||||
MINIO_SECRET_KEY = env('MINIO_SECRET_KEY')
|
||||
MINIO_BUCKET_NAME = env('MINIO_BUCKET_NAME')
|
||||
MINIO_SECURE = False # Set to True if using HTTPS
|
||||
MINIO_SECURE = False # Set to True if using HTTPS
|
||||
MINIO_USE_HTTPS = False # Add this line
|
||||
MINIO_STATIC_BUCKET = env('MINIO_STATIC_BUCKET_NAME')
|
||||
|
||||
# django-minio-backend settings
|
||||
MINIO_STORAGE_ENDPOINT = AWS_S3_CUSTOM_DOMAIN
|
||||
MINIO_STORAGE_PORT = 443 if MINIO_SECURE else 80 # Add this line
|
||||
MINIO_STORAGE_ACCESS_KEY = env('MINIO_ACCESS_KEY')
|
||||
MINIO_STORAGE_SECRET_KEY = env('MINIO_SECRET_KEY')
|
||||
MINIO_STORAGE_USE_HTTPS = True
|
||||
MINIO_STORAGE_MEDIA_BUCKET_NAME = env('MINIO_BUCKET_NAME') # For user-uploaded media
|
||||
MINIO_STORAGE_STATIC_BUCKET_NAME = env('MINIO_STATIC_BUCKET_NAME') # For static files
|
||||
MINIO_STORAGE_AUTO_CREATE_MEDIA_BUCKET = True
|
||||
MINIO_STORAGE_AUTO_CREATE_STATIC_BUCKET = True
|
||||
MINIO_STORAGE_AUTO_CREATE_POLICY = True
|
||||
MINIO_STORAGE_MEDIA_BASE_URL = f'{AWS_S3_URL_PROTOCOL}://{AWS_S3_CUSTOM_DOMAIN}/{env("MINIO_BUCKET_NAME")}/'
|
||||
MINIO_STORAGE_STATIC_BASE_URL = f'{AWS_S3_URL_PROTOCOL}://{AWS_S3_CUSTOM_DOMAIN}/{env("MINIO_STATIC_BUCKET_NAME")}/'
|
||||
|
||||
MINIO_PRIVATE_BUCKETS = [] # If you have any private buckets
|
||||
|
||||
MINIO_PUBLIC_BUCKETS = [
|
||||
env('MINIO_BUCKET_NAME'), # Just the bucket name as a string
|
||||
env('MINIO_STATIC_BUCKET_NAME') # Just the bucket name as a string
|
||||
]
|
||||
|
||||
MINIO_POLICY_ACTIONS = {
|
||||
'GET': ['get_object'],
|
||||
'PUT': ['put_object'],
|
||||
'DELETE': ['delete_object'],
|
||||
'LIST': ['list_multipart_uploads',
|
||||
'list_parts',
|
||||
'list_objects'],
|
||||
}
|
||||
|
||||
STORAGES = {
|
||||
"default": {
|
||||
"BACKEND": "minio_backend.storage.MinioMediaStorage",
|
||||
},
|
||||
"staticfiles": {
|
||||
"BACKEND": "minio_backend.storage.MinioStaticStorage",
|
||||
},
|
||||
}
|
||||
|
||||
DEFAULT_FILE_STORAGE = 'minio_backend.storage.MinioMediaStorage'
|
||||
STATICFILES_STORAGE = 'minio_backend.storage.MinioStaticStorage'
|
||||
STATIC_URL = f'{AWS_S3_URL_PROTOCOL}://{AWS_S3_CUSTOM_DOMAIN}/{env("MINIO_STATIC_BUCKET_NAME")}/'
|
||||
STATICFILES_LOCATION = 'static'
|
||||
MEDIA_ROOT = BASE_DIR / 'mediafiles'
|
||||
MEDIA_URL = f'{AWS_S3_URL_PROTOCOL}://{AWS_S3_CUSTOM_DOMAIN}/{env("MINIO_BUCKET_NAME")}/'
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
FROM minio/mc:latest
|
||||
RUN test -f init_minio_buckets.sh && echo "init_minio_buckets.sh found in build context!" || (echo "init_minio_buckets.sh NOT found in build context!" && exit 1)
|
||||
COPY init_minio_buckets.sh /usr/local/bin/init_minio_buckets.sh
|
||||
RUN chmod +x /usr/local/bin/init_minio_buckets.sh
|
||||
ENTRYPOINT ["/usr/local/bin/init_minio_buckets.sh"]
|
||||
@@ -0,0 +1,5 @@
|
||||
FROM alpine/git
|
||||
WORKDIR /build_context
|
||||
COPY . .
|
||||
RUN ls -la
|
||||
CMD ["echo", "Build context listed."]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -5,7 +5,6 @@ from .models import DepotUser
|
||||
|
||||
@admin.register(DepotUser)
|
||||
class DepotUserAdmin(UserAdmin):
|
||||
# Add your custom fields to the fieldsets
|
||||
fieldsets = UserAdmin.fieldsets + (
|
||||
('Additional Info', {'fields': (
|
||||
'phone_number',
|
||||
@@ -16,12 +15,10 @@ class DepotUserAdmin(UserAdmin):
|
||||
)}),
|
||||
)
|
||||
|
||||
# Add fields to display in list view
|
||||
list_display = ('username', 'email', 'user_type', 'company', 'line', 'is_active', 'is_staff', 'is_superuser')
|
||||
search_fields = ('username', 'email')
|
||||
list_filter = ('user_type', 'is_active', 'is_staff', 'is_superuser')
|
||||
|
||||
# Add fields to the add form
|
||||
add_fieldsets = UserAdmin.add_fieldsets + (
|
||||
('Additional Info', {'fields': (
|
||||
'email',
|
||||
|
||||
@@ -11,6 +11,5 @@ class CompanyUserBackend(ModelBackend):
|
||||
|
||||
perms = super().get_user_permissions(user_obj, obj)
|
||||
if user_obj.company and user_obj.company.is_client:
|
||||
# Filter permissions based on client company context
|
||||
perms = {p for p in perms if p.startswith('accounts.client_')}
|
||||
return perms
|
||||
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+6
-2
@@ -1,14 +1,18 @@
|
||||
from django.contrib.auth.views import LogoutView
|
||||
from django.urls import path, include
|
||||
from django.contrib.auth import views as auth_views
|
||||
from accounts import views
|
||||
from accounts.views import CustomPasswordChangeView
|
||||
|
||||
urlpatterns = [
|
||||
path('', include([
|
||||
path('', views.UserListView.as_view(), name='user_list'),
|
||||
path('register/', views.RegisterView.as_view(), name='user_register'),
|
||||
path('login/', views.DepotLoginView.as_view(), name='login'),
|
||||
path('relogin/', auth_views.logout_then_login, name='relogin'),
|
||||
path('change-password/', views.UserChangePasswordView.as_view(), name='change_password'),
|
||||
# path('relogin/', auth_views.logout_then_login, name='relogin'),
|
||||
path('relogin/', LogoutView.as_view(next_page='login'), name='relogin'),
|
||||
path('change-password/', CustomPasswordChangeView.as_view(), name='change_password'),
|
||||
|
||||
path('<int:pk>/update/', views.UserUpdateView.as_view(), name='user_update'),
|
||||
path('<int:pk>/active/', views.UserActiveView.as_view(), name='user_active'),
|
||||
])),
|
||||
|
||||
+6
-4
@@ -1,5 +1,5 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.views import LoginView
|
||||
from django.contrib.auth.views import LoginView, PasswordChangeView
|
||||
from django.http import HttpResponseForbidden, JsonResponse
|
||||
from django.shortcuts import render
|
||||
from django.urls import reverse_lazy
|
||||
@@ -192,7 +192,9 @@ class UserActiveView(LoginRequiredMixin, View):
|
||||
return JsonResponse({'success': True, 'is_active': target_user.is_active})
|
||||
|
||||
|
||||
class UserChangePasswordView(LoginRequiredMixin, View):
|
||||
class CustomPasswordChangeView(PasswordChangeView):
|
||||
template_name = 'registration/change_password.html'
|
||||
form_class = UserChangePasswordForm
|
||||
success_url = reverse_lazy('home')
|
||||
|
||||
def get_success_url(self):
|
||||
next_url = self.request.GET.get('next') or self.request.POST.get('next')
|
||||
return next_url or reverse_lazy('dashboard')
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -26,8 +26,14 @@ class ClientBookingView(LoginRequiredMixin, UserPassesTestMixin, ListView):
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()
|
||||
user = self.request.user
|
||||
result = filter_queryset_by_user(queryset, user)
|
||||
return result
|
||||
queryset = filter_queryset_by_user(queryset, user)
|
||||
|
||||
data_filter = self.request.GET.get('filter')
|
||||
if data_filter != 'all':
|
||||
queryset = queryset.filter(status='active')
|
||||
queryset = queryset.order_by('-created_on')
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
class CreateBookingView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormMixin, CreateView):
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user