diff --git a/Main/context_processors.py b/Main/context_processors.py
index b08cd29..0d750dc 100644
--- a/Main/context_processors.py
+++ b/Main/context_processors.py
@@ -1,6 +1,5 @@
from Sprint.settings import CONSTS
-from SprintLib.language import languages
-def attributes(request):
- return {**CONSTS, "languages": sorted(languages, key=lambda x: x.name)}
+def attributes(_):
+ return CONSTS
diff --git a/Main/migrations/0018_set_languages.py b/Main/migrations/0018_set_languages.py
new file mode 100644
index 0000000..620a198
--- /dev/null
+++ b/Main/migrations/0018_set_languages.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.2.4 on 2022-02-11 18:36
+
+import django.contrib.postgres.fields
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('Main', '0017_auto_20220201_0033'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='set',
+ name='languages',
+ field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), default=list, size=None),
+ ),
+ ]
diff --git a/Main/models/set.py b/Main/models/set.py
index 312f474..aaac318 100644
--- a/Main/models/set.py
+++ b/Main/models/set.py
@@ -7,6 +7,7 @@ from django.db.models.functions import Length
from django.utils import timezone
from Main.models.task import Task
+from SprintLib.language import languages
class Set(models.Model):
@@ -17,8 +18,13 @@ class Set(models.Model):
start_time = models.DateTimeField(default=None, null=True)
end_time = models.DateTimeField(default=None, null=True)
editors = ArrayField(models.TextField(), default=list)
+ languages = ArrayField(models.IntegerField(), default=list)
description = models.TextField(default='')
+ @property
+ def language_models(self):
+ return [languages[lang] for lang in self.languages]
+
@property
def start_time_moscow(self):
if self.start_time is None:
diff --git a/Main/views/SetSettingsView.py b/Main/views/SetSettingsView.py
index 463fd7e..3cacc10 100644
--- a/Main/views/SetSettingsView.py
+++ b/Main/views/SetSettingsView.py
@@ -6,6 +6,7 @@ from django.utils import timezone
from Main.models import SetTask, Set
from SprintLib.BaseView import BaseView, AccessError
+from SprintLib.language import languages
class SetSettingsView(BaseView):
@@ -36,6 +37,7 @@ class SetSettingsView(BaseView):
if self.current_set.end_time
else timezone.now().strftime("%Y-%m-%dT%H:%M")
)
+ self.context['languages'] = languages
def post_save(self):
for key, value in self.request.POST.items():
@@ -97,4 +99,17 @@ class SetSettingsView(BaseView):
for t in to_delete:
self.entities.set.editors.remove(t)
self.entities.set.save()
- return "/admin/task?task_id=" + str(self.entities.task.id)
\ No newline at end of file
+ return "/admin/set?set_id=" + str(self.entities.set.id)
+
+ def post_languages_edit(self):
+ current_languages = self.entities.set.languages
+ for key, value in self.request.POST.items():
+ if key.startswith("language_"):
+ i = int(key.split("_")[1])
+ if i not in current_languages:
+ self.entities.set.languages.append(i)
+ to_delete = [i for i in current_languages if "language_" + str(i) not in self.request.POST]
+ for t in to_delete:
+ self.entities.set.languages.remove(t)
+ self.entities.set.save()
+ return "/admin/set?set_id=" + str(self.entities.set.id)
diff --git a/Main/views/TaskView.py b/Main/views/TaskView.py
index 91cc0d6..28d80ba 100644
--- a/Main/views/TaskView.py
+++ b/Main/views/TaskView.py
@@ -3,6 +3,7 @@ from zipfile import ZipFile
from Main.models import Solution, Progress, SolutionFile
from SprintLib.BaseView import BaseView, AccessError
+from SprintLib.language import languages
from SprintLib.queue import send_testing
from SprintLib.utils import write_bytes
@@ -23,9 +24,13 @@ class TaskView(BaseView):
if hasattr(self.entities, 'setTask'):
self.entities.add('task', self.entities.setTask.task)
self.entities.add('set', self.entities.setTask.set)
+ self.context['languages'] = self.entities.set.language_models
+ for lang in self.context['languages']:
+ print(lang)
else:
if not self.entities.task.public and not self.entities.task.creator == self.request.user and not self.request.user.username in self.entities.task.editors:
raise AccessError()
+ self.context['languages'] = languages
if self.request.method == "GET":
return
self.solution = Solution.objects.create(
diff --git a/templates/set.html b/templates/set.html
index 4023390..b1a28f9 100644
--- a/templates/set.html
+++ b/templates/set.html
@@ -18,4 +18,9 @@
Время окончания: {% if not set.end_time %}без ограничений{% else %}{{ set.end_time_moscow }}{% endif %}
Публичность: {% if set.public %}публично{% else %}приватно{% endif %}
Открытость: {% if set.opened %}открыто{% else %}закрыто{% endif %} для просмотра и решения
+