fixed some errors

deploy_branch
Kiril Hadjiev 7 months ago
parent f16ea7c748
commit 16c3c60a6f

@ -5,18 +5,12 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="7410a44d-51b9-408b-85ad-4fa46776b372" name="Changes" comment="commit unversioned files ;)"> <list default="true" id="7410a44d-51b9-408b-85ad-4fa46776b372" name="Changes" comment="commit unversioned files ;)">
<change afterPath="$PROJECT_DIR$/common/fields.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/DepoT.iml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/DepoT.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/dataSources.local.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/dataSources.local.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/booking/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/models.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/booking/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/models.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/booking/tests.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/tests.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/booking/tests.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/tests.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$/booking/views/client_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/views/client_views.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/common/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/models.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/containers/tests.py" beforeDir="false" afterPath="$PROJECT_DIR$/containers/tests.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/containers/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/containers/models.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/readme.md" beforeDir="false" afterPath="$PROJECT_DIR$/readme.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/payments/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/payments/models.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/preinfo/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/preinfo/models.py" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -53,10 +47,12 @@
"ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true", "ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true",
"DefaultHtmlFileTemplate": "HTML File", "DefaultHtmlFileTemplate": "HTML File",
"Django Server.DepoT.executor": "Run", "Django Server.DepoT.executor": "Run",
"Django tests.Test: booking.tests.BookingViewsTestCase.executor": "Debug", "Django tests.Test: booking.tests.BookingViewsTestCase.executor": "Run",
"Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view.executor": "Debug", "Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view.executor": "Debug",
"Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK.executor": "Profiler", "Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK.executor": "Profiler",
"Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden.executor": "Debug", "Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden.executor": "Debug",
"Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_update_view.executor": "Debug",
"Django tests.Test: preinfo.test_views.PreinfoViewsTest.executor": "Run",
"RunOnceActivity.OpenDjangoStructureViewOnStart": "true", "RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true", "RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true", "RunOnceActivity.git.unshallow": "true",
@ -64,7 +60,7 @@
"django.template.preview.state": "SHOW_EDITOR", "django.template.preview.state": "SHOW_EDITOR",
"git-widget-placeholder": "deploy__branch", "git-widget-placeholder": "deploy__branch",
"ignore.virus.scanning.warn.message": "true", "ignore.virus.scanning.warn.message": "true",
"last_opened_file_path": "C:/dev_projects/python/Django/DepoT/DepoT/settings", "last_opened_file_path": "C:/dev_projects/python/django/depot_django/containers",
"list.type.of.created.stylesheet": "CSS", "list.type.of.created.stylesheet": "CSS",
"node.js.detected.package.eslint": "true", "node.js.detected.package.eslint": "true",
"node.js.detected.package.tslint": "true", "node.js.detected.package.tslint": "true",
@ -82,11 +78,11 @@
}]]></component> }]]></component>
<component name="RecentsManager"> <component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="C:\dev_projects\python\django\depot_django\containers" />
<recent name="C:\dev_projects\python\Django\DepoT\DepoT\settings" /> <recent name="C:\dev_projects\python\Django\DepoT\DepoT\settings" />
<recent name="C:\dev_projects\python\Django\DepoT" /> <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\minio_backend" />
<recent name="C:\dev_projects\python\Django\DepoT\templates\employee" /> <recent name="C:\dev_projects\python\Django\DepoT\templates\employee" />
<recent name="C:\dev_projects\python\Django\DepoT\templates\client" />
</key> </key>
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="C:\dev_projects\python\Django\DepoT\images" /> <recent name="C:\dev_projects\python\Django\DepoT\images" />
@ -96,7 +92,7 @@
<recent name="C:\dev_projects\python\Django\DepoT\templates\employee" /> <recent name="C:\dev_projects\python\Django\DepoT\templates\employee" />
</key> </key>
</component> </component>
<component name="RunManager" selected="Django Server.DepoT"> <component name="RunManager" selected="Django tests.Test: preinfo.test_views.PreinfoViewsTest">
<configuration name="Test: booking.tests.BookingViewsTestCase" type="DjangoTestsConfigurationType" temporary="true"> <configuration name="Test: booking.tests.BookingViewsTestCase" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" /> <module name="DepoT" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
@ -120,7 +116,28 @@
<option name="OPTIONS" value="" /> <option name="OPTIONS" value="" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view" type="DjangoTestsConfigurationType" temporary="true"> <configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<envs>
<env name="PYTHONUNBUFFERED" value="1" />
</envs>
<option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" />
<option name="IS_MODULE_SDK" value="true" />
<option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" />
<option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" />
<method v="2" />
</configuration>
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" /> <module name="DepoT" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
@ -135,20 +152,21 @@
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_list_view" /> <option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" />
<option name="SETTINGS_FILE" value="" /> <option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" /> <option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" /> <option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" /> <option name="OPTIONS" value="" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" type="DjangoTestsConfigurationType" temporary="true"> <configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_update_view" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" /> <module name="DepoT" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" /> <env name="PYTHONUNBUFFERED" value="1" />
<env name="DJANGO_SETTINGS_MODULE" value="DepoT.settings.development" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="WORKING_DIRECTORY" value="" /> <option name="WORKING_DIRECTORY" value="" />
@ -156,14 +174,14 @@
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" /> <option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_update_view" />
<option name="SETTINGS_FILE" value="" /> <option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" /> <option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" /> <option name="USE_OPTIONS" value="false" />
<option name="OPTIONS" value="" /> <option name="OPTIONS" value="" />
<method v="2" /> <method v="2" />
</configuration> </configuration>
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" type="DjangoTestsConfigurationType" temporary="true"> <configuration name="Test: preinfo.test_views.PreinfoViewsTest" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" /> <module name="DepoT" />
<option name="ENV_FILES" value="" /> <option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
@ -178,7 +196,7 @@
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" /> <EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
<option name="TARGET" value="booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" /> <option name="TARGET" value="preinfo.test_views.PreinfoViewsTest" />
<option name="SETTINGS_FILE" value="" /> <option name="SETTINGS_FILE" value="" />
<option name="CUSTOM_SETTINGS" value="false" /> <option name="CUSTOM_SETTINGS" value="false" />
<option name="USE_OPTIONS" value="false" /> <option name="USE_OPTIONS" value="false" />
@ -213,17 +231,19 @@
</configuration> </configuration>
<list> <list>
<item itemvalue="Django Server.DepoT" /> <item itemvalue="Django Server.DepoT" />
<item itemvalue="Django tests.Test: preinfo.test_views.PreinfoViewsTest" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_update_view" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase" />
</list> </list>
<recent_temporary> <recent_temporary>
<list> <list>
<item itemvalue="Django tests.Test: preinfo.test_views.PreinfoViewsTest" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_update_view" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" /> <item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden" />
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view" />
</list> </list>
</recent_temporary> </recent_temporary>
</component> </component>
@ -253,7 +273,7 @@
<workItem from="1753637487803" duration="71422000" /> <workItem from="1753637487803" duration="71422000" />
<workItem from="1754046655407" duration="19056000" /> <workItem from="1754046655407" duration="19056000" />
<workItem from="1754068089083" duration="32822000" /> <workItem from="1754068089083" duration="32822000" />
<workItem from="1754408990802" duration="7521000" /> <workItem from="1754408990802" duration="13021000" />
</task> </task>
<task id="LOCAL-00001" summary="Add IntelliJ IDEA project configuration files&#10;&#10;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."> <task id="LOCAL-00001" summary="Add IntelliJ IDEA project configuration files&#10;&#10;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" /> <option name="closed" value="true" />
@ -374,19 +394,34 @@
<option name="timeStamp" value="55" /> <option name="timeStamp" value="55" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/tests.py</url> <url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>97</line> <line>50</line>
<option name="timeStamp" value="127" /> <option name="timeStamp" value="130" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>94</line>
<option name="timeStamp" value="138" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>101</line>
<option name="timeStamp" value="139" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>107</line>
<option name="timeStamp" value="140" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/tests.py</url> <url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>90</line> <line>111</line>
<option name="timeStamp" value="128" /> <option name="timeStamp" value="141" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line"> <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/tests.py</url> <url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
<line>11</line> <line>117</line>
<option name="timeStamp" value="129" /> <option name="timeStamp" value="142" />
</line-breakpoint> </line-breakpoint>
<line-breakpoint enabled="true" type="javascript"> <line-breakpoint enabled="true" type="javascript">
<url>file://$PROJECT_DIR$/static/js/container_validation.js</url> <url>file://$PROJECT_DIR$/static/js/container_validation.js</url>
@ -405,7 +440,9 @@
</component> </component>
<component name="com.intellij.coverage.CoverageDataManagerImpl"> <component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view__user_no_rights__expect_forbidden.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden Coverage Results" MODIFIED="1754372596969" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" /> <SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view__user_no_rights__expect_forbidden.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_no_rights__expect_forbidden Coverage Results" MODIFIED="1754372596969" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/depot_django$Test__booking_tests_BookingViewsTestCase.coverage" NAME="Test: booking.tests.BookingViewsTestCase Coverage Results" MODIFIED="1754414003823" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" /> <SUITE FILE_PATH="coverage/depot_django$Test__booking_tests_BookingViewsTestCase_test_booking_update_view.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_update_view Coverage Results" MODIFIED="1754420837053" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/depot_django$Test__booking_tests_BookingViewsTestCase.coverage" NAME="Test: booking.tests.BookingViewsTestCase Coverage Results" MODIFIED="1754420864513" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/depot_django$Test__preinfo_test_views_PreinfoViewsTest.coverage" NAME="Test: preinfo.test_views.PreinfoViewsTest Coverage Results" MODIFIED="1754425958620" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view Coverage Results" MODIFIED="1754333059580" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" /> <SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view Coverage Results" MODIFIED="1754333059580" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase.coverage" NAME="Test: booking.tests.BookingViewsTestCase Coverage Results" MODIFIED="1754386070100" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" /> <SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase.coverage" NAME="Test: booking.tests.BookingViewsTestCase Coverage Results" MODIFIED="1754386070100" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />
<SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view__user_all_rights__expect_OK.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK Coverage Results" MODIFIED="1754372722226" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" /> <SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase_test_booking_list_view__user_all_rights__expect_OK.coverage" NAME="Test: booking.tests.BookingViewsTestCase.test_booking_list_view__user_all_rights__expect_OK Coverage Results" MODIFIED="1754372722226" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="" />

