diff --git a/Main/models/userinfo.py b/Main/models/userinfo.py index 5323784..42de697 100644 --- a/Main/models/userinfo.py +++ b/Main/models/userinfo.py @@ -7,6 +7,7 @@ from Main.models.settask import SetTask from Main.models.subscription import Subscription from Main.models.task import Task from Sprint.settings import CONSTS +from SprintLib.language import languages class UserInfo(models.Model): @@ -21,6 +22,16 @@ class UserInfo(models.Model): telegram_chat_id = models.TextField(default="") notification_solution_result = models.BooleanField(default=False) + @property + def has_favourite_language(self): + return self.favourite_language_id is not None + + @property + def favourite_language(self): + if not self.has_favourite_language: + return None + return languages[self.favourite_language_id] + def _append_task(self, task, tasks): if task.creator == self.user or task.public or self.user.is_superuser: tasks.append(task) diff --git a/Main/templatetags/filters.py b/Main/templatetags/filters.py index a5462d1..9bd6204 100644 --- a/Main/templatetags/filters.py +++ b/Main/templatetags/filters.py @@ -1,5 +1,4 @@ from django import template -from Main.models import SetTask, Subscription register = template.Library() diff --git a/Main/views/AccountView.py b/Main/views/AccountView.py index 66dae2a..9d795df 100644 --- a/Main/views/AccountView.py +++ b/Main/views/AccountView.py @@ -28,7 +28,7 @@ class AccountView(BaseView): return "/account" def post_set_language(self): - lang_id = self.request.POST["language"] + lang_id = int(self.request.POST["language"]) self.request.user.userinfo.favourite_language_id = lang_id if lang_id != -1 else None self.request.user.userinfo.save() return "/account" diff --git a/SprintLib/BaseView.py b/SprintLib/BaseView.py index ec9758f..a4dfec1 100644 --- a/SprintLib/BaseView.py +++ b/SprintLib/BaseView.py @@ -1,5 +1,6 @@ from typing import Optional +from django.db import transaction from django.core.handlers.wsgi import WSGIRequest from django.http import HttpResponseRedirect from django.shortcuts import render @@ -20,6 +21,7 @@ class BaseView: view_file: Optional[str] = None @classmethod + @transaction.atomic def as_view(cls): def execute(request): if request.user.is_authenticated: diff --git a/templates/account.html b/templates/account.html index eaaa599..78c03c6 100644 --- a/templates/account.html +++ b/templates/account.html @@ -79,7 +79,7 @@
{% if owner %}
{% else %} - {% if account.favourite_language_id %} - yes + {% if account.userinfo.has_favourite_language %} +