From 9a207118206b92299ac3b5a6b429d1bd14dfa72b Mon Sep 17 00:00:00 2001
From: Egor Matveev
Date: Sat, 20 Nov 2021 15:24:37 +0300
Subject: [PATCH] fix
---
Main/models/userinfo.py | 11 +++++++++++
Main/templatetags/filters.py | 1 -
Main/views/AccountView.py | 2 +-
SprintLib/BaseView.py | 2 ++
templates/account.html | 10 +++++-----
templates/rating.html | 7 +++++--
6 files changed, 24 insertions(+), 9 deletions(-)
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 %}
+ {{ account.userinfo.favourite_language.name }}
{% else %}
- no
+ Предпочитаемый язык отсутствует
{% endif %}
{% endif %}
- |
+
diff --git a/templates/rating.html b/templates/rating.html
index 5dc768d..a0d3070 100644
--- a/templates/rating.html
+++ b/templates/rating.html
@@ -17,8 +17,11 @@
{{ u.userinfo.place }}
|
-
-
+ |
+
+ {% if u.userinfo.has_favourite_language %}
+
+ {% endif %}
{{ u.username }}
|
|