fixed some errors
This commit is contained in:
Generated
+84
-47
@@ -5,18 +5,12 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<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$/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/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/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/containers/models.py" 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" />
|
||||
<change beforePath="$PROJECT_DIR$/containers/tests.py" beforeDir="false" afterPath="$PROJECT_DIR$/containers/tests.py" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/readme.md" beforeDir="false" afterPath="$PROJECT_DIR$/readme.md" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
@@ -53,10 +47,12 @@
|
||||
"ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true",
|
||||
"DefaultHtmlFileTemplate": "HTML File",
|
||||
"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__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_update_view.executor": "Debug",
|
||||
"Django tests.Test: preinfo.test_views.PreinfoViewsTest.executor": "Run",
|
||||
"RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"RunOnceActivity.git.unshallow": "true",
|
||||
@@ -64,7 +60,7 @@
|
||||
"django.template.preview.state": "SHOW_EDITOR",
|
||||
"git-widget-placeholder": "deploy__branch",
|
||||
"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",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
@@ -82,11 +78,11 @@
|
||||
}]]></component>
|
||||
<component name="RecentsManager">
|
||||
<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" />
|
||||
<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" />
|
||||
</key>
|
||||
<key name="MoveFile.RECENT_KEYS">
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\images" />
|
||||
@@ -96,7 +92,7 @@
|
||||
<recent name="C:\dev_projects\python\Django\DepoT\templates\employee" />
|
||||
</key>
|
||||
</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">
|
||||
<module name="DepoT" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
@@ -120,28 +116,6 @@
|
||||
<option name="OPTIONS" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_list_view" 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" />
|
||||
<env name="DJANGO_SETTINGS_MODULE" value="DepoT.settings.development" />
|
||||
</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" />
|
||||
<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_all_rights__expect_OK" type="DjangoTestsConfigurationType" temporary="true">
|
||||
<module name="DepoT" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
@@ -185,6 +159,50 @@
|
||||
<option name="OPTIONS" value="" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
<configuration name="Test: booking.tests.BookingViewsTestCase.test_booking_update_view" 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" />
|
||||
<env name="DJANGO_SETTINGS_MODULE" value="DepoT.settings.development" />
|
||||
</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_update_view" />
|
||||
<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: preinfo.test_views.PreinfoViewsTest" 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" />
|
||||
<env name="DJANGO_SETTINGS_MODULE" value="DepoT.settings.development" />
|
||||
</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="preinfo.test_views.PreinfoViewsTest" />
|
||||
<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="DepoT" type="Python.DjangoServer" factoryName="Django server">
|
||||
<module name="DepoT" />
|
||||
<option name="ENV_FILES" value="" />
|
||||
@@ -213,17 +231,19 @@
|
||||
</configuration>
|
||||
<list>
|
||||
<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_no_rights__expect_forbidden" />
|
||||
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view" />
|
||||
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase" />
|
||||
</list>
|
||||
<recent_temporary>
|
||||
<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.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_no_rights__expect_forbidden" />
|
||||
<item itemvalue="Django tests.Test: booking.tests.BookingViewsTestCase.test_booking_list_view" />
|
||||
</list>
|
||||
</recent_temporary>
|
||||
</component>
|
||||
@@ -253,7 +273,7 @@
|
||||
<workItem from="1753637487803" duration="71422000" />
|
||||
<workItem from="1754046655407" duration="19056000" />
|
||||
<workItem from="1754068089083" duration="32822000" />
|
||||
<workItem from="1754408990802" duration="7521000" />
|
||||
<workItem from="1754408990802" duration="13021000" />
|
||||
</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" />
|
||||
@@ -374,19 +394,34 @@
|
||||
<option name="timeStamp" value="55" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/booking/tests.py</url>
|
||||
<line>97</line>
|
||||
<option name="timeStamp" value="127" />
|
||||
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
|
||||
<line>50</line>
|
||||
<option name="timeStamp" value="130" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/booking/tests.py</url>
|
||||
<line>90</line>
|
||||
<option name="timeStamp" value="128" />
|
||||
<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$/booking/tests.py</url>
|
||||
<line>11</line>
|
||||
<option name="timeStamp" value="129" />
|
||||
<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 enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
|
||||
<line>111</line>
|
||||
<option name="timeStamp" value="141" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
|
||||
<url>file://$PROJECT_DIR$/preinfo/test_views.py</url>
|
||||
<line>117</line>
|
||||
<option name="timeStamp" value="142" />
|
||||
</line-breakpoint>
|
||||
<line-breakpoint enabled="true" type="javascript">
|
||||
<url>file://$PROJECT_DIR$/static/js/container_validation.js</url>
|
||||
@@ -405,7 +440,9 @@
|
||||
</component>
|
||||
<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_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.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="" />
|
||||
|
||||
Binary file not shown.
+2
-2
@@ -34,9 +34,9 @@ class Booking(models.Model):
|
||||
container_number = ContainerNumberField(max_length=11, blank=True, null=True)
|
||||
vehicles_left = models.CharField(blank=True, null=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_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(
|
||||
max_length=10,
|
||||
choices=STATUS_CHOICES,
|
||||
|
||||
+4
-5
@@ -43,11 +43,10 @@ class BookingViewsTestCase(TestCase):
|
||||
container_type=self.container_type,
|
||||
container_count=10,
|
||||
line=self.line,
|
||||
created_by=self.user_employee_all_rights.id,
|
||||
updated_by=self.user_employee_all_rights.id,
|
||||
created_by=self.user_client_all_rights,
|
||||
updated_by=self.user_client_all_rights,
|
||||
vehicles='K1,J2,K3',
|
||||
vehicles_left='K1,J2,K3',
|
||||
|
||||
)
|
||||
|
||||
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.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)
|
||||
response = self.client.post(reverse('client_booking_update', args=[self.booking.id]), {
|
||||
'number': 'BOOK123-updated',
|
||||
@@ -97,4 +96,4 @@ class BookingViewsTestCase(TestCase):
|
||||
})
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.booking.refresh_from_db()
|
||||
self.assertEqual(self.booking.number, 'BOOK123-updated')
|
||||
self.assertEqual(self.booking.number, 'BOOK123-UPDATED')
|
||||
|
||||
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
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 booking.forms import BookingCreateForm, BookingUpdateForm
|
||||
@@ -38,8 +38,8 @@ class CreateBookingView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormM
|
||||
|
||||
def form_valid(self, form):
|
||||
# todo more validation
|
||||
form.instance.created_by = self.request.user.id
|
||||
form.instance.updated_by = self.request.user.id
|
||||
form.instance.created_by = self.request.user
|
||||
form.instance.updated_by = self.request.user
|
||||
form.instance.vehicles_left = form.cleaned_data.get('vehicles')
|
||||
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'
|
||||
|
||||
|
||||
class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormMixin, CreateView):
|
||||
class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilterFormMixin, UpdateView):
|
||||
template_name = 'client/booking-edit.html'
|
||||
model = Booking
|
||||
form_class = BookingUpdateForm
|
||||
@@ -55,7 +55,7 @@ class ClientBookingUpdateView(LoginRequiredMixin, UserPassesTestMixin, LineFilte
|
||||
|
||||
def form_valid(self, form):
|
||||
# todo more validation
|
||||
form.instance.updated_by = self.request.user.id
|
||||
form.instance.updated_by = self.request.user
|
||||
return super().form_valid(form)
|
||||
|
||||
def test_func(self):
|
||||
|
||||
Binary file not shown.
Binary file not shown.
+2
-47
@@ -1,48 +1,3 @@
|
||||
from django.test import TestCase, Client
|
||||
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
|
||||
from django.test import TestCase
|
||||
|
||||
class ContainerViewsTestCase(TestCase):
|
||||
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')
|
||||
# Create your tests here.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -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, който е в корена на проекта.
|
||||
|
||||
след това трябва да се пуснат миграциите, за да се попълни базата данни с основни номенклатури и други данни, които са необходими за работата на проекта, както и има създаден суперпотребител:
|
||||
username: kikimor
|
||||
password: shushunka1
|
||||
|
||||
В конфигурацията на проекта трябва да се добави environment vairable: DJANGO_SETTINGS_MODULE=DepoT.settings.development
|
||||
Това е необходимо, за да се заредят development настройките на проекта, които са в DepoT/settings/development.py.
|
||||
|
||||
След стартиране на системата, се отваря landing страницата на DepoT. В нея има малко информация за депото, login бутон и бутон за таблото за шофьорите.
|
||||
При логване, в зависимост от типа на потребителя, се отваря различен dashboard. За служители и клиенти той изглежда почти еднакво, а за операторите е различен, тъй като те ползват таблети и интерфейса трябва да е по-опростен и удобен за работа с пръст(ръкавици).
|
||||
|
||||
@@ -38,4 +41,4 @@ password: shushunka1
|
||||
В repository (https://git.kikimor.com) има нов branch (deploy_branch). В него има docker-compose-deploy.yml,с който се стартират всички контейнери (postgres, minio, createbuckets и самото приложение).
|
||||
Тук в контейнера се прави collectstatic, след което се качват в bucket "static" на minio и се сервират през него.
|
||||
|
||||
P.S.Тъй като не остана много време, не знам дали ще успея да обединя двата branch-а, затова последните промени засега ще са само в deploy_branch, който вие няма да можете да стартирате.
|
||||
P.S.Тъй като не остана много време, не знам дали ще успея да обединя двата branch-а, затова последните промени засега ще са само в deploy_branch, който вие няма да можете да стартирате.
|
||||
|
||||
Reference in New Issue
Block a user