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.
This commit is contained in:
2025-06-30 18:06:35 +03:00
parent 72e0fc963c
commit daba5a8438
51 changed files with 2686 additions and 1377 deletions
View File
+34
View File
@@ -0,0 +1,34 @@
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
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',
'company',
'line',
'company_permissions',
'new_field1',
'is_company_admin',
)}),
)
# Add fields to display in list view
list_display = UserAdmin.list_display + ('phone_number', 'company', 'line', 'is_company_admin')
# Add fields to the add form
add_fieldsets = UserAdmin.add_fieldsets + (
('Additional Info', {'fields': (
'email',
'phone_number',
'company',
'line',
'company_permissions',
'new_field1',
'is_company_admin',
)}),
)
+6
View File
@@ -0,0 +1,6 @@
from django.apps import AppConfig
class UsersConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "accounts"
+16
View File
@@ -0,0 +1,16 @@
from django.contrib.auth.backends import ModelBackend
class CompanyUserBackend(ModelBackend):
def get_user_permissions(self, user_obj, obj=None):
if not user_obj.is_active or user_obj.is_anonymous:
return set()
if user_obj.is_superuser:
return super().get_user_permissions(user_obj, obj)
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
+7
View File
@@ -0,0 +1,7 @@
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import AuthenticationForm
class LoginForm(AuthenticationForm):
field_order = ['username', 'password']
class Meta:
model = get_user_model()
View File
+44
View File
@@ -0,0 +1,44 @@
from django.contrib.auth.models import AbstractUser
from django.db import models
class ClientPermission(models.Model):
class Meta:
managed = True
default_permissions = ()
permissions = (
('can_book_container', 'Can book container'),
('can_view_bookings', 'Can view bookings'),
('can_manage_company_users', 'Can manage company users'),
)
class DepotUser(AbstractUser):
phone_number = models.CharField(max_length=15, blank=True, null=True)
email = models.EmailField(unique=True, blank=False, null=False)
company = models.ForeignKey(
'common.CompanyModel',
on_delete=models.CASCADE,
related_name='user_lines',
blank=True,
null=True
)
line = models.ForeignKey(
'common.LinesModel',
on_delete=models.CASCADE,
related_name='user_lines',
blank=True,
null=True
)
company_permissions = models.ManyToManyField('ClientPermission')
new_field1 = models.BooleanField(default=False)
is_company_admin = models.BooleanField(default=False)
def has_company_perm(self, perm_codename):
if self.is_superuser:
return True
return self.company_permissions.filter(
codename=perm_codename,
is_client_permission=self.company
).exists()
+3
View File
@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.
+8
View File
@@ -0,0 +1,8 @@
from django.urls import path
from django.contrib.auth import views as auth_views
from accounts import views
urlpatterns = [
path('login/', views.DepotLoginView.as_view(), name='login'),
path('relogin/', auth_views.logout_then_login, name='relogin'),
]
+17
View File
@@ -0,0 +1,17 @@
from django.contrib.auth.views import LoginView
from django.shortcuts import render
from django.urls import reverse_lazy
from django.views.generic import TemplateView, FormView
from accounts.forms import LoginForm
# Create your views here.
class DepotLoginView(LoginView):
template_name = 'registration/login.html'
# success_url = reverse_lazy('dashboard')
form_class = LoginForm
next_page = reverse_lazy('dashboard')