@ -34,9 +34,9 @@ class Booking(models.Model):
container_number = ContainerNumberField(max_length=11, blank=True, null=True) container_number = ContainerNumberField(max_length=11, blank=True, null=True)
vehicles_left = models.CharField(blank=True, null=True) vehicles_left = models.CharField(blank=True, null=True)
created_on = models.DateTimeField(auto_now_add=True) created_on = models.DateTimeField(auto_now_add=True)
created_by = models.ForeignKey(DepotUser, related_name='booking_user', on_delete=models.CASCADE) created_by = models.ForeignKey(DepotUser, related_name='booking_created_user', on_delete=models.CASCADE)
updated_on = models.DateTimeField(auto_now=True) updated_on = models.DateTimeField(auto_now=True)
updated_by = models.ForeignKey(DepotUser, related_name='booking_user', on_delete=models.CASCADE) updated_by = models.ForeignKey(DepotUser, related_name='booking_updated_user', on_delete=models.CASCADE)
status = models.CharField( status = models.CharField(
max_length=10, max_length=10,
choices=STATUS_CHOICES, choices=STATUS_CHOICES,

@ -43,11 +43,10 @@ class BookingViewsTestCase(TestCase):
container_type=self.container_type, container_type=self.container_type,
container_count=10, container_count=10,
line=self.line, line=self.line,
created_by=self.user_employee_all_rights.id, created_by=self.user_client_all_rights,
updated_by=self.user_employee_all_rights.id, updated_by=self.user_client_all_rights,
vehicles='K1,J2,K3', vehicles='K1,J2,K3',
vehicles_left='K1,J2,K3', vehicles_left='K1,J2,K3',
) )
def test_employee_booking_list_view__anonymouse_user__expect_redirect_302(self): def test_employee_booking_list_view__anonymouse_user__expect_redirect_302(self):
@ -87,7 +86,7 @@ class BookingViewsTestCase(TestCase):
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.assertTrue(Booking.objects.filter(number='BOOK456').exists()) self.assertTrue(Booking.objects.filter(number='BOOK456').exists())
def test_booking_update_view(self): def test_booking_update_view__expect_redirect_and_booking_updated_in_db(self):
self.client.login(username=self.user_client_all_rights.username, password=self.user_password) self.client.login(username=self.user_client_all_rights.username, password=self.user_password)
response = self.client.post(reverse('client_booking_update', args=[self.booking.id]), { response = self.client.post(reverse('client_booking_update', args=[self.booking.id]), {
'number': 'BOOK123-updated', 'number': 'BOOK123-updated',
@ -97,4 +96,4 @@ class BookingViewsTestCase(TestCase):
}) })
self.assertEqual(response.status_code, 302) self.assertEqual(response.status_code, 302)
self.booking.refresh_from_db() self.booking.refresh_from_db()
self.assertEqual(self.booking.number, 'BOOK123-updated') self.assertEqual(self.booking.number, 'BOOK123-UPDATED')

