apply languages
This commit is contained in:
parent
8cb402d4af
commit
a3eec7c864
20
Main/management/commands/apply_languages.py
Normal file
20
Main/management/commands/apply_languages.py
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
from django.core.management.base import BaseCommand
|
||||||
|
|
||||||
|
from Main.models import LanguageApply, Set
|
||||||
|
from SprintLib.language import languages
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = "starts FileStorage"
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
for language in languages:
|
||||||
|
apply = LanguageApply.objects.filter(language_id=language.id, applied=True).first()
|
||||||
|
if apply is None:
|
||||||
|
for s in Set.objects.filter(auto_add_new_languages=True):
|
||||||
|
if language.id not in s.languages:
|
||||||
|
s.languages.append(language.id)
|
||||||
|
s.save()
|
||||||
|
obj, _ = LanguageApply.objects.get_or_create(language_id=language.id)
|
||||||
|
obj.applied = True
|
||||||
|
obj.save()
|
18
Main/migrations/0019_set_auto_add_new_languages.py
Normal file
18
Main/migrations/0019_set_auto_add_new_languages.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 3.2.4 on 2022-02-11 21:03
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('Main', '0018_set_languages'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='set',
|
||||||
|
name='auto_add_new_languages',
|
||||||
|
field=models.BooleanField(default=True),
|
||||||
|
),
|
||||||
|
]
|
21
Main/migrations/0020_languageapply.py
Normal file
21
Main/migrations/0020_languageapply.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Generated by Django 3.2.4 on 2022-02-11 21:13
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('Main', '0019_set_auto_add_new_languages'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LanguageApply',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('language_id', models.IntegerField()),
|
||||||
|
('applied', models.BooleanField(default=False)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
@ -11,3 +11,4 @@ from Main.models.solution_file import SolutionFile
|
|||||||
from Main.models.friendship import Friendship
|
from Main.models.friendship import Friendship
|
||||||
from Main.models.chat import Chat
|
from Main.models.chat import Chat
|
||||||
from Main.models.message import Message
|
from Main.models.message import Message
|
||||||
|
from Main.models.language_apply import LanguageApply
|
||||||
|
6
Main/models/language_apply.py
Normal file
6
Main/models/language_apply.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class LanguageApply(models.Model):
|
||||||
|
language_id = models.IntegerField()
|
||||||
|
applied = models.BooleanField(default=False)
|
@ -19,6 +19,7 @@ class Set(models.Model):
|
|||||||
end_time = models.DateTimeField(default=None, null=True)
|
end_time = models.DateTimeField(default=None, null=True)
|
||||||
editors = ArrayField(models.TextField(), default=list)
|
editors = ArrayField(models.TextField(), default=list)
|
||||||
languages = ArrayField(models.IntegerField(), default=list)
|
languages = ArrayField(models.IntegerField(), default=list)
|
||||||
|
auto_add_new_languages = models.BooleanField(default=True)
|
||||||
description = models.TextField(default='')
|
description = models.TextField(default='')
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -103,6 +103,7 @@ class SetSettingsView(BaseView):
|
|||||||
|
|
||||||
def post_languages_edit(self):
|
def post_languages_edit(self):
|
||||||
current_languages = self.entities.set.languages
|
current_languages = self.entities.set.languages
|
||||||
|
self.entities.set.auto_add_new_languages = 'auto_add' in self.request.POST
|
||||||
for key, value in self.request.POST.items():
|
for key, value in self.request.POST.items():
|
||||||
if key.startswith("language_"):
|
if key.startswith("language_"):
|
||||||
i = int(key.split("_")[1])
|
i = int(key.split("_")[1])
|
||||||
|
@ -81,6 +81,14 @@ services:
|
|||||||
- /sprint-data/solutions:/usr/src/app/solutions
|
- /sprint-data/solutions:/usr/src/app/solutions
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
|
||||||
|
apply-languages:
|
||||||
|
image: mathwave/sprint-repo:sprint
|
||||||
|
command: ./manage.py apply_languages
|
||||||
|
depends_on:
|
||||||
|
- migrations
|
||||||
|
- web
|
||||||
|
- postgres
|
||||||
|
|
||||||
notify-admin:
|
notify-admin:
|
||||||
image: mathwave/sprint-repo:sprint
|
image: mathwave/sprint-repo:sprint
|
||||||
command: ./manage.py success_deploy
|
command: ./manage.py success_deploy
|
||||||
@ -92,3 +100,4 @@ services:
|
|||||||
- rabbitmq
|
- rabbitmq
|
||||||
- bot
|
- bot
|
||||||
- postgres
|
- postgres
|
||||||
|
- apply-languages
|
||||||
|
@ -144,6 +144,7 @@
|
|||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="hidden" name="action" value="languages_edit">
|
<input type="hidden" name="action" value="languages_edit">
|
||||||
|
<input type="checkbox" name="auto_add" {% if set.auto_add_new_languages %}checked{% endif %}> Обновлять список при добавлении нового языка<br>
|
||||||
{% for language in languages %}
|
{% for language in languages %}
|
||||||
<input type="checkbox" {% if language.id in set.languages %}checked{% endif %} name="language_{{ language.id }}"> <img src="{{ language.logo_url }}" height="24px" width="24px"> {{ language.name }}<br>
|
<input type="checkbox" {% if language.id in set.languages %}checked{% endif %} name="language_{{ language.id }}"> <img src="{{ language.logo_url }}" height="24px" width="24px"> {{ language.name }}<br>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
Loading…
Reference in New Issue
Block a user