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.chat import Chat
|
||||
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)
|
||||
editors = ArrayField(models.TextField(), default=list)
|
||||
languages = ArrayField(models.IntegerField(), default=list)
|
||||
auto_add_new_languages = models.BooleanField(default=True)
|
||||
description = models.TextField(default='')
|
||||
|
||||
@property
|
||||
|
@ -103,6 +103,7 @@ class SetSettingsView(BaseView):
|
||||
|
||||
def post_languages_edit(self):
|
||||
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():
|
||||
if key.startswith("language_"):
|
||||
i = int(key.split("_")[1])
|
||||
|
@ -81,6 +81,14 @@ services:
|
||||
- /sprint-data/solutions:/usr/src/app/solutions
|
||||
- /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:
|
||||
image: mathwave/sprint-repo:sprint
|
||||
command: ./manage.py success_deploy
|
||||
@ -92,3 +100,4 @@ services:
|
||||
- rabbitmq
|
||||
- bot
|
||||
- postgres
|
||||
- apply-languages
|
||||
|
@ -144,6 +144,7 @@
|
||||
<div class="col-12">
|
||||
{% csrf_token %}
|
||||
<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 %}
|
||||
<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 %}
|
||||
|
Loading…
Reference in New Issue
Block a user