@ -1,6 +1,6 @@
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from django.urls import reverse_lazy from django.urls import reverse_lazy
from django.views.generic import CreateView, ListView from django.views.generic import CreateView, ListView, UpdateView
from DepoT.mixins.LineFiltweFormMixin import LineFilterFormMixin from DepoT.mixins.LineFiltweFormMixin import LineFilterFormMixin
from booking.forms import BookingCreateForm, BookingUpdateForm from booking.forms import BookingCreateForm, BookingUpdateForm
@ -38,8 +38,8 @@ class CreateBookingView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormM
def form_valid(self, form): def form_valid(self, form):
# todo more validation # todo more validation
form.instance.created_by = self.request.user.id form.instance.created_by = self.request.user
form.instance.updated_by = self.request.user.id form.instance.updated_by = self.request.user
form.instance.vehicles_left = form.cleaned_data.get('vehicles') form.instance.vehicles_left = form.cleaned_data.get('vehicles')
return super().form_valid(form) return super().form_valid(form)
@ -47,7 +47,7 @@ class CreateBookingView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormM
return self.request.user.has_company_perm('can_manage_booking') or self.request.user.user_type == 'CA' return self.request.user.has_company_perm('can_manage_booking') or self.request.user.user_type == 'CA'
class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormMixin, CreateView): class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormMixin, UpdateView):
template_name = 'client/booking-edit.html' template_name = 'client/booking-edit.html'
model = Booking model = Booking
form_class = BookingUpdateForm form_class = BookingUpdateForm
@ -55,7 +55,7 @@ class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilte
def form_valid(self, form): def form_valid(self, form):
# todo more validation # todo more validation
form.instance.updated_by = self.request.user.id form.instance.updated_by = self.request.user
return super().form_valid(form) return super().form_valid(form)
def test_func(self): def test_func(self):

