Browse Source
translate enhancement
translate enhancement
update models and admin files which had missing lazy text features update the translation file.master
15 changed files with 1022 additions and 357 deletions
-
1apps/account/admin/location.py
-
26apps/account/admin/notification.py
-
13apps/account/admin/professor.py
-
11apps/account/admin/student.py
-
12apps/account/admin/user.py
-
127apps/account/migrations/0003_alter_clientuser_options_and_more.py
-
191apps/account/models/groups.py
-
11apps/account/models/notification.py
-
95apps/account/models/user.py
-
36apps/certificate/migrations/0002_alter_certificate_course_and_more.py
-
8apps/certificate/models.py
-
15apps/course/admin/live_session.py
-
31apps/course/migrations/0006_alter_course_professor_alter_course_video_file_and_more.py
-
8apps/course/models/course.py
-
794locale/ru/LC_MESSAGES/django.po
@ -1,12 +1,14 @@ |
|||
from ajaxdatatable.admin import AjaxDatatable |
|||
|
|||
from apps.account.models import User, Notification |
|||
|
|||
@admin.register(Notification) |
|||
class NotificationAdmin(AjaxDatatable): |
|||
list_display = ('title', 'user', 'is_read', 'created_at') |
|||
list_filter = ('is_read', 'created_at') |
|||
search_fields = ('title', 'message', 'user__fullname') |
|||
list_editable = ('is_read',) |
|||
ordering = ('-created_at',) |
|||
autocomplete_fields = ['user',] |
|||
from django.contrib import admin |
|||
from django.utils.translation import gettext_lazy as _ |
|||
from ajaxdatatable.admin import AjaxDatatable |
|||
|
|||
from apps.account.models import User, Notification |
|||
|
|||
@admin.register(Notification) |
|||
class NotificationAdmin(AjaxDatatable): |
|||
list_display = ('title', 'user', 'is_read', 'created_at') |
|||
list_filter = ('is_read', 'created_at') |
|||
search_fields = ('title', 'message', 'user__fullname') |
|||
list_editable = ('is_read',) |
|||
ordering = ('-created_at',) |
|||
autocomplete_fields = ['user',] |
|||
@ -0,0 +1,127 @@ |
|||
# Generated by Django 5.2.12 on 2026-05-04 12:53 |
|||
|
|||
import dj_language.field |
|||
import django.db.models.deletion |
|||
from django.conf import settings |
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('account', '0002_alter_user_email_alter_user_username'), |
|||
('dj_language', '0002_auto_20220120_1344'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterModelOptions( |
|||
name='clientuser', |
|||
options={'ordering': ('-id',), 'verbose_name': 'User', 'verbose_name_plural': 'Users'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='locationhistory', |
|||
options={'verbose_name': 'Location History', 'verbose_name_plural': 'Location History'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='loginhistory', |
|||
options={'verbose_name': 'Login History', 'verbose_name_plural': 'Login Histories'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='notification', |
|||
options={'verbose_name': 'Notification', 'verbose_name_plural': 'Notifications'}, |
|||
), |
|||
migrations.AlterModelOptions( |
|||
name='user', |
|||
options={'ordering': ('-id',), 'verbose_name': 'User', 'verbose_name_plural': 'Users'}, |
|||
), |
|||
migrations.AlterField( |
|||
model_name='locationhistory', |
|||
name='at_time', |
|||
field=models.DateTimeField(auto_now_add=True, verbose_name='at time'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='locationhistory', |
|||
name='ip', |
|||
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='ip'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='locationhistory', |
|||
name='selected_manually', |
|||
field=models.BooleanField(blank=True, null=True, verbose_name='selected manually'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='locationhistory', |
|||
name='timezone', |
|||
field=models.CharField(blank=True, max_length=60, null=True, verbose_name='timezone'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='locationhistory', |
|||
name='user', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='location_history', to=settings.AUTH_USER_MODEL, verbose_name='user'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='loginhistory', |
|||
name='at_time', |
|||
field=models.DateTimeField(auto_now_add=True, verbose_name='at time'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='loginhistory', |
|||
name='device_os', |
|||
field=models.CharField(blank=True, max_length=16, null=True, verbose_name='Device os'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='loginhistory', |
|||
name='ip', |
|||
field=models.CharField(max_length=255, null=True, verbose_name='ip'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='loginhistory', |
|||
name='timezone', |
|||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='timezone'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='loginhistory', |
|||
name='user', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='login_history', to=settings.AUTH_USER_MODEL, verbose_name='user'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='avatar', |
|||
field=models.ImageField(blank=True, max_length=512, null=True, upload_to='users/avatars/%Y/%m/', verbose_name='Avatar'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='deleted_at', |
|||
field=models.DateTimeField(blank=True, null=True, verbose_name='deleted at'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='device_os', |
|||
field=models.CharField(choices=[('android', 'android'), ('apple', 'apple'), ('web', 'web')], max_length=16, null=True, verbose_name='device os'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='fcm', |
|||
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='fcm'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='is_staff', |
|||
field=models.BooleanField(default=False, verbose_name='is staff'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='language', |
|||
field=dj_language.field.LanguageField(default=69, limit_choices_to={'status': True}, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='dj_language.language', verbose_name='Language'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='skill', |
|||
field=models.CharField(blank=True, max_length=512, null=True, verbose_name='skill'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='user', |
|||
name='slug', |
|||
field=models.SlugField(blank=True, max_length=255, null=True, unique=True, verbose_name='slug'), |
|||
), |
|||
] |
|||
@ -1,95 +1,96 @@ |
|||
from apps.account.models import User |
|||
from apps.account.manager import * |
|||
|
|||
from django.contrib.auth.models import Group |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
class ProfessorUser(User): |
|||
objects = ProfessorUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.PROFESSOR |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Professor Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = "Professor User" |
|||
verbose_name_plural = "Professor Users" |
|||
|
|||
|
|||
|
|||
|
|||
class ClientUser(User): |
|||
objects = ClientUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.CLIENT |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Client Group") |
|||
self.groups.add(group) |
|||
|
|||
|
|||
class Meta: |
|||
proxy = True |
|||
|
|||
verbose_name = 'user' |
|||
verbose_name_plural = 'users' |
|||
ordering = ('-id',) |
|||
|
|||
|
|||
|
|||
class AdminUser(User): |
|||
objects = AdminUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.ADMIN |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Admin Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = "Admin User" |
|||
verbose_name_plural = "Admin Users" |
|||
|
|||
|
|||
|
|||
class SuperAdminUser(User): |
|||
objects = SuperAdminUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.SUPER_ADMIN |
|||
self.is_staff = True |
|||
super().save(*args, **kwargs) |
|||
|
|||
|
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = "Super Admin User" |
|||
verbose_name_plural = "Super Admin Users" |
|||
|
|||
|
|||
|
|||
class StudentUser(User): |
|||
objects = StudentUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.STUDENT |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Student Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = "Student User" |
|||
verbose_name_plural = "Student Users" |
|||
from django.utils.translation import gettext_lazy as _ |
|||
from apps.account.models import User |
|||
from apps.account.manager import * |
|||
|
|||
from django.contrib.auth.models import Group |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
class ProfessorUser(User): |
|||
objects = ProfessorUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.PROFESSOR |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Professor Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = _("Professor User") |
|||
verbose_name_plural = _("Professor Users") |
|||
|
|||
|
|||
|
|||
|
|||
class ClientUser(User): |
|||
objects = ClientUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.CLIENT |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Client Group") |
|||
self.groups.add(group) |
|||
|
|||
|
|||
class Meta: |
|||
proxy = True |
|||
|
|||
verbose_name = _('User') |
|||
verbose_name_plural = _('Users') |
|||
ordering = ('-id',) |
|||
|
|||
|
|||
|
|||
class AdminUser(User): |
|||
objects = AdminUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.ADMIN |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Admin Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = _("Admin User") |
|||
verbose_name_plural = _("Admin Users") |
|||
|
|||
|
|||
|
|||
class SuperAdminUser(User): |
|||
objects = SuperAdminUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.SUPER_ADMIN |
|||
self.is_staff = True |
|||
super().save(*args, **kwargs) |
|||
|
|||
|
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = _("Super Admin User") |
|||
verbose_name_plural = _("Super Admin Users") |
|||
|
|||
|
|||
|
|||
class StudentUser(User): |
|||
objects = StudentUserManager() |
|||
|
|||
def save(self, *args, **kwargs): |
|||
self.user_type = User.UserType.STUDENT |
|||
super().save(*args, **kwargs) |
|||
|
|||
group, _ = Group.objects.get_or_create(name="Student Group") |
|||
self.groups.add(group) |
|||
|
|||
class Meta: |
|||
proxy = True |
|||
verbose_name = _("Student User") |
|||
verbose_name_plural = _("Student Users") |
|||
@ -0,0 +1,36 @@ |
|||
# Generated by Django 5.2.12 on 2026-05-04 12:53 |
|||
|
|||
import django.db.models.deletion |
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('account', '0003_alter_clientuser_options_and_more'), |
|||
('certificate', '0001_initial'), |
|||
('course', '0006_alter_course_professor_alter_course_video_file_and_more'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='certificate', |
|||
name='course', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='course_certificates', to='course.course', verbose_name='Course'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='certificate', |
|||
name='created_at', |
|||
field=models.DateTimeField(auto_now_add=True, verbose_name='Created at'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='certificate', |
|||
name='status', |
|||
field=models.CharField(choices=[('pending', 'pending'), ('approved', 'approved'), ('canceled', 'canceled')], default='pending', max_length=10, verbose_name='Status'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='certificate', |
|||
name='student', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='certificates', to='account.studentuser', verbose_name='Student'), |
|||
), |
|||
] |
|||
@ -0,0 +1,31 @@ |
|||
# Generated by Django 5.2.12 on 2026-05-04 12:53 |
|||
|
|||
import apps.course.models.course |
|||
import django.db.models.deletion |
|||
from django.db import migrations, models |
|||
|
|||
|
|||
class Migration(migrations.Migration): |
|||
|
|||
dependencies = [ |
|||
('account', '0003_alter_clientuser_options_and_more'), |
|||
('course', '0005_alter_course_discount_percentage'), |
|||
] |
|||
|
|||
operations = [ |
|||
migrations.AlterField( |
|||
model_name='course', |
|||
name='professor', |
|||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='courses', to='account.professoruser', verbose_name='Professor'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='course', |
|||
name='video_file', |
|||
field=models.FileField(blank=True, null=True, upload_to=apps.course.models.course.course_file_upload_to, verbose_name='Video File'), |
|||
), |
|||
migrations.AlterField( |
|||
model_name='course', |
|||
name='video_link', |
|||
field=models.CharField(blank=True, max_length=500, null=True, verbose_name='Video Link'), |
|||
), |
|||
] |
|||
794
locale/ru/LC_MESSAGES/django.po
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save
Reference in new issue