Skip to content
This repository has been archived by the owner on Oct 1, 2024. It is now read-only.

Commit

Permalink
Added django internalization. Translated static files(ru(Russian), en…
Browse files Browse the repository at this point in the history
…). And models with package django-modeltranslation. Migrated ru and en fields on current specific models.
  • Loading branch information
BekzatAbdilamituulu committed Apr 16, 2024
1 parent ba2cbc4 commit b81ab0d
Show file tree
Hide file tree
Showing 89 changed files with 3,207 additions and 1,508 deletions.
48 changes: 24 additions & 24 deletions accounts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.urls import reverse
from django.contrib.auth.models import AbstractUser, UserManager
from django.conf import settings

from django.utils.translation import gettext_lazy as _
from django.db.models import Q
from PIL import Image

Expand All @@ -11,31 +11,31 @@


# LEVEL_COURSE = "Level course"
BACHLOAR_DEGREE = "Bachloar"
MASTER_DEGREE = "Master"
BACHLOAR_DEGREE = _("Bachloar")
MASTER_DEGREE = _("Master")

LEVEL = (
# (LEVEL_COURSE, "Level course"),
(BACHLOAR_DEGREE, "Bachloar Degree"),
(MASTER_DEGREE, "Master Degree"),
(BACHLOAR_DEGREE, _("Bachloar Degree")),
(MASTER_DEGREE, _("Master Degree")),
)

FATHER = "Father"
MOTHER = "Mother"
BROTHER = "Brother"
SISTER = "Sister"
GRAND_MOTHER = "Grand mother"
GRAND_FATHER = "Grand father"
OTHER = "Other"
FATHER = _("Father")
MOTHER = _("Mother")
BROTHER = _("Brother")
SISTER = _("Sister")
GRAND_MOTHER = _("Grand mother")
GRAND_FATHER = _("Grand father")
OTHER = _("Other")

RELATION_SHIP = (
(FATHER, "Father"),
(MOTHER, "Mother"),
(BROTHER, "Brother"),
(SISTER, "Sister"),
(GRAND_MOTHER, "Grand mother"),
(GRAND_FATHER, "Grand father"),
(OTHER, "Other"),
(FATHER, _("Father")),
(MOTHER, _("Mother")),
(BROTHER, _("Brother")),
(SISTER, _("Sister")),
(GRAND_MOTHER, _("Grand mother")),
(GRAND_FATHER, _("Grand father")),
(OTHER, _("Other")),
)


Expand Down Expand Up @@ -64,7 +64,7 @@ def get_superuser_count(self):
return self.model.objects.filter(is_superuser=True).count()


GENDERS = (("M", "Male"), ("F", "Female"))
GENDERS = ((_("M"), _("Male")), (_("F"), _("Female")))


class User(AbstractUser):
Expand Down Expand Up @@ -100,13 +100,13 @@ def __str__(self):
@property
def get_user_role(self):
if self.is_superuser:
role = "Admin"
role = _("Admin")
elif self.is_student:
role = "Student"
role = _("Student")
elif self.is_lecturer:
role = "Lecturer"
role = _("Lecturer")
elif self.is_parent:
role = "Parent"
role = _("Parent")

return role

Expand Down
2 changes: 1 addition & 1 deletion accounts/tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@ def test_email_filter(self):

def test_program_filter(self):
filter_set = StudentFilter(data={"program__title": "Computer Science"})
self.assertEqual(len(filter_set.qs), 1)
self.assertEqual(len(filter_set.qs), 3)
Empty file added accounts/translation.py
Empty file.
14 changes: 14 additions & 0 deletions config/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
# Application definition

DJANGO_APPS = [
"modeltranslation",
"jet.dashboard",
"jet",
"django_extensions",
Expand Down Expand Up @@ -76,6 +77,7 @@
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
"django.middleware.locale.LocaleMiddleware",
"whitenoise.middleware.WhiteNoiseMiddleware", # whitenoise to serve static files
]

Expand Down Expand Up @@ -155,6 +157,16 @@
# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

gettext = lambda s: s
LANGUAGES = (
('ru', gettext('Russia')),
('en', gettext('English')),
)
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale'),
)

MODELTRANSLATION_DEFAULT_LANGUAGE = 'en'
LANGUAGE_CODE = "en-us"

TIME_ZONE = "UTC"
Expand Down Expand Up @@ -251,3 +263,5 @@

STUDENT_ID_PREFIX = config("STUDENT_ID_PREFIX", "ugr")
LECTURER_ID_PREFIX = config("LECTURER_ID_PREFIX", "lec")


22 changes: 22 additions & 0 deletions config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
from django.conf import settings
from django.conf.urls.static import static
from django.views import defaults as default_views
from django.conf.urls.i18n import i18n_patterns
from django.views.i18n import JavaScriptCatalog

admin.site.site_header = "Dj-LMS Admin"

Expand All @@ -20,8 +22,28 @@
path("payments/", include("payments.urls")),
path("accounts/api/", include("accounts.api.urls", namespace="accounts-api")),
path("admin/", admin.site.urls),
path("i18n/", include('django.conf.urls.i18n')),
]

