Problemas resolvidos
This commit is contained in:
4
Makefile
4
Makefile
@@ -7,8 +7,6 @@ help:
|
|||||||
@echo "⭐️ help : Exibe esta mensagem"
|
@echo "⭐️ help : Exibe esta mensagem"
|
||||||
@echo "⭐️ run : Executa a aplicação fora do docker"
|
@echo "⭐️ run : Executa a aplicação fora do docker"
|
||||||
@echo "⭐️ run-worker : Executa Celery"
|
@echo "⭐️ run-worker : Executa Celery"
|
||||||
@echo "⭐️ blue : Executa blue"
|
|
||||||
@echo "⭐️ isort : Executa isort"
|
|
||||||
@echo "⭐️ docker-run : Levanta toda a aplicação utilizando Docker"
|
@echo "⭐️ docker-run : Levanta toda a aplicação utilizando Docker"
|
||||||
@echo "⭐️ docker-run-app : Levanta apenas a aplicação utilizando Docker"
|
@echo "⭐️ docker-run-app : Levanta apenas a aplicação utilizando Docker"
|
||||||
@echo "⭐️ docker-run-worker : Levanta apenas o Celery utilizando Docker"
|
@echo "⭐️ docker-run-worker : Levanta apenas o Celery utilizando Docker"
|
||||||
@@ -18,7 +16,7 @@ help:
|
|||||||
@echo "⭐️ collectstatic : Atualiza os arquivos estáticos no bucket"
|
@echo "⭐️ collectstatic : Atualiza os arquivos estáticos no bucket"
|
||||||
@echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――"
|
@echo "―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――"
|
||||||
|
|
||||||
run:
|
run-dev:
|
||||||
@uv run python manage.py runserver 0.0.0.0:7788
|
@uv run python manage.py runserver 0.0.0.0:7788
|
||||||
|
|
||||||
celery:
|
celery:
|
||||||
|
|||||||
37
app/openv.py
Normal file
37
app/openv.py
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
|
from onepasswordconnectsdk.client import Client, new_client_from_environment
|
||||||
|
from onepasswordconnectsdk.models import Item, Vault
|
||||||
|
|
||||||
|
|
||||||
|
class OnePassword:
|
||||||
|
connect_client: Client = new_client_from_environment()
|
||||||
|
vault_title: Optional[str]
|
||||||
|
item_title: str = 'mines'
|
||||||
|
vault: Optional[Vault] = None
|
||||||
|
item: Optional[Item] = None
|
||||||
|
|
||||||
|
def __init__(self, scope: str, item_title=None):
|
||||||
|
if item_title:
|
||||||
|
self.item_title = item_title
|
||||||
|
self.vault_title = scope.lower()
|
||||||
|
|
||||||
|
def get_vault(self) -> Vault:
|
||||||
|
if self.vault:
|
||||||
|
return self.vault
|
||||||
|
self.vault = self.connect_client.get_vault_by_title(self.vault_title)
|
||||||
|
return self.vault
|
||||||
|
|
||||||
|
def get_item(self) -> Item:
|
||||||
|
if self.item:
|
||||||
|
return self.item
|
||||||
|
vault = self.get_vault()
|
||||||
|
self.item = self.connect_client.get_item_by_title(self.item_title, vault.id)
|
||||||
|
return self.item
|
||||||
|
|
||||||
|
def get(self, field: str, default_value=None) -> str | None:
|
||||||
|
item = self.get_item()
|
||||||
|
for f in item.fields:
|
||||||
|
if f.label == field:
|
||||||
|
return f.value
|
||||||
|
return default_value
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import sentry_sdk
|
import sentry_sdk
|
||||||
from sentry_sdk.integrations.django import DjangoIntegration
|
from sentry_sdk.integrations.django import DjangoIntegration
|
||||||
|
|
||||||
from .utils import get_op_config
|
from app.openv import OnePassword
|
||||||
|
|
||||||
op_config = get_op_config()
|
SCOPE = os.environ['SCOPE']
|
||||||
|
OP_ITEM_TITLE = os.environ.get('OP_ITEM_TITLE', 'mines')
|
||||||
|
|
||||||
SCOPE = op_config['settings.SCOPE']
|
op_env = OnePassword(SCOPE, OP_ITEM_TITLE)
|
||||||
|
|
||||||
sentry_sdk.init(
|
sentry_sdk.init(
|
||||||
dsn=op_config['settings.SENTRY_DSN'],
|
dsn=op_env.get('settings.SENTRY_DSN'),
|
||||||
integrations=[DjangoIntegration()],
|
integrations=[DjangoIntegration()],
|
||||||
environment=SCOPE,
|
environment=SCOPE,
|
||||||
send_default_pii=False,
|
send_default_pii=False,
|
||||||
@@ -21,12 +23,12 @@ sentry_sdk.init(
|
|||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = op_config['settings.SECRET_KEY']
|
SECRET_KEY = op_env.get('settings.SECRET_KEY')
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = op_config.get('settings.DEBUG', '0') in ['1', 'true']
|
DEBUG = op_env.get('settings.DEBUG', '0') in ['1', 'true']
|
||||||
|
|
||||||
ALLOWED_HOSTS = op_config.get('settings.ALLOWED_HOSTS', '127.0.0.1,localhost').split(',')
|
ALLOWED_HOSTS = op_env.get('settings.ALLOWED_HOSTS', '127.0.0.1,localhost').split(',')
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
@@ -82,11 +84,11 @@ AUTH_USER_MODEL = 'core.User'
|
|||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.mysql',
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
'NAME': op_config['database.name'],
|
'NAME': op_env.get('database.name'),
|
||||||
'USER': op_config['database.user'],
|
'USER': op_env.get('database.user'),
|
||||||
'PASSWORD': op_config['database.password'],
|
'PASSWORD': op_env.get('database.password'),
|
||||||
'HOST': op_config['database.host'],
|
'HOST': op_env.get('database.host'),
|
||||||
'PORT': op_config['database.port'],
|
'PORT': op_env.get('database.port'),
|
||||||
'OPTIONS': {'charset': 'utf8mb4'},
|
'OPTIONS': {'charset': 'utf8mb4'},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,7 +110,7 @@ AUTH_PASSWORD_VALIDATORS = [
|
|||||||
|
|
||||||
LANGUAGE_CODE = 'en-us'
|
LANGUAGE_CODE = 'en-us'
|
||||||
|
|
||||||
TIME_ZONE = 'UTC'
|
TIME_ZONE = 'America/Sao_Paulo'
|
||||||
|
|
||||||
USE_I18N = True
|
USE_I18N = True
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# Generated by Django 3.1.3 on 2020-11-05 03:03
|
# Generated by Django 3.1.3 on 2020-11-05 03:03
|
||||||
|
|
||||||
import django_mysql.models
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import internal.utils
|
import internal.utils
|
||||||
@@ -46,7 +45,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
'board',
|
'board',
|
||||||
django_mysql.models.JSONField(
|
models.JSONField(
|
||||||
default=internal.utils.empty_list,
|
default=internal.utils.empty_list,
|
||||||
verbose_name='Generated board',
|
verbose_name='Generated board',
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
# Generated by Django 3.1.3 on 2020-11-06 02:25
|
# Generated by Django 3.1.3 on 2020-11-06 02:25
|
||||||
|
|
||||||
import django_mysql.models
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import game.models
|
import game.models
|
||||||
@@ -36,7 +35,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='game',
|
model_name='game',
|
||||||
name='board',
|
name='board',
|
||||||
field=django_mysql.models.JSONField(
|
field=models.JSONField(
|
||||||
default=internal.utils.empty_list,
|
default=internal.utils.empty_list,
|
||||||
help_text='Whe generated board game',
|
help_text='Whe generated board game',
|
||||||
verbose_name='Generated board',
|
verbose_name='Generated board',
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
# Generated by Django 3.1.3 on 2020-11-06 03:54
|
# Generated by Django 3.1.3 on 2020-11-06 03:54
|
||||||
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
import django_mysql.models
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
import game.models
|
import game.models
|
||||||
@@ -49,7 +48,7 @@ class Migration(migrations.Migration):
|
|||||||
),
|
),
|
||||||
(
|
(
|
||||||
'metadata',
|
'metadata',
|
||||||
django_mysql.models.JSONField(
|
models.JSONField(
|
||||||
default=internal.utils.empty_object,
|
default=internal.utils.empty_object,
|
||||||
help_text='Some usefull event metadata',
|
help_text='Some usefull event metadata',
|
||||||
verbose_name='Event metadata',
|
verbose_name='Event metadata',
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
# Generated by Django 3.1.3 on 2020-11-07 01:30
|
# Generated by Django 3.1.3 on 2020-11-07 01:30
|
||||||
|
from django.db import migrations, models
|
||||||
import django_mysql.models
|
|
||||||
from django.db import migrations
|
|
||||||
|
|
||||||
import internal.utils
|
import internal.utils
|
||||||
|
|
||||||
@@ -15,7 +13,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='game',
|
model_name='game',
|
||||||
name='board_progress',
|
name='board_progress',
|
||||||
field=django_mysql.models.JSONField(
|
field=models.JSONField(
|
||||||
default=internal.utils.empty_list,
|
default=internal.utils.empty_list,
|
||||||
help_text='This board is updated at each GameEvent recorded',
|
help_text='This board is updated at each GameEvent recorded',
|
||||||
verbose_name='Progress board',
|
verbose_name='Progress board',
|
||||||
@@ -24,7 +22,7 @@ class Migration(migrations.Migration):
|
|||||||
migrations.AlterField(
|
migrations.AlterField(
|
||||||
model_name='game',
|
model_name='game',
|
||||||
name='board',
|
name='board',
|
||||||
field=django_mysql.models.JSONField(
|
field=models.JSONField(
|
||||||
default=internal.utils.empty_list,
|
default=internal.utils.empty_list,
|
||||||
help_text='The generated board game',
|
help_text='The generated board game',
|
||||||
verbose_name='Generated board',
|
verbose_name='Generated board',
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
from enum import IntEnum
|
from enum import IntEnum
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django_mysql.models import JSONField
|
|
||||||
|
|
||||||
from internal.utils import empty_list
|
from internal.utils import empty_list
|
||||||
|
|
||||||
@@ -33,8 +32,8 @@ class Game(models.Model):
|
|||||||
cols = models.PositiveIntegerField('Board cols', default=10, help_text="Board's total columns")
|
cols = models.PositiveIntegerField('Board cols', default=10, help_text="Board's total columns")
|
||||||
mines = models.PositiveIntegerField('Mines on board', default=5, help_text="Board's total placed mines")
|
mines = models.PositiveIntegerField('Mines on board', default=5, help_text="Board's total placed mines")
|
||||||
|
|
||||||
board = JSONField('Generated board', default=empty_list, help_text='The generated board game')
|
board = models.JSONField('Generated board', default=empty_list, help_text='The generated board game')
|
||||||
board_progress = JSONField(
|
board_progress = models.JSONField(
|
||||||
'Progress board',
|
'Progress board',
|
||||||
default=empty_list,
|
default=empty_list,
|
||||||
help_text='This board is updated at each GameEvent recorded',
|
help_text='This board is updated at each GameEvent recorded',
|
||||||
|
|||||||
Reference in New Issue
Block a user