mirror of
https://github.com/spbleadersofdigtal/backend.git
synced 2024-11-21 19:16:32 +03:00
major fixes
This commit is contained in:
parent
d784e04ff5
commit
aa82f1d956
5
.env
5
.env
|
@ -1,5 +0,0 @@
|
||||||
DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/pitch_deck_generator
|
|
||||||
CELERY_BROKER_URL=redis://localhost:6379/0
|
|
||||||
REDIS_URL=redis://localhost:6379/1
|
|
||||||
USE_DOCKER=no
|
|
||||||
OPENAI_KEY=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
|
|
17
.envs/.local/.django
Normal file
17
.envs/.local/.django
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# General
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
USE_DOCKER=yes
|
||||||
|
IPYTHONDIR=/app/.ipython
|
||||||
|
DJANGO_READ_DOT_ENV_FILE=no
|
||||||
|
# Redis
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
REDIS_URL=redis://redis:6379/1
|
||||||
|
REDIS_CACHE=rediscache://redis:6379/1
|
||||||
|
CELERY_BROKER_URL=redis://redis:6379/0
|
||||||
|
|
||||||
|
# Celery
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Flower
|
||||||
|
CELERY_FLOWER_USER=debug
|
||||||
|
CELERY_FLOWER_PASSWORD=debug
|
7
.envs/.local/.postgres
Normal file
7
.envs/.local/.postgres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# PostgreSQL
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
POSTGRES_HOST=postgres
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=akarpov
|
||||||
|
POSTGRES_USER=debug
|
||||||
|
POSTGRES_PASSWORD=debug
|
16
.envs/.production/.django
Normal file
16
.envs/.production/.django
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# General
|
||||||
|
# CHANGE ON REAL SERVER
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
USE_DOCKER=yes
|
||||||
|
DJANGO_READ_DOT_ENV_FILE=no
|
||||||
|
# Redis
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
REDIS_URL=redis://redis:6379/0
|
||||||
|
CELERY_BROKER_URL=redis://localhost:6379/0
|
||||||
|
|
||||||
|
# Celery
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Flower
|
||||||
|
CELERY_FLOWER_USER=debug
|
||||||
|
CELERY_FLOWER_PASSWORD=debug
|
7
.envs/.production/.postgres
Normal file
7
.envs/.production/.postgres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# PostgreSQL
|
||||||
|
# ------------------------------------------------------------------------------
|
||||||
|
POSTGRES_HOST=postgres
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_DB=akarpov
|
||||||
|
POSTGRES_USER=debug
|
||||||
|
POSTGRES_PASSWORD=debug
|
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
|
@ -77,4 +77,3 @@ updates:
|
||||||
# Check for updates to GitHub Actions every weekday
|
# Check for updates to GitHub Actions every weekday
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
|
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
||||||
!.gitkeep
|
!.gitkeep
|
||||||
.idea
|
.idea
|
||||||
|
.env
|
||||||
|
|
||||||
### Python template
|
### Python template
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
|
|
8
.idea/.gitignore
vendored
8
.idea/.gitignore
vendored
|
@ -1,8 +0,0 @@
|
||||||
# Default ignored files
|
|
||||||
/shelf/
|
|
||||||
/workspace.xml
|
|
||||||
# Editor-based HTTP Client requests
|
|
||||||
/httpRequests/
|
|
||||||
# Datasource local storage ignored files
|
|
||||||
/dataSources/
|
|
||||||
/dataSources.local.xml
|
|
|
@ -1,24 +0,0 @@
|
||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<profile version="1.0">
|
|
||||||
<option name="myName" value="Project Default" />
|
|
||||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
|
||||||
<inspection_tool class="PyMethodMayBeStaticInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
|
|
||||||
<inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
|
|
||||||
<option name="ignoredPackages">
|
|
||||||
<value>
|
|
||||||
<list size="9">
|
|
||||||
<item index="0" class="java.lang.String" itemvalue="pytest-instafail" />
|
|
||||||
<item index="1" class="java.lang.String" itemvalue="cookiecutter" />
|
|
||||||
<item index="2" class="java.lang.String" itemvalue="binaryornot" />
|
|
||||||
<item index="3" class="java.lang.String" itemvalue="isort" />
|
|
||||||
<item index="4" class="java.lang.String" itemvalue="PyGithub" />
|
|
||||||
<item index="5" class="java.lang.String" itemvalue="pytest-cookies" />
|
|
||||||
<item index="6" class="java.lang.String" itemvalue="gitpython" />
|
|
||||||
<item index="7" class="java.lang.String" itemvalue="tox" />
|
|
||||||
<item index="8" class="java.lang.String" itemvalue="django" />
|
|
||||||
</list>
|
|
||||||
</value>
|
|
||||||
</option>
|
|
||||||
</inspection_tool>
|
|
||||||
</profile>
|
|
||||||
</component>
|
|
|
@ -1,6 +0,0 @@
|
||||||
<component name="InspectionProjectProfileManager">
|
|
||||||
<settings>
|
|
||||||
<option name="USE_PROJECT_PROFILE" value="false" />
|
|
||||||
<version value="1.0" />
|
|
||||||
</settings>
|
|
||||||
</component>
|
|
|
@ -1,4 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Poetry (pitch_deck_generator)" project-jdk-type="Python SDK" />
|
|
||||||
</project>
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/.idea/pitch_deck_generator.iml" filepath="$PROJECT_DIR$/.idea/pitch_deck_generator.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<module type="PYTHON_MODULE" version="4">
|
|
||||||
<component name="FacetManager">
|
|
||||||
<facet type="django" name="Django">
|
|
||||||
<configuration>
|
|
||||||
<option name="rootFolder" value="$MODULE_DIR$" />
|
|
||||||
<option name="settingsModule" value="config/settings/local.py" />
|
|
||||||
<option name="manageScript" value="$MODULE_DIR$/manage.py" />
|
|
||||||
<option name="environment" value="<map/>" />
|
|
||||||
<option name="doNotUseTestRunner" value="false" />
|
|
||||||
<option name="trackFilePattern" value="migrations" />
|
|
||||||
</configuration>
|
|
||||||
</facet>
|
|
||||||
</component>
|
|
||||||
<component name="NewModuleRootManager">
|
|
||||||
<content url="file://$MODULE_DIR$" />
|
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
|
||||||
<component name="PyDocumentationSettings">
|
|
||||||
<option name="format" value="PLAIN" />
|
|
||||||
<option name="myDocStringFormat" value="Plain" />
|
|
||||||
</component>
|
|
||||||
<component name="TemplatesService">
|
|
||||||
<option name="TEMPLATE_CONFIGURATION" value="Django" />
|
|
||||||
</component>
|
|
||||||
</module>
|
|
|
@ -21,7 +21,7 @@ repos:
|
||||||
- id: black
|
- id: black
|
||||||
|
|
||||||
- repo: https://github.com/PyCQA/isort
|
- repo: https://github.com/PyCQA/isort
|
||||||
rev: 5.11.4
|
rev: 5.12.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: isort
|
- id: isort
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import include, path
|
from django.urls import include, path
|
||||||
from django.views import defaults as default_views
|
|
||||||
from django.views.generic import TemplateView
|
|
||||||
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
|
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
|
||||||
from rest_framework.authtoken.views import obtain_auth_token
|
from rest_framework.authtoken.views import obtain_auth_token
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,32 @@
|
||||||
import openai
|
|
||||||
import datetime
|
import datetime
|
||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
|
|
||||||
|
import openai
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
||||||
KEY = settings.OPENAI_KEY
|
KEY = settings.OPENAI_KEY
|
||||||
|
|
||||||
description = """
|
description = """🍀 Что такое Pitch-Deck? Pitch-Deck представляет собой презентацию-тизер проекта/компании для
|
||||||
🍀 Что такое Pitch-Deck?
|
инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного
|
||||||
Pitch-Deck представляет собой презентацию-тизер проекта/компании для инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного финансирования (инвестиций).
|
финансирования (инвестиций). Почему это проблема?
|
||||||
Почему это проблема?
|
|
||||||
|
|
||||||
🍀 Проблема #1. Недостаток средств:
|
🍀 Проблема #1. Недостаток средств: Для многих стартапов ограниченные финансы создают преграду при разработке
|
||||||
Для многих стартапов ограниченные финансы создают преграду при разработке качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и малоинформативной презентации, что затрудняет привлечение инвестиций.
|
качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и
|
||||||
|
копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и
|
||||||
|
малоинформативной презентации, что затрудняет привлечение инвестиций.
|
||||||
|
|
||||||
🍀 Проблема #2. Недостаток экспертизы:
|
🍀 Проблема #2. Недостаток экспертизы: Проблемой для стартапов является недостаток экспертизы для проведения
|
||||||
Проблемой для стартапов является недостаток экспертизы для проведения необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной презентации для привлечения инвестиций.
|
необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные
|
||||||
|
знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной
|
||||||
|
презентации для привлечения инвестиций.
|
||||||
|
|
||||||
🍀 Проблема #3. Недостаток времени
|
🍀 Проблема #3. Недостаток времени Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет
|
||||||
Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью погружены в процесс разработки и улучшения продукта или сервиса.
|
документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая
|
||||||
|
команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью
|
||||||
|
погружены в процесс разработки и улучшения продукта или сервиса.
|
||||||
|
|
||||||
🍀 ИДЕЯ:
|
🍀 ИДЕЯ: Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под
|
||||||
Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под создание Pitch-Deck.
|
создание Pitch-Deck."""
|
||||||
"""
|
|
||||||
|
|
||||||
names_prompt = """
|
names_prompt = """
|
||||||
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
||||||
|
@ -45,11 +49,11 @@
|
||||||
"""
|
"""
|
||||||
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
По тексту ответь или предположи ответ на вопросы в следющем формате:
|
||||||
{
|
{
|
||||||
'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей',
|
'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей',
|
||||||
'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты',
|
'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты',
|
||||||
'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год},
|
'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год},
|
||||||
'investments_sold': 'На что потратить инвестиции под проект',
|
'investments_sold': 'На что потратить инвестиции под проект',
|
||||||
'financial_indicators': 'Напиши финансовые показатели проекта'
|
'financial_indicators': 'Напиши финансовые показатели проекта'
|
||||||
}
|
}
|
||||||
""",
|
""",
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
|
import pickle
|
||||||
|
|
||||||
from annoy import AnnoyIndex
|
from annoy import AnnoyIndex
|
||||||
from sentence_transformers import SentenceTransformer
|
from sentence_transformers import SentenceTransformer
|
||||||
import pickle
|
|
||||||
|
|
||||||
model = None
|
model = None
|
||||||
data = None
|
data = None
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from pitch_deck_generator.utils.files import user_file_upload_mixin
|
|
||||||
from pitch_deck_generator.utils.generators import generate_charset
|
|
||||||
from pitch_deck_generator.common.signals import (
|
from pitch_deck_generator.common.signals import (
|
||||||
create_cropped_model_image,
|
create_cropped_model_image,
|
||||||
delete_cropped_model_image,
|
delete_cropped_model_image,
|
||||||
update_cropped_model_image,
|
update_cropped_model_image,
|
||||||
)
|
)
|
||||||
|
from pitch_deck_generator.utils.files import user_file_upload_mixin
|
||||||
|
from pitch_deck_generator.utils.generators import generate_charset
|
||||||
|
|
||||||
|
|
||||||
class BaseImageModel(models.Model):
|
class BaseImageModel(models.Model):
|
||||||
|
|
|
@ -7,7 +7,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs):
|
||||||
model = sender
|
model = sender
|
||||||
if created:
|
if created:
|
||||||
if instance.image:
|
if instance.image:
|
||||||
|
|
||||||
crop_model_image.apply_async(
|
crop_model_image.apply_async(
|
||||||
kwargs={
|
kwargs={
|
||||||
"pk": instance.pk,
|
"pk": instance.pk,
|
||||||
|
@ -16,7 +16,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs):
|
||||||
},
|
},
|
||||||
countdown=2,
|
countdown=2,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def update_cropped_model_image(sender, instance, **kwargs):
|
def update_cropped_model_image(sender, instance, **kwargs):
|
||||||
model = sender
|
model = sender
|
||||||
|
@ -30,7 +30,7 @@ def update_cropped_model_image(sender, instance, **kwargs):
|
||||||
# run task to create new cropped image
|
# run task to create new cropped image
|
||||||
if kwargs["update_fields"] != frozenset({"image_cropped"}) and instance:
|
if kwargs["update_fields"] != frozenset({"image_cropped"}) and instance:
|
||||||
if instance.image:
|
if instance.image:
|
||||||
|
|
||||||
crop_model_image.apply_async(
|
crop_model_image.apply_async(
|
||||||
kwargs={
|
kwargs={
|
||||||
"pk": instance.pk,
|
"pk": instance.pk,
|
||||||
|
@ -39,7 +39,7 @@ def update_cropped_model_image(sender, instance, **kwargs):
|
||||||
},
|
},
|
||||||
countdown=2,
|
countdown=2,
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
instance.image_cropped = None
|
instance.image_cropped = None
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from pitch_deck_generator.decks.models import Question, PitchDeck
|
from pitch_deck_generator.decks.models import PitchDeck, Question
|
||||||
|
|
||||||
admin.site.register(PitchDeck)
|
admin.site.register(PitchDeck)
|
||||||
admin.site.register(Question)
|
admin.site.register(Question)
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
from pitch_deck_generator.decks.models import (
|
from pitch_deck_generator.decks.models import (
|
||||||
PitchDeck,
|
PitchDeck,
|
||||||
Question,
|
Question,
|
||||||
QuestionDeckHint,
|
|
||||||
QuestionAnswer,
|
QuestionAnswer,
|
||||||
QuestionAnswerPhoto,
|
QuestionAnswerPhoto,
|
||||||
|
QuestionDeckHint,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
from django.urls import path
|
from django.urls import path
|
||||||
|
|
||||||
from pitch_deck_generator.decks.api.views import (
|
from pitch_deck_generator.decks.api.views import (
|
||||||
|
CreateQuestionAnswerApiView,
|
||||||
|
GetDeckQuestionApiView,
|
||||||
|
GetDeckQuestionHintApiView,
|
||||||
|
GetFirstQuestionApiView,
|
||||||
ListDecksApiView,
|
ListDecksApiView,
|
||||||
RetrievePitchApiView,
|
RetrievePitchApiView,
|
||||||
GetFirstQuestionApiView,
|
|
||||||
GetDeckQuestionApiView,
|
|
||||||
GetDeckQuestionHintApiView, CreateQuestionAnswerApiView,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
app_name = "decks"
|
app_name = "decks"
|
||||||
|
@ -15,6 +16,9 @@
|
||||||
path("<int:id>", RetrievePitchApiView.as_view()),
|
path("<int:id>", RetrievePitchApiView.as_view()),
|
||||||
path("question/<int:deck_id>", GetFirstQuestionApiView.as_view()),
|
path("question/<int:deck_id>", GetFirstQuestionApiView.as_view()),
|
||||||
path("question/<int:deck_id>/<int:question_id>", GetDeckQuestionApiView.as_view()),
|
path("question/<int:deck_id>/<int:question_id>", GetDeckQuestionApiView.as_view()),
|
||||||
path("question/<int:deck_id>/<int:question_id>/", CreateQuestionAnswerApiView.as_view()),
|
path(
|
||||||
|
"question/<int:deck_id>/<int:question_id>/",
|
||||||
|
CreateQuestionAnswerApiView.as_view(),
|
||||||
|
),
|
||||||
path("hint/<int:deck_id>/<int:question_id>", GetDeckQuestionHintApiView.as_view()),
|
path("hint/<int:deck_id>/<int:question_id>", GetDeckQuestionHintApiView.as_view()),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
from rest_framework import generics, status
|
from rest_framework import generics, status
|
||||||
from rest_framework.generics import get_object_or_404
|
from rest_framework.generics import get_object_or_404
|
||||||
|
from rest_framework.parsers import FormParser, JSONParser, MultiPartParser
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
|
|
||||||
|
|
||||||
from pitch_deck_generator.decks.api.serializers import (
|
from pitch_deck_generator.decks.api.serializers import (
|
||||||
|
AnswerSerializer,
|
||||||
BasePitchDeckSerializer,
|
BasePitchDeckSerializer,
|
||||||
|
HintSerializer,
|
||||||
PitchDeckSerializer,
|
PitchDeckSerializer,
|
||||||
QuestionSerializer,
|
QuestionSerializer,
|
||||||
HintSerializer,
|
|
||||||
AnswerSerializer,
|
|
||||||
)
|
)
|
||||||
from pitch_deck_generator.decks.models import PitchDeck, QuestionDeckHint, Question
|
from pitch_deck_generator.decks.models import PitchDeck, Question, QuestionDeckHint
|
||||||
|
|
||||||
|
|
||||||
class ListDecksApiView(generics.ListCreateAPIView):
|
class ListDecksApiView(generics.ListCreateAPIView):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import requests
|
import requests
|
||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
|
|
||||||
from ml.openai_handle import create_name_hint, create_hints
|
from ml.openai_handle import create_hints, create_name_hint
|
||||||
from pitch_deck_generator.decks.models import PitchDeck, Question, QuestionDeckHint
|
from pitch_deck_generator.decks.models import PitchDeck, Question, QuestionDeckHint
|
||||||
|
|
||||||
data_types = {
|
data_types = {
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
|
|
@ -1,3 +0,0 @@
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
# Create your views here.
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.db.models.signals import post_save, post_delete, pre_save
|
from django.db.models.signals import post_delete, post_save, pre_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from pitch_deck_generator.tickets.models import Ticket
|
from pitch_deck_generator.tickets.models import Ticket
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from io import BytesIO
|
from io import BytesIO
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from pitch_deck_generator.users.models import User
|
from pitch_deck_generator.users.models import User
|
||||||
|
|
12
poetry.lock
generated
12
poetry.lock
generated
|
@ -1428,18 +1428,18 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "isort"
|
name = "isort"
|
||||||
version = "5.12.0"
|
version = "5.11.5"
|
||||||
description = "A Python utility / library to sort Python imports."
|
description = "A Python utility / library to sort Python imports."
|
||||||
category = "main"
|
category = "main"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.8.0"
|
python-versions = ">=3.7.0"
|
||||||
files = [
|
files = [
|
||||||
{file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"},
|
{file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"},
|
||||||
{file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"},
|
{file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"},
|
||||||
]
|
]
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
colors = ["colorama (>=0.4.3)"]
|
colors = ["colorama (>=0.4.3,<0.5.0)"]
|
||||||
pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
|
pipfile-deprecated-finder = ["pip-shims (>=0.5.2)", "pipreqs", "requirementslib"]
|
||||||
plugins = ["setuptools"]
|
plugins = ["setuptools"]
|
||||||
requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
requirements-deprecated-finder = ["pip-api", "pipreqs"]
|
||||||
|
@ -3298,4 +3298,4 @@ multidict = ">=4.0"
|
||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = "^3.11"
|
python-versions = "^3.11"
|
||||||
content-hash = "981198feadb63083b31387f32ef93f2ded7098868fe9cd40a9e505a057cf9d1b"
|
content-hash = "31ce390d9b50a16455803f012bd6f7eca984fbec0d0e60404edaea07b5523792"
|
||||||
|
|
|
@ -48,6 +48,7 @@ django-coverage-plugin = "^3.0.0"
|
||||||
pytest-django = "^4.5.2"
|
pytest-django = "^4.5.2"
|
||||||
sentry-sdk = "^1.12.0"
|
sentry-sdk = "^1.12.0"
|
||||||
openai = "^0.27.9"
|
openai = "^0.27.9"
|
||||||
|
isort = "5.11.5"
|
||||||
|
|
||||||
|
|
||||||
[build-system]
|
[build-system]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user