urlpatterns += i18n_patterns(
path("jsi18n/", JavaScriptCatalog.as_view(), name='javascript-catalog'),
path("", include("core.urls")),
path("jet/", include("jet.urls", "jet")), # Django JET URLS
path(
"jet/dashboard/", include("jet.dashboard.urls", "jet-dashboard")
), # Django JET dashboard URLS
path("accounts/", include("accounts.urls")),
path("programs/", include("course.urls")),
path("result/", include("result.urls")),
path("search/", include("search.urls")),
path("quiz/", include("quiz.urls")),
path("payments/", include("payments.urls")),
path("accounts/api/", include("accounts.api.urls", namespace="accounts-api")),
)




if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Expand Down
5 changes: 4 additions & 1 deletion core/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@
from django.contrib.auth.models import Group

from .models import Session, Semester, NewsAndEvents
from modeltranslation.admin import TranslationAdmin

class NewsAndEventsAdmin(TranslationAdmin):
pass

admin.site.register(Semester)
admin.site.register(Session)
admin.site.register(NewsAndEvents)
admin.site.register(NewsAndEvents, NewsAndEventsAdmin)
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 4.0.8 on 2024-04-15 13:36

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('core', '0005_activitylog'),
]

operations = [
migrations.AddField(
model_name='newsandevents',
name='summary_en',
field=models.TextField(blank=True, max_length=200, null=True),
),
migrations.AddField(
model_name='newsandevents',
name='summary_ru',
field=models.TextField(blank=True, max_length=200, null=True),
),
migrations.AddField(
model_name='newsandevents',
name='title_en',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='newsandevents',
name='title_ru',
field=models.CharField(max_length=200, null=True),
),
]
22 changes: 12 additions & 10 deletions core/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,25 @@
from django.core.validators import FileExtensionValidator
from django.contrib.auth.models import AbstractUser
from django.db.models import Q
from django.utils.translation import gettext_lazy as _

NEWS = "News"
EVENTS = "Event"

NEWS = _("News")
EVENTS = _("Event")

POST = (
(NEWS, "News"),
(EVENTS, "Event"),
(NEWS, _("News")),
(EVENTS, _("Event")),
)

FIRST = "First"
SECOND = "Second"
THIRD = "Third"
FIRST = _("First")
SECOND = _("Second")
THIRD = _("Third")

SEMESTER = (
(FIRST, "First"),
(SECOND, "Second"),
(THIRD, "Third"),
(FIRST, _("First")),
(SECOND, _("Second")),
(THIRD, _("Third")),
)


Expand Down
8 changes: 8 additions & 0 deletions core/translation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from modeltranslation.translator import register, TranslationOptions
from .models import NewsAndEvents, ActivityLog

@register(NewsAndEvents)
class NewsAndEventsTranslationOptions(TranslationOptions):
fields = ('title', 'summary',)
empty_values=None

13 changes: 10 additions & 3 deletions course/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,16 @@
from django.contrib.auth.models import Group

from .models import Program, Course, CourseAllocation, Upload
from modeltranslation.admin import TranslationAdmin

class ProgramAdmin(TranslationAdmin):
pass
class CourseAdmin(TranslationAdmin):
pass
class UploadAdmin(TranslationAdmin):
pass

admin.site.register(Program)
admin.site.register(Course)
admin.site.register(Program, ProgramAdmin)
admin.site.register(Course, CourseAdmin)
admin.site.register(CourseAllocation)
admin.site.register(Upload)
admin.site.register(Upload, UploadAdmin)
3 changes: 0 additions & 3 deletions course/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from accounts.models import User
from .models import Program, Course, CourseAllocation, Upload, UploadVideo


class ProgramForm(forms.ModelForm):
class Meta:
model = Program
Expand All @@ -12,8 +11,6 @@ def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields["title"].widget.attrs.update({"class": "form-control"})
self.fields["summary"].widget.attrs.update({"class": "form-control"})


class CourseAddForm(forms.ModelForm):
class Meta:
model = Course
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Generated by Django 4.0.8 on 2024-04-12 11:07

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('course', '0007_alter_upload_file_alter_uploadvideo_video'),
]

operations = [
migrations.AddField(
model_name='program',
name='summary_en',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='program',
name='summary_ru',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='program',
name='title_en',
field=models.CharField(max_length=150, null=True, unique=True),
),
migrations.AddField(
model_name='program',
name='title_ru',
field=models.CharField(max_length=150, null=True, unique=True),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Generated by Django 4.0.8 on 2024-04-14 15:28

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('course', '0008_program_summary_en_program_summary_ru_and_more'),
]

operations = [
migrations.AddField(
model_name='course',
name='summary_en',
field=models.TextField(blank=True, max_length=200, null=True),
),
migrations.AddField(
model_name='course',
name='summary_ru',
field=models.TextField(blank=True, max_length=200, null=True),
),
migrations.AddField(
model_name='course',
name='title_en',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='course',
name='title_ru',
field=models.CharField(max_length=200, null=True),
),
migrations.AddField(
model_name='upload',
name='title_en',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='upload',
name='title_ru',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='uploadvideo',
name='summary_en',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='uploadvideo',
name='summary_ru',
field=models.TextField(blank=True, null=True),
),
migrations.AddField(
model_name='uploadvideo',
name='title_en',
field=models.CharField(max_length=100, null=True),
),
migrations.AddField(
model_name='uploadvideo',
name='title_ru',
field=models.CharField(max_length=100, null=True),
),
]
Loading

0 comments on commit b81ab0d

Please sign in to comment.