@ -1,48 +1,3 @@
from django.test import TestCase, Client from django.test import TestCase
from django.urls import reverse
from django.contrib.auth import get_user_model
from containers.models import Container
from common.models import LinesModel, ContainerTypeModel
from preinfo.models import Preinfo
class ContainerViewsTestCase(TestCase): # Create your tests here.
def setUp(self):
self.client = Client()
DepotUser = get_user_model()
self.user = DepotUser.objects.create_user(username='testuser', password='password', user_type='E')
self.client.login(username='testuser', password='password')
self.line = LinesModel.objects.create(name='Test Line')
self.container_type = ContainerTypeModel.objects.create(name='20ft')
self.preinfo = Preinfo.objects.create(number='PRE123', line=self.line, container_type=self.container_type)
self.container = Container.objects.create(
number='TEST1234567',
line=self.line,
container_type=self.container_type,
received_by=self.user,
preinfo=self.preinfo
)
def test_container_list_view(self):
response = self.client.get(reverse('container-list'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'containers/container-list.html')
self.assertContains(response, self.container.number)
def test_container_receive_view(self):
response = self.client.post(reverse('container-receive'), {
'number': 'TEST7654321',
'line': self.line.id,
'container_type': self.container_type.id,
'preinfo': self.preinfo.id,
})
self.assertEqual(response.status_code, 302)
self.assertTrue(Container.objects.filter(number='TEST7654321').exists())
def test_container_expedition_view(self):
response = self.client.post(reverse('container-expedition', args=[self.container.id]), {
'expedition_vehicle': 'TRUCK123',
})
self.assertEqual(response.status_code, 302)
self.container.refresh_from_db()
self.assertTrue(self.container.expedited)
self.assertEqual(self.container.expedition_vehicle, 'TRUCK123')

@ -23,13 +23,16 @@ DepoT е софтуер за управление на контейнерно д
Проектът е структуриран по модулен начин, което позволява лесно добавяне на нови функционалности и поддръжка на съществуващите. Проектът е структуриран по модулен начин, което позволява лесно добавяне на нови функционалности и поддръжка на съществуващите.
## Инсталация ## Инсталация
За пускане на проекта е необходимо да се вдигне контейнер, в който са инсталирани PostgreSQL и minIO. MinIO е S3 съвместим bucket storage, който се използва за съхранение на снимки и други файлове, които се прикачват към контейнерите. Той е идеален за разработка, тъй като може да се използва локално и е съвместим с AWS S3 API. За пускане на проекта локално е необходимо да се вдигне контейнер, в който са инсталирани PostgreSQL и minIO. MinIO е S3 съвместим bucket storage, който се използва за съхранение на снимки и други файлове, които се прикачват към контейнерите. Той е идеален за разработка, тъй като може да се използва локално и е съвместим с AWS S3 API.
Това става с docker-compose.dev.yml, който е в корена на проекта. Това става с docker-compose.dev.yml, който е в корена на проекта.
след това трябва да се пуснат миграциите, за да се попълни базата данни с основни номенклатури и други данни, които са необходими за работата на проекта, както и има създаден суперпотребител: след това трябва да се пуснат миграциите, за да се попълни базата данни с основни номенклатури и други данни, които са необходими за работата на проекта, както и има създаден суперпотребител:
username: kikimor username: kikimor
password: shushunka1 password: shushunka1
В конфигурацията на проекта трябва да се добави environment vairable: DJANGO_SETTINGS_MODULE=DepoT.settings.development
Това е необходимо, за да се заредят development настройките на проекта, които са в DepoT/settings/development.py.
След стартиране на системата, се отваря landing страницата на DepoT. В нея има малко информация за депото, login бутон и бутон за таблото за шофьорите. След стартиране на системата, се отваря landing страницата на DepoT. В нея има малко информация за депото, login бутон и бутон за таблото за шофьорите.
При логване, в зависимост от типа на потребителя, се отваря различен dashboard. За служители и клиенти той изглежда почти еднакво, а за операторите е различен, тъй като те ползват таблети и интерфейса трябва да е по-опростен и удобен за работа с пръст(ръкавици). При логване, в зависимост от типа на потребителя, се отваря различен dashboard. За служители и клиенти той изглежда почти еднакво, а за операторите е различен, тъй като те ползват таблети и интерфейса трябва да е по-опростен и удобен за работа с пръст(ръкавици).

Loading…
Cancel
Save