Compare commits

..

No commits in common. "a79f6cd9f08791801bf068979dca0ea6c59a6ef6" and "c6388b04b2c32d49f7f261d7d0091c5d2c92e088" have entirely different histories.

7 changed files with 30 additions and 117 deletions

View File

@ -6,8 +6,7 @@ services:
platform-nginx:
image: mathwave/sprint-repo:platform
networks:
- common-infra-nginx-development
- configurator-development
- common-infra-nginx
environment:
DB_HOST: "pg.develop.sprinthub.ru"
DB_PASSWORD: $DB_PASSWORD_DEV
@ -75,7 +74,5 @@ services:
order: start-first
networks:
common-infra-nginx-development:
external: true
configurator-development:
external: true
common-infra-nginx:
external: true

View File

@ -7,7 +7,6 @@ services:
image: mathwave/sprint-repo:platform
networks:
- common-infra-nginx
- configurator
environment:
DB_HOST: "pg.sprinthub.ru"
DB_PASSWORD: $DB_PASSWORD_PROD
@ -81,5 +80,3 @@ services:
networks:
common-infra-nginx:
external: true
configurator:
external: true

View File

@ -28,7 +28,7 @@ jobs:
run: docker push mathwave/sprint-repo:platform
deploy-dev:
name: Deploy dev
runs-on: [prod]
runs-on: [dev]
needs: push
steps:
- name: login
@ -46,4 +46,4 @@ jobs:
RABBITMQ_PASSWORD: ${{ secrets.RABBITMQ_PASSWORD_DEV }}
VK_SERVICE_TOKEN: ${{ secrets.VK_SERVICE_TOKEN }}
YANDEX_SERVICE_TOKEN: ${{ secrets.YANDEX_SERVICE_TOKEN }}
run: docker stack deploy --with-registry-auth -c ./.deploy/deploy-dev.yaml platform-development
run: docker stack deploy --with-registry-auth -c ./.deploy/deploy-dev.yaml platform

View File

@ -1,58 +0,0 @@
from requests import get, put, post, delete
from json import dumps
URL_CONFIGS = 'http://configurator/api/v1/configs'
URL_EXPERIMENTS = 'http://configurator/api/v1/experiments'
def get_configs(project, stage):
response = get(URL_CONFIGS, params={'project': project, 'stage': stage})
if response.status_code != 200:
return []
data = response.json()
for config in data:
config['value_pretty'] = dumps(config['value'], indent=4, ensure_ascii=False)
return data
def create_config(project, stage, name):
post(URL_CONFIGS, json={'project': project, 'stage': stage, 'name': name})
def update_config(id, value):
put(URL_CONFIGS, json={'id': id, 'value': value})
def delete_config(id):
delete(URL_CONFIGS, json={'id': id})
def get_experiments(project, stage):
response = get(URL_EXPERIMENTS, params={'project': project, 'stage': stage})
if response.status_code != 200:
return []
data = response.json()
for exp in data:
if exp['condition'] == 'False':
exp['exp_type'] = 0
elif exp['condition'] == 'user.is_superuser':
exp['exp_type'] = 1
elif exp['condition'] == 'user.platform_staff':
exp['exp_type'] = 2
elif exp['condition'] == 'True':
exp['exp_type'] = 3
else:
exp['exp_type'] = 4
return data
def create_experiment(project, stage, name):
post(URL_EXPERIMENTS, json={'project': project, 'stage': stage, 'name': name})
def update_experiment(id, enabled, condition):
put(URL_EXPERIMENTS, json={'id': id, 'enabled': enabled, 'condition': condition})
def delete_experiment(id):
delete(URL_CONFIGS, json={'id': id})

View File

@ -3,7 +3,6 @@ from json import loads
from django.http import HttpResponse, JsonResponse
from BaseLib.BaseView import BaseView
from BaseLib.configurator import *
from Platform import settings
from configs.models import Config
@ -21,35 +20,31 @@ class ConfigsView(BaseView):
return '/configs/?stage=production'
self.stage = self.request.GET['stage']
self.context['stage'] = self.stage
# self.context['configs'] = Config.objects.filter(project=self.request.user.selected_project,
# stage=self.stage).order_by('name')
self.context['configs'] = get_configs(self.request.user.selected_project.name, self.stage)
self.context['configs'] = Config.objects.filter(project=self.request.user.selected_project,
stage=self.stage).order_by('name')
def post_create_config(self):
create_config(self.request.user.selected_project.name, self.stage, self.request.POST['name'])
# Config.objects.create(name=self.request.POST['name'], project=self.request.user.selected_project, stage=self.stage)
Config.objects.create(name=self.request.POST['name'], project=self.request.user.selected_project, stage=self.stage)
return '/configs/?stage=' + self.stage
def post_delete(self):
# config = Config.objects.get(id=self.request.POST['config'])
# config.delete()
delete_config(self.request.POST['config'])
return '/configs/?stage=' + self.stage
config = Config.objects.get(id=self.request.POST['config'])
config.delete()
return '/configs/?stage=' + config.stage
def post_save(self):
data = self.request.POST['data']
# config = Config.objects.get(id=self.request.POST['config'])
config = Config.objects.get(id=self.request.POST['config'])
try:
data = loads(data)
except:
self.context['incorrect_config'] = self.request.POST['config']
self.context['incorrect_config'] = config
self.context['incorrect_data'] = data
self.context['error'] = True
return
update_config(self.request.POST['config'], data)
# config.data = data
# config.save()
return '/configs/?stage=' + self.stage
config.data = data
config.save()
return '/configs/?stage=' + config.stage
def get_config(request):

View File

@ -1,7 +1,6 @@
from django.http import HttpResponse, JsonResponse
from BaseLib.BaseView import BaseView
from BaseLib.configurator import *
from Platform import settings
from experiments.models import Experiment
@ -18,48 +17,31 @@ class ExperimentsView(BaseView):
self.context['stage'] = self.stage
def get(self):
# self.context['experiments'] = Experiment.objects.filter(project=self.request.user.selected_project,
# stage=self.stage).order_by('name')
self.context['experiments'] = get_experiments(self.request.user.selected_project.name, self.stage)
self.context['experiments'] = Experiment.objects.filter(project=self.request.user.selected_project,
stage=self.stage).order_by('name')
def post_create(self):
# Experiment.objects.create(project=self.request.user.selected_project, stage=self.stage, name=self.request.POST['name'])
create_experiment(self.request.user.selected_project.name, self.stage, self.request.POST['name'])
Experiment.objects.create(project=self.request.user.selected_project, stage=self.stage, name=self.request.POST['name'])
return '/experiments/?stage=' + self.stage
def post_delete(self):
# Experiment.objects.get(id=self.request.POST['experiment_id']).delete()
delete_experiment(self.request.POST['experiment_id'])
Experiment.objects.get(id=self.request.POST['experiment_id']).delete()
return '/experiments/?stage=' + self.stage
def post_change(self):
# exp = Experiment.objects.get(id=self.request.POST['experiment_id'])
# exp.enabled = 'enabled' in self.request.POST
# condition = self.request.POST['condition_select']
# if condition == 'Другое (только для техлидов)':
# exp.condition = self.request.POST['condition']
# elif condition == 'Никому':
# exp.condition = 'False'
# elif condition == 'Только админам':
# exp.condition = 'user.is_superuser'
# elif condition == 'Только сотрудникам':
# exp.condition = 'user.platform_staff'
# else:
# exp.condition = 'True'
# exp.save()
enabled = 'enabled' in self.request.POST
exp = Experiment.objects.get(id=self.request.POST['experiment_id'])
exp.enabled = 'enabled' in self.request.POST
condition = self.request.POST['condition_select']
if condition == 'Другое (только для техлидов)':
condition = self.request.POST['condition']
exp.condition = self.request.POST['condition']
elif condition == 'Никому':
condition = 'False'
exp.condition = 'False'
elif condition == 'Только админам':
condition = 'user.is_superuser'
exp.condition = 'user.is_superuser'
elif condition == 'Только сотрудникам':
condition = 'user.platform_staff'
exp.condition = 'user.platform_staff'
else:
condition = 'True'
update_experiment(self.request.POST['experiment_id'], enabled, condition)
exp.condition = 'True'
exp.save()
return '/experiments/?stage=' + self.stage

View File

@ -28,7 +28,7 @@
</div>
{% if error %}
<div class="alert alert-danger" role="alert">
Конфиг не имеет вид JSON!
Конфиг {{ incorrect_config.name }} не имеет вид JSON!
</div>
{% endif %}
<table class="table">
@ -52,7 +52,7 @@
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<textarea style="width: 100%; height: 800px;{% if config.id == incorrect_config %}border: 1px solid #f00;{% endif %}" name="data">{% if config.id == incorrect_config %}{{ incorrect_data }}{% else %}{{ config.value_pretty }}{% endif %}</textarea>
<textarea style="width: 100%; height: 800px;{% if config.id == incorrect_config.id %}border: 1px solid #f00;{% endif %}" name="data">{% if config.id == incorrect_config.id %}{{ incorrect_data }}{% else %}{{ config.data_pretty }}{% endif %}</textarea>
</div>
<div class="modal-footer">
<button type="submit" name="action" value="save" class="btn btn-secondary">Сохранить</button>