some tests

deploy_branch
kikimor 7 months ago
parent 8294db9189
commit 06a3b105d3

@ -5,34 +5,14 @@
</component>
<component name="ChangeListManager">
<list default="true" id="7410a44d-51b9-408b-85ad-4fa46776b372" name="Changes" comment="commit unversioned files ;)">
<change afterPath="$PROJECT_DIR$/DepoT/settings/__init__.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/DepoT/settings/base.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/DepoT/settings/development.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/unused templates/settings.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.dockerignore" beforeDir="false" afterPath="$PROJECT_DIR$/.dockerignore" 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/production.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/booking/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/models.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/DepoT/settings/development.py" beforeDir="false" afterPath="$PROJECT_DIR$/DepoT/settings/development.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/DepoT/settings/production.py" beforeDir="false" afterPath="$PROJECT_DIR$/DepoT/settings/production.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/employee_views.py" beforeDir="false" afterPath="$PROJECT_DIR$/booking/views/employee_views.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/common/migrations/0004_populate_initial_data.py" beforeDir="false" afterPath="$PROJECT_DIR$/common/migrations/0004_populate_initial_data.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$/createbuckets_depot.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/createbuckets_depot.tar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/damages_api/tests.py" beforeDir="false" afterPath="$PROJECT_DIR$/damages_api/tests.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/depot-web.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/depot-web.tar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/depot_image.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/depot_image.tar" 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$/dockerfile" beforeDir="false" afterPath="$PROJECT_DIR$/dockerfile" afterDir="false" />
<change beforePath="$PROJECT_DIR$/manage.py" beforeDir="false" afterPath="$PROJECT_DIR$/manage.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/minio.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/minio.tar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/payments/services.py" beforeDir="false" afterPath="$PROJECT_DIR$/payments/services.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/postgres.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/postgres.tar" 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/common/allowed-vehicles.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/common/allowed-vehicles.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/common/base.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/common/base.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/employee/unpaid-list.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/employee/unpaid-list.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/web_depot.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/web_depot.tar" afterDir="false" />
<change beforePath="$PROJECT_DIR$/images/web_depot.tar" beforeDir="false" afterPath="$PROJECT_DIR$/images/web_depot.tar" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -68,8 +48,11 @@
"keyToString": {
"ASKED_MARK_IGNORED_FILES_AS_EXCLUDED": "true",
"DefaultHtmlFileTemplate": "HTML File",
"Django Server.DepoT.executor": "Debug",
"Django Server.DepoT.executor": "Run",
"Django tests.Test: booking.tests.BookingViewsTestCase.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_no_rights__expect_forbidden.executor": "Debug",
"RunOnceActivity.OpenDjangoStructureViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"RunOnceActivity.git.unshallow": "true",
@ -108,7 +91,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: booking.tests.BookingViewsTestCase">
<configuration name="Test: booking.tests.BookingViewsTestCase" type="DjangoTestsConfigurationType" temporary="true">
<module name="DepoT" />
<option name="ENV_FILES" value="" />
@ -116,6 +99,7 @@
<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="" />
@ -130,6 +114,71 @@
<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="" />
<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" />
<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__user_no_rights__expect_forbidden" />
<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="" />
@ -158,11 +207,17 @@
</configuration>
<list>
<item itemvalue="Django Server.DepoT" />
<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: booking.tests.BookingViewsTestCase" />
<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>
@ -311,6 +366,31 @@
<line>7</line>
<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>90</line>
<option name="timeStamp" value="109" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/tests.py</url>
<line>76</line>
<option name="timeStamp" value="117" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/views/client_views.py</url>
<line>40</line>
<option name="timeStamp" value="119" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/views/client_views.py</url>
<line>46</line>
<option name="timeStamp" value="120" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/booking/tests.py</url>
<line>75</line>
<option name="timeStamp" value="121" />
</line-breakpoint>
<line-breakpoint enabled="true" type="javascript">
<url>file://$PROJECT_DIR$/static/js/container_validation.js</url>
<line>4</line>
@ -327,6 +407,9 @@
</breakpoint-manager>
</component>
<component name="com.intellij.coverage.CoverageDataManagerImpl">
<SUITE FILE_PATH="coverage/DepoT$Test__booking_tests_BookingViewsTestCase.coverage" NAME="Test: booking.tests.BookingViewsTestCase Coverage Results" MODIFIED="1754303647560" 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_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_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="" />
</component>
</project>

@ -17,7 +17,7 @@ import environ
BASE_DIR = Path(__file__).resolve().parent.parent.parent
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
env.read_env(os.path.join(BASE_DIR, '.env'))
SECRET_KEY = "django-insecure-g%187p84o9^rr)3#9@r3n^o2v1i%@6=+puxm7hlodg+kbsk%n#"

@ -18,7 +18,7 @@ from minio_backend.storage import MinioStaticStorage, MinioMediaStorage
BASE_DIR = Path(__file__).resolve().parent.parent.parent
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, 'production.env'))
env.read_env(os.path.join(BASE_DIR, 'production.env'))
SECRET_KEY = "django-insecure-g%187p84o9^rr)3#9@r3n^o2v1i%@6=+puxm7hlodg+kbsk%n#"

@ -1,49 +1,99 @@
from django.test import TestCase, Client
from django.urls import reverse
from django.urls import reverse, reverse_lazy
from django.contrib.auth import get_user_model
from accounts.models import ClientPermission
from booking.models import Booking
from common.models import LinesModel, ContainerTypeModel
from common.models import LinesModel, ContainerTypeModel, CompanyModel
class BookingViewsTestCase(TestCase):
def setUp(self):
self.company = CompanyModel.objects.create(name='Test Company')
self.line = LinesModel.objects.create(name='Test Line', company_id=self.company.id)
self.container_type = ContainerTypeModel.objects.get(name='20GP')
self.user_password = 'password'
self.client = Client()
DepotUser = get_user_model()
self.user = DepotUser.objects.create_user(username='testuser', password='password', user_type='EM')
self.client.login(username='testuser', password='password')
self.line = LinesModel.objects.create(name='Test Line')
self.container_type = ContainerTypeModel.objects.create(name='20ft')
self.user_client_no_rights = DepotUser.objects.create_user(username='user_client_no_rights', password=self.user_password, user_type='CL', email='user_client_no_rights@gmail.com')
self.user_client_all_rights = DepotUser.objects.create_user(username='user_client_all_rights', password=self.user_password, user_type='CL', email='user_client_all_rights@gmail.com', line=self.line, company=self.company)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_booking').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_booking').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_preinfo').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_preinfo').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_payment').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_payment').id)
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_company_users').id)
self.user_employee_no_rights = DepotUser.objects.create_user(username='user_employee_no_rights', password=self.user_password, user_type='EM', email='user_employee_no_rights@gmail.com')
self.user_employee_all_rights = DepotUser.objects.create_user(username='user_employee_all_rights', password=self.user_password, user_type='EM', email='user_employee_all_rights@gmail.com')
self.user_employee_all_rights.employee_permissions.add(1)
self.user_employee_all_rights.employee_permissions.add(2)
self.user_employee_all_rights.employee_permissions.add(3)
self.user_employee_all_rights.employee_permissions.add(4)
self.user_employee_all_rights.employee_permissions.add(5)
self.booking = Booking.objects.create(
number='BOOK123',
container_type=self.container_type,
container_count=10,
line=self.line,
created_by=self.user.id,
updated_by=self.user.id
created_by=self.user_employee_all_rights.id,
updated_by=self.user_employee_all_rights.id,
vehicles='',
vehicles_left='',
)
def test_booking_list_view(self):
response = self.client.get(reverse('booking-list'))
def test_employee_booking_list_view__anonymouse_user__expect_redirect_302(self):
response = self.client.get(reverse_lazy('employee_bookings'))
self.assertEqual(response.status_code, 302)
def test_employee_booking_list_view__client_user_login__expect_forbidden_403(self):
self.client.login(username=self.user_client_no_rights.username, password=self.user_password)
response = self.client.get(reverse_lazy('employee_bookings'))
self.assertEqual(response.status_code, 403)
def test_employee_booking_list_view__user_login__expect_redirect_200(self):
self.client.login(username=self.user_employee_no_rights.username, password=self.user_password)
response = self.client.get(reverse_lazy('employee_bookings'))
self.assertEqual(response.status_code, 200)
def test_booking_list_view__user_all_rights__expect_OK(self):
self.client.login(username=self.user_employee_all_rights.username, password=self.user_password)
response = self.client.get(reverse_lazy('employee_bookings'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'booking/booking-list.html')
self.assertTemplateUsed(response, 'employee/booking-list.html')
self.assertContains(response, self.booking.number)
def test_booking_create_view(self):
response = self.client.post(reverse('booking-create'), {
self.assertTrue( self.user_client_all_rights.has_company_perm('can_view_booking'))
self.client.login(username=self.user_client_all_rights.username, password=self.user_password)
response = self.client.post(reverse('client_booking_create'), {
'number': 'BOOK456',
'container_type': self.container_type.id,
'container_count': 5,
'line': self.line.id,
'vehicles': 'Truck1,Truck2',
'vehicles_left': 'Truck1,Truck2',
})
self.assertEqual(response.status_code, 302)
self.assertEqual(response.status_code, 200)
self.assertTrue(Booking.objects.filter(number='BOOK456').exists())
def test_booking_update_view(self):
response = self.client.post(reverse('booking-update', args=[self.booking.id]), {
'number': 'BOOK123-updated',
'container_type': self.container_type.id,
'container_count': 15,
'line': self.line.id,
})
self.assertEqual(response.status_code, 302)
self.booking.refresh_from_db()
self.assertEqual(self.booking.number, 'BOOK123-updated')
# def test_booking_update_view(self):
# response = self.client.post(reverse('booking-update', args=[self.booking.id]), {
# 'number': 'BOOK123-updated',
# 'container_type': self.container_type.id,
# 'container_count': 15,
# 'line': self.line.id,
# })
# self.assertEqual(response.status_code, 302)
# self.booking.refresh_from_db()
# self.assertEqual(self.booking.number, 'BOOK123-updated')

@ -12,7 +12,7 @@ class BookingListView(LoginRequiredMixin, UserPassesTestMixin, ListView):
def test_func(self):
user = self.request.user
return self.request.user.user_type == 'EMP' or user.is_superuser
return self.request.user.user_type == 'EM' or user.is_superuser
def get_queryset(self):
queryset = super().get_queryset()

@ -46,24 +46,22 @@ def create_initial_data(apps, schema_editor):
# Companies and Lines
companies = [
(1, 'GMS', 'GMS', 'Global Maritime Servises'),
(2, 'TO', 'TO', 'Терминален оператор'),
('GMS', 'GMS', 'Global Maritime Servises'),
('TO', 'TO', 'Терминален оператор'),
]
for _id, name, short_name, description in companies:
for name, short_name, description in companies:
CompanyModel.objects.create(
id=_id,
name=name,
short_name=short_name,
description=description
)
lines = [
(1, 'GMS', 'GMS', 'GMS line', 1),
(2, 'HPG', 'HPG', 'Hapag Lloyds line', 1),
(3, 'TO', 'TO', 'Терминален оператор line', 2),
('GMS', 'GMS', 'GMS line', 1),
('HPG', 'HPG', 'Hapag Lloyds line', 1),
('TO', 'TO', 'Терминален оператор line', 2),
]
for _id, name, short_name, description, company_id in lines:
for name, short_name, description, company_id in lines:
LinesModel.objects.create(
id=_id,
name=name,
short_name=short_name,
description=description,

@ -9,7 +9,7 @@ class NomenclatureBaseModel(models.Model):
class Meta:
abstract = True
ordering = ['name']
app_label = 'common'
def __str__(self):
return self.name
@ -30,8 +30,7 @@ class LinesModel(NomenclatureBaseModel):
app_label = 'common'
class OperationModel(NomenclatureBaseModel):
class Meta:
app_label = 'common'
...
class ContainerKindModel(NomenclatureBaseModel):
...
@ -47,5 +46,8 @@ class ContainerTypeModel(models.Model):
)
deleted = models.BooleanField(default=False)
class Meta:
app_label = 'common'
def __str__(self):
return self.name

Binary file not shown.
Loading…
Cancel
Save