From aa82f1d956f82166348eb35558fe2b9e29b049d6 Mon Sep 17 00:00:00 2001 From: Alexander-D-Karpov Date: Sat, 26 Aug 2023 09:53:03 +0300 Subject: [PATCH] major fixes --- .env | 5 --- .envs/.local/.django | 17 ++++++++ .envs/.local/.postgres | 7 ++++ .envs/.production/.django | 16 +++++++ .envs/.production/.postgres | 7 ++++ .github/dependabot.yml | 1 - .gitignore | 1 + .idea/.gitignore | 8 ---- .idea/inspectionProfiles/Project_Default.xml | 24 ----------- .../inspectionProfiles/profiles_settings.xml | 6 --- .idea/misc.xml | 4 -- .idea/modules.xml | 8 ---- .idea/pitch_deck_generator.iml | 27 ------------ .pre-commit-config.yaml | 2 +- config/urls.py | 2 - data.json | 2 +- ml/openai_handle.py | 42 ++++++++++--------- ml/search.py | 3 +- pitch_deck_generator/common/models.py | 4 +- pitch_deck_generator/common/signals.py | 8 ++-- pitch_deck_generator/decks/admin.py | 2 +- pitch_deck_generator/decks/api/serializers.py | 2 +- pitch_deck_generator/decks/api/urls.py | 12 ++++-- pitch_deck_generator/decks/api/views.py | 8 ++-- pitch_deck_generator/decks/tasks.py | 2 +- pitch_deck_generator/decks/tests.py | 3 -- pitch_deck_generator/decks/views.py | 3 -- pitch_deck_generator/tickets/signals.py | 2 +- pitch_deck_generator/users/views.py | 1 - pitch_deck_generator/utils/files.py | 2 +- poetry.lock | 12 +++--- pyproject.toml | 1 + 32 files changed, 105 insertions(+), 139 deletions(-) delete mode 100644 .env create mode 100644 .envs/.local/.django create mode 100644 .envs/.local/.postgres create mode 100644 .envs/.production/.django create mode 100644 .envs/.production/.postgres delete mode 100644 .idea/.gitignore delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/pitch_deck_generator.iml diff --git a/.env b/.env deleted file mode 100644 index a3095fb..0000000 --- a/.env +++ /dev/null @@ -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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 diff --git a/.envs/.local/.django b/.envs/.local/.django new file mode 100644 index 0000000..c084e0f --- /dev/null +++ b/.envs/.local/.django @@ -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 diff --git a/.envs/.local/.postgres b/.envs/.local/.postgres new file mode 100644 index 0000000..b2ba40b --- /dev/null +++ b/.envs/.local/.postgres @@ -0,0 +1,7 @@ +# PostgreSQL +# ------------------------------------------------------------------------------ +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 +POSTGRES_DB=akarpov +POSTGRES_USER=debug +POSTGRES_PASSWORD=debug diff --git a/.envs/.production/.django b/.envs/.production/.django new file mode 100644 index 0000000..f27227a --- /dev/null +++ b/.envs/.production/.django @@ -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 diff --git a/.envs/.production/.postgres b/.envs/.production/.postgres new file mode 100644 index 0000000..b2ba40b --- /dev/null +++ b/.envs/.production/.postgres @@ -0,0 +1,7 @@ +# PostgreSQL +# ------------------------------------------------------------------------------ +POSTGRES_HOST=postgres +POSTGRES_PORT=5432 +POSTGRES_DB=akarpov +POSTGRES_USER=debug +POSTGRES_PASSWORD=debug diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 417b5ac..98a0de6 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -77,4 +77,3 @@ updates: # Check for updates to GitHub Actions every weekday schedule: interval: "daily" - diff --git a/.gitignore b/.gitignore index 59d7913..023c565 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ !.gitkeep .idea +.env ### Python template # Byte-compiled / optimized / DLL files diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -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 diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 81077a7..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 105ce2d..0000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 82f0c47..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b824375..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/pitch_deck_generator.iml b/.idea/pitch_deck_generator.iml deleted file mode 100644 index 6e01c4b..0000000 --- a/.idea/pitch_deck_generator.iml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c1aaf0d..a273bdf 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,7 +21,7 @@ repos: - id: black - repo: https://github.com/PyCQA/isort - rev: 5.11.4 + rev: 5.12.0 hooks: - id: isort diff --git a/config/urls.py b/config/urls.py index d47b689..f2713b4 100644 --- a/config/urls.py +++ b/config/urls.py @@ -2,8 +2,6 @@ from django.conf.urls.static import static from django.contrib import admin 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 rest_framework.authtoken.views import obtain_auth_token diff --git a/data.json b/data.json index 9c0d483..2af033f 100644 --- a/data.json +++ b/data.json @@ -1 +1 @@ -[{"model": "auth.permission", "pk": 1, "fields": {"name": "Can add permission", "content_type": 1, "codename": "add_permission"}}, {"model": "auth.permission", "pk": 2, "fields": {"name": "Can change permission", "content_type": 1, "codename": "change_permission"}}, {"model": "auth.permission", "pk": 3, "fields": {"name": "Can delete permission", "content_type": 1, "codename": "delete_permission"}}, {"model": "auth.permission", "pk": 4, "fields": {"name": "Can view permission", "content_type": 1, "codename": "view_permission"}}, {"model": "auth.permission", "pk": 5, "fields": {"name": "Can add group", "content_type": 2, "codename": "add_group"}}, {"model": "auth.permission", "pk": 6, "fields": {"name": "Can change group", "content_type": 2, "codename": "change_group"}}, {"model": "auth.permission", "pk": 7, "fields": {"name": "Can delete group", "content_type": 2, "codename": "delete_group"}}, {"model": "auth.permission", "pk": 8, "fields": {"name": "Can view group", "content_type": 2, "codename": "view_group"}}, {"model": "auth.permission", "pk": 9, "fields": {"name": "Can add content type", "content_type": 3, "codename": "add_contenttype"}}, {"model": "auth.permission", "pk": 10, "fields": {"name": "Can change content type", "content_type": 3, "codename": "change_contenttype"}}, {"model": "auth.permission", "pk": 11, "fields": {"name": "Can delete content type", "content_type": 3, "codename": "delete_contenttype"}}, {"model": "auth.permission", "pk": 12, "fields": {"name": "Can view content type", "content_type": 3, "codename": "view_contenttype"}}, {"model": "auth.permission", "pk": 13, "fields": {"name": "Can add session", "content_type": 4, "codename": "add_session"}}, {"model": "auth.permission", "pk": 14, "fields": {"name": "Can change session", "content_type": 4, "codename": "change_session"}}, {"model": "auth.permission", "pk": 15, "fields": {"name": "Can delete session", "content_type": 4, "codename": "delete_session"}}, {"model": "auth.permission", "pk": 16, "fields": {"name": "Can view session", "content_type": 4, "codename": "view_session"}}, {"model": "auth.permission", "pk": 17, "fields": {"name": "Can add site", "content_type": 5, "codename": "add_site"}}, {"model": "auth.permission", "pk": 18, "fields": {"name": "Can change site", "content_type": 5, "codename": "change_site"}}, {"model": "auth.permission", "pk": 19, "fields": {"name": "Can delete site", "content_type": 5, "codename": "delete_site"}}, {"model": "auth.permission", "pk": 20, "fields": {"name": "Can view site", "content_type": 5, "codename": "view_site"}}, {"model": "auth.permission", "pk": 21, "fields": {"name": "Can add log entry", "content_type": 6, "codename": "add_logentry"}}, {"model": "auth.permission", "pk": 22, "fields": {"name": "Can change log entry", "content_type": 6, "codename": "change_logentry"}}, {"model": "auth.permission", "pk": 23, "fields": {"name": "Can delete log entry", "content_type": 6, "codename": "delete_logentry"}}, {"model": "auth.permission", "pk": 24, "fields": {"name": "Can view log entry", "content_type": 6, "codename": "view_logentry"}}, {"model": "auth.permission", "pk": 25, "fields": {"name": "Can add crontab", "content_type": 7, "codename": "add_crontabschedule"}}, {"model": "auth.permission", "pk": 26, "fields": {"name": "Can change crontab", "content_type": 7, "codename": "change_crontabschedule"}}, {"model": "auth.permission", "pk": 27, "fields": {"name": "Can delete crontab", "content_type": 7, "codename": "delete_crontabschedule"}}, {"model": "auth.permission", "pk": 28, "fields": {"name": "Can view crontab", "content_type": 7, "codename": "view_crontabschedule"}}, {"model": "auth.permission", "pk": 29, "fields": {"name": "Can add interval", "content_type": 8, "codename": "add_intervalschedule"}}, {"model": "auth.permission", "pk": 30, "fields": {"name": "Can change interval", "content_type": 8, "codename": "change_intervalschedule"}}, {"model": "auth.permission", "pk": 31, "fields": {"name": "Can delete interval", "content_type": 8, "codename": "delete_intervalschedule"}}, {"model": "auth.permission", "pk": 32, "fields": {"name": "Can view interval", "content_type": 8, "codename": "view_intervalschedule"}}, {"model": "auth.permission", "pk": 33, "fields": {"name": "Can add periodic task", "content_type": 9, "codename": "add_periodictask"}}, {"model": "auth.permission", "pk": 34, "fields": {"name": "Can change periodic task", "content_type": 9, "codename": "change_periodictask"}}, {"model": "auth.permission", "pk": 35, "fields": {"name": "Can delete periodic task", "content_type": 9, "codename": "delete_periodictask"}}, {"model": "auth.permission", "pk": 36, "fields": {"name": "Can view periodic task", "content_type": 9, "codename": "view_periodictask"}}, {"model": "auth.permission", "pk": 37, "fields": {"name": "Can add periodic tasks", "content_type": 10, "codename": "add_periodictasks"}}, {"model": "auth.permission", "pk": 38, "fields": {"name": "Can change periodic tasks", "content_type": 10, "codename": "change_periodictasks"}}, {"model": "auth.permission", "pk": 39, "fields": {"name": "Can delete periodic tasks", "content_type": 10, "codename": "delete_periodictasks"}}, {"model": "auth.permission", "pk": 40, "fields": {"name": "Can view periodic tasks", "content_type": 10, "codename": "view_periodictasks"}}, {"model": "auth.permission", "pk": 41, "fields": {"name": "Can add solar event", "content_type": 11, "codename": "add_solarschedule"}}, {"model": "auth.permission", "pk": 42, "fields": {"name": "Can change solar event", "content_type": 11, "codename": "change_solarschedule"}}, {"model": "auth.permission", "pk": 43, "fields": {"name": "Can delete solar event", "content_type": 11, "codename": "delete_solarschedule"}}, {"model": "auth.permission", "pk": 44, "fields": {"name": "Can view solar event", "content_type": 11, "codename": "view_solarschedule"}}, {"model": "auth.permission", "pk": 45, "fields": {"name": "Can add clocked", "content_type": 12, "codename": "add_clockedschedule"}}, {"model": "auth.permission", "pk": 46, "fields": {"name": "Can change clocked", "content_type": 12, "codename": "change_clockedschedule"}}, {"model": "auth.permission", "pk": 47, "fields": {"name": "Can delete clocked", "content_type": 12, "codename": "delete_clockedschedule"}}, {"model": "auth.permission", "pk": 48, "fields": {"name": "Can view clocked", "content_type": 12, "codename": "view_clockedschedule"}}, {"model": "auth.permission", "pk": 49, "fields": {"name": "Can add Token", "content_type": 13, "codename": "add_token"}}, {"model": "auth.permission", "pk": 50, "fields": {"name": "Can change Token", "content_type": 13, "codename": "change_token"}}, {"model": "auth.permission", "pk": 51, "fields": {"name": "Can delete Token", "content_type": 13, "codename": "delete_token"}}, {"model": "auth.permission", "pk": 52, "fields": {"name": "Can view Token", "content_type": 13, "codename": "view_token"}}, {"model": "auth.permission", "pk": 53, "fields": {"name": "Can add token", "content_type": 14, "codename": "add_tokenproxy"}}, {"model": "auth.permission", "pk": 54, "fields": {"name": "Can change token", "content_type": 14, "codename": "change_tokenproxy"}}, {"model": "auth.permission", "pk": 55, "fields": {"name": "Can delete token", "content_type": 14, "codename": "delete_tokenproxy"}}, {"model": "auth.permission", "pk": 56, "fields": {"name": "Can view token", "content_type": 14, "codename": "view_tokenproxy"}}, {"model": "auth.permission", "pk": 57, "fields": {"name": "Can add user", "content_type": 15, "codename": "add_user"}}, {"model": "auth.permission", "pk": 58, "fields": {"name": "Can change user", "content_type": 15, "codename": "change_user"}}, {"model": "auth.permission", "pk": 59, "fields": {"name": "Can delete user", "content_type": 15, "codename": "delete_user"}}, {"model": "auth.permission", "pk": 60, "fields": {"name": "Can view user", "content_type": 15, "codename": "view_user"}}, {"model": "auth.permission", "pk": 61, "fields": {"name": "Can add ticket", "content_type": 16, "codename": "add_ticket"}}, {"model": "auth.permission", "pk": 62, "fields": {"name": "Can change ticket", "content_type": 16, "codename": "change_ticket"}}, {"model": "auth.permission", "pk": 63, "fields": {"name": "Can delete ticket", "content_type": 16, "codename": "delete_ticket"}}, {"model": "auth.permission", "pk": 64, "fields": {"name": "Can view ticket", "content_type": 16, "codename": "view_ticket"}}, {"model": "auth.permission", "pk": 65, "fields": {"name": "Can add question answer", "content_type": 17, "codename": "add_questionanswer"}}, {"model": "auth.permission", "pk": 66, "fields": {"name": "Can change question answer", "content_type": 17, "codename": "change_questionanswer"}}, {"model": "auth.permission", "pk": 67, "fields": {"name": "Can delete question answer", "content_type": 17, "codename": "delete_questionanswer"}}, {"model": "auth.permission", "pk": 68, "fields": {"name": "Can view question answer", "content_type": 17, "codename": "view_questionanswer"}}, {"model": "auth.permission", "pk": 69, "fields": {"name": "Can add question deck hint", "content_type": 18, "codename": "add_questiondeckhint"}}, {"model": "auth.permission", "pk": 70, "fields": {"name": "Can change question deck hint", "content_type": 18, "codename": "change_questiondeckhint"}}, {"model": "auth.permission", "pk": 71, "fields": {"name": "Can delete question deck hint", "content_type": 18, "codename": "delete_questiondeckhint"}}, {"model": "auth.permission", "pk": 72, "fields": {"name": "Can view question deck hint", "content_type": 18, "codename": "view_questiondeckhint"}}, {"model": "auth.permission", "pk": 73, "fields": {"name": "Can add question", "content_type": 19, "codename": "add_question"}}, {"model": "auth.permission", "pk": 74, "fields": {"name": "Can change question", "content_type": 19, "codename": "change_question"}}, {"model": "auth.permission", "pk": 75, "fields": {"name": "Can delete question", "content_type": 19, "codename": "delete_question"}}, {"model": "auth.permission", "pk": 76, "fields": {"name": "Can view question", "content_type": 19, "codename": "view_question"}}, {"model": "auth.permission", "pk": 77, "fields": {"name": "Can add pitch deck", "content_type": 20, "codename": "add_pitchdeck"}}, {"model": "auth.permission", "pk": 78, "fields": {"name": "Can change pitch deck", "content_type": 20, "codename": "change_pitchdeck"}}, {"model": "auth.permission", "pk": 79, "fields": {"name": "Can delete pitch deck", "content_type": 20, "codename": "delete_pitchdeck"}}, {"model": "auth.permission", "pk": 80, "fields": {"name": "Can view pitch deck", "content_type": 20, "codename": "view_pitchdeck"}}, {"model": "auth.permission", "pk": 81, "fields": {"name": "Can add question answer photo", "content_type": 21, "codename": "add_questionanswerphoto"}}, {"model": "auth.permission", "pk": 82, "fields": {"name": "Can change question answer photo", "content_type": 21, "codename": "change_questionanswerphoto"}}, {"model": "auth.permission", "pk": 83, "fields": {"name": "Can delete question answer photo", "content_type": 21, "codename": "delete_questionanswerphoto"}}, {"model": "auth.permission", "pk": 84, "fields": {"name": "Can view question answer photo", "content_type": 21, "codename": "view_questionanswerphoto"}}, {"model": "contenttypes.contenttype", "pk": 1, "fields": {"app_label": "auth", "model": "permission"}}, {"model": "contenttypes.contenttype", "pk": 2, "fields": {"app_label": "auth", "model": "group"}}, {"model": "contenttypes.contenttype", "pk": 3, "fields": {"app_label": "contenttypes", "model": "contenttype"}}, {"model": "contenttypes.contenttype", "pk": 4, "fields": {"app_label": "sessions", "model": "session"}}, {"model": "contenttypes.contenttype", "pk": 5, "fields": {"app_label": "sites", "model": "site"}}, {"model": "contenttypes.contenttype", "pk": 6, "fields": {"app_label": "admin", "model": "logentry"}}, {"model": "contenttypes.contenttype", "pk": 7, "fields": {"app_label": "django_celery_beat", "model": "crontabschedule"}}, {"model": "contenttypes.contenttype", "pk": 8, "fields": {"app_label": "django_celery_beat", "model": "intervalschedule"}}, {"model": "contenttypes.contenttype", "pk": 9, "fields": {"app_label": "django_celery_beat", "model": "periodictask"}}, {"model": "contenttypes.contenttype", "pk": 10, "fields": {"app_label": "django_celery_beat", "model": "periodictasks"}}, {"model": "contenttypes.contenttype", "pk": 11, "fields": {"app_label": "django_celery_beat", "model": "solarschedule"}}, {"model": "contenttypes.contenttype", "pk": 12, "fields": {"app_label": "django_celery_beat", "model": "clockedschedule"}}, {"model": "contenttypes.contenttype", "pk": 13, "fields": {"app_label": "authtoken", "model": "token"}}, {"model": "contenttypes.contenttype", "pk": 14, "fields": {"app_label": "authtoken", "model": "tokenproxy"}}, {"model": "contenttypes.contenttype", "pk": 15, "fields": {"app_label": "users", "model": "user"}}, {"model": "contenttypes.contenttype", "pk": 16, "fields": {"app_label": "tickets", "model": "ticket"}}, {"model": "contenttypes.contenttype", "pk": 17, "fields": {"app_label": "decks", "model": "questionanswer"}}, {"model": "contenttypes.contenttype", "pk": 18, "fields": {"app_label": "decks", "model": "questiondeckhint"}}, {"model": "contenttypes.contenttype", "pk": 19, "fields": {"app_label": "decks", "model": "question"}}, {"model": "contenttypes.contenttype", "pk": 20, "fields": {"app_label": "decks", "model": "pitchdeck"}}, {"model": "contenttypes.contenttype", "pk": 21, "fields": {"app_label": "decks", "model": "questionanswerphoto"}}, {"model": "sessions.session", "pk": "75z16u4n75l7o7jcsrobft66frywjvlc", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZdsT:cvn4vsjjU7oKbOZKq3HnIl98anNkP43BShP9zfCWUrI", "expire_date": "2023-09-08T20:57:57.927Z"}}, {"model": "sessions.session", "pk": "ka6lsaaq1bsbr50dtucz995u30ekysjw", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZbw6:AV3MS-ko0vJLg_C25wYHdF5wMB799Co8tz0NiKQbpfA", "expire_date": "2023-09-08T18:53:34.076Z"}}, {"model": "sessions.session", "pk": "vrvvq92raoct0qwyowqo01u24u4sitkq", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZdlJ:5X7wA2NKn8Hb_aWLOhkjiBVZhDpLW7EXIat9KsJaRTE", "expire_date": "2023-09-08T20:50:33.923Z"}}, {"model": "sites.site", "pk": 1, "fields": {"domain": "pitch_deck_generator", "name": ""}}, {"model": "admin.logentry", "pk": 1, "fields": {"action_time": "2023-08-25T19:08:01.907Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 2, "fields": {"action_time": "2023-08-25T19:09:57.289Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "2 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 3, "fields": {"action_time": "2023-08-25T19:10:22.750Z", "user": 1, "content_type": 19, "object_id": "3", "object_repr": "3 - Какие проблемы решает ваш продукт - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 4, "fields": {"action_time": "2023-08-25T19:10:46.987Z", "user": 1, "content_type": 19, "object_id": "4", "object_repr": "4 - Продолжите предложение: Актуальность проблемы подтверждается тем фактом, что... - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 5, "fields": {"action_time": "2023-08-25T19:13:56.096Z", "user": 1, "content_type": 19, "object_id": "5", "object_repr": "5 - Как вы решаете эту проблему - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 6, "fields": {"action_time": "2023-08-25T19:14:38.412Z", "user": 1, "content_type": 19, "object_id": "6", "object_repr": "6 - Как работает ваше решение - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 7, "fields": {"action_time": "2023-08-25T19:14:54.637Z", "user": 1, "content_type": 19, "object_id": "7", "object_repr": "7 - Когда проблема будет решена, какова будет ценность для ваших пользователей - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 8, "fields": {"action_time": "2023-08-25T19:21:18.743Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "8 - Рынок, TAM, SAM, SOM - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 9, "fields": {"action_time": "2023-08-25T19:21:32.468Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "8 - Рынок, TAM, SAM, SOM - multiple_scroll", "action_flag": 2, "change_message": "[]"}}, {"model": "admin.logentry", "pk": 10, "fields": {"action_time": "2023-08-25T19:24:15.614Z", "user": 1, "content_type": 19, "object_id": "9", "object_repr": "9 - Какой процент рынка сейчас и через 3 года - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 11, "fields": {"action_time": "2023-08-25T19:28:23.693Z", "user": 1, "content_type": 19, "object_id": "10", "object_repr": "10 - Текущее состояние проекта - select", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 12, "fields": {"action_time": "2023-08-25T19:29:15.772Z", "user": 1, "content_type": 19, "object_id": "11", "object_repr": "11 - На чем вы зарабатываете? Сколько и за что вам платят клиенты - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 13, "fields": {"action_time": "2023-08-25T19:40:28.145Z", "user": 1, "content_type": 19, "object_id": "12", "object_repr": "13 - CAC, LTV - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 14, "fields": {"action_time": "2023-08-25T19:42:59.297Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Order\"]}}]"}}, {"model": "admin.logentry", "pk": 15, "fields": {"action_time": "2023-08-25T19:43:44.276Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Order\"]}}]"}}, {"model": "admin.logentry", "pk": 16, "fields": {"action_time": "2023-08-25T19:46:25.446Z", "user": 1, "content_type": 19, "object_id": "13", "object_repr": "2 - Бизнес модель стартапа: B2B или B2C - select", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 17, "fields": {"action_time": "2023-08-25T19:46:44.235Z", "user": 1, "content_type": 19, "object_id": "14", "object_repr": "3 - Категория проекта - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 18, "fields": {"action_time": "2023-08-25T19:52:51.108Z", "user": 1, "content_type": 19, "object_id": "15", "object_repr": "16 - Roadmap, опиши цели и дедлайны - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 19, "fields": {"action_time": "2023-08-25T19:54:40.799Z", "user": 1, "content_type": 19, "object_id": "16", "object_repr": "17 - Сколько денег от инвесторов вы уже получили - number", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 20, "fields": {"action_time": "2023-08-25T19:54:55.205Z", "user": 1, "content_type": 19, "object_id": "17", "object_repr": "18 - Кто были вашими инвесторами - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 21, "fields": {"action_time": "2023-08-25T19:57:27.904Z", "user": 1, "content_type": 19, "object_id": "18", "object_repr": "19 - Сколько инвестиций вы планируете получить - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 22, "fields": {"action_time": "2023-08-25T19:58:02.798Z", "user": 1, "content_type": 19, "object_id": "19", "object_repr": "20 - Ссылка на фин модель - link", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 23, "fields": {"action_time": "2023-08-25T19:59:31.733Z", "user": 1, "content_type": 19, "object_id": "20", "object_repr": "21 - Оценка вашей компании - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 24, "fields": {"action_time": "2023-08-25T19:59:45.637Z", "user": 1, "content_type": 19, "object_id": "21", "object_repr": "22 - На что вы потратите полученные инвестиции - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 25, "fields": {"action_time": "2023-08-25T20:02:24.328Z", "user": 1, "content_type": 19, "object_id": "22", "object_repr": "23 - Какое количество времени потребуется на освоение инвестиционных денег - date", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 26, "fields": {"action_time": "2023-08-25T20:03:01.609Z", "user": 1, "content_type": 19, "object_id": "23", "object_repr": "24 - Чего добьется ваша команда когда освоит инвестиции? - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 27, "fields": {"action_time": "2023-08-25T20:03:28.429Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "10 - TAM, SAM, SOM - multiple_scroll", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Text\", \"Params\", \"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 28, "fields": {"action_time": "2023-08-25T20:04:39.109Z", "user": 1, "content_type": 19, "object_id": "24", "object_repr": "25 - Какой оценки достигнет ваша компания когда потратит инвестиции - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 29, "fields": {"action_time": "2023-08-25T20:27:38.451Z", "user": 1, "content_type": 19, "object_id": "25", "object_repr": "26 - Какая твоя роль в команде? за что ты отвественен? напиши свой контакт - photo_description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 30, "fields": {"action_time": "2023-08-25T20:37:42.730Z", "user": 1, "content_type": 19, "object_id": "26", "object_repr": "27 - Расскажи о своих сокомандниках. Кто они, чем занимаются в проекте - multiple_photo_description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 31, "fields": {"action_time": "2023-08-25T20:39:00.270Z", "user": 1, "content_type": 19, "object_id": "27", "object_repr": "28 - Расскажи о своих конкурентах - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 32, "fields": {"action_time": "2023-08-25T20:39:16.423Z", "user": 1, "content_type": 19, "object_id": "28", "object_repr": "29 - Какие сильные стороны есть у ваших конкурентов - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 33, "fields": {"action_time": "2023-08-25T20:39:30.009Z", "user": 1, "content_type": 19, "object_id": "29", "object_repr": "30 - И какие слабые - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 34, "fields": {"action_time": "2023-08-25T20:43:19.246Z", "user": 1, "content_type": 19, "object_id": "30", "object_repr": "31 - Какие у вас есть преимущества над конкурентами - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 35, "fields": {"action_time": "2023-08-25T20:46:22.207Z", "user": 1, "content_type": 19, "object_id": "31", "object_repr": "32 - Отправьте скриншоты работы вашего приложения - multiple_photo", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 36, "fields": {"action_time": "2023-08-25T20:46:38.018Z", "user": 1, "content_type": 19, "object_id": "32", "object_repr": "33 - Пришлите дополнительные ссылки на контент, связанный с вашим проектом (это могут быть ссылки на соц сети, научные публикации итп) - multiple link description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 37, "fields": {"action_time": "2023-08-25T21:06:02.091Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 38, "fields": {"action_time": "2023-08-25T21:06:58.298Z", "user": 1, "content_type": 19, "object_id": "14", "object_repr": "3 - Категория проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 39, "fields": {"action_time": "2023-08-25T21:07:03.973Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "4 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 40, "fields": {"action_time": "2023-08-25T21:10:32.548Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "4 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 41, "fields": {"action_time": "2023-08-25T21:10:39.155Z", "user": 1, "content_type": 19, "object_id": "3", "object_repr": "5 - Какие проблемы решает ваш продукт - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 42, "fields": {"action_time": "2023-08-25T21:16:53.816Z", "user": 1, "content_type": 19, "object_id": "33", "object_repr": "14 - Финансовые показатели - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 43, "fields": {"action_time": "2023-08-25T21:22:49.665Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "10 - TAM, SAM, SOM - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 44, "fields": {"action_time": "2023-08-25T21:23:03.697Z", "user": 1, "content_type": 19, "object_id": "9", "object_repr": "11 - Какой процент рынка сейчас и через 3 года - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 45, "fields": {"action_time": "2023-08-25T21:24:03.871Z", "user": 1, "content_type": 19, "object_id": "12", "object_repr": "15 - CAC, LTV - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 46, "fields": {"action_time": "2023-08-25T21:24:28.515Z", "user": 1, "content_type": 19, "object_id": "18", "object_repr": "19 - Сколько инвестиций вы планируете получить - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 47, "fields": {"action_time": "2023-08-25T21:25:24.812Z", "user": 1, "content_type": 19, "object_id": "20", "object_repr": "21 - Оценка вашей компании - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 48, "fields": {"action_time": "2023-08-25T21:26:05.687Z", "user": 1, "content_type": 19, "object_id": "24", "object_repr": "25 - Какой оценки достигнет ваша компания когда потратит инвестиции - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "users.user", "pk": 1, "fields": {"password": "argon2$argon2id$v=19$m=102400,t=2,p=8$b0RmZ29uTjZyVjJneW5PUDkzeFMycQ$kgKSTHjF/+/99hUGVyauNyfKbs4BqzQTF11omb/23Mw", "last_login": "2023-08-25T20:57:57.881Z", "is_superuser": true, "username": "sanspie", "email": "sanspie@akarpov.ru", "is_staff": true, "is_active": true, "date_joined": "2023-08-25T18:53:28.158Z", "groups": [], "user_permissions": []}}, {"model": "decks.pitchdeck", "pk": 1, "fields": {"name": "", "description": "123", "questions": {}, "logo": "", "styles": "", "presentation": "", "meta_info": {}, "created": "2023-08-25T18:47:05.001Z", "updated": "2023-08-25T18:47:05.001Z"}}, {"model": "decks.question", "pk": 1, "fields": {"order": 1, "text": "Название проекта", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 100}, "inner_tag": "names"}}, {"model": "decks.question", "pk": 2, "fields": {"order": 4, "text": "Кто пользуется/будет пользоваться вашим продуктом", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 300}, "inner_tag": "users"}}, {"model": "decks.question", "pk": 3, "fields": {"order": 5, "text": "Какие проблемы решает ваш продукт", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 300}, "inner_tag": "problems"}}, {"model": "decks.question", "pk": 4, "fields": {"order": 6, "text": "Продолжите предложение: Актуальность проблемы подтверждается тем фактом, что...", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "actuality"}}, {"model": "decks.question", "pk": 5, "fields": {"order": 7, "text": "Как вы решаете эту проблему", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "solve"}}, {"model": "decks.question", "pk": 6, "fields": {"order": 8, "text": "Как работает ваше решение", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "works"}}, {"model": "decks.question", "pk": 7, "fields": {"order": 9, "text": "Когда проблема будет решена, какова будет ценность для ваших пользователей", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "awards"}}, {"model": "decks.question", "pk": 8, "fields": {"order": 10, "text": "TAM, SAM, SOM", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"name": "TAM", "slug": "tam", "max_value": 100000000000, "min_value": 10000000}, {"name": "SAM", "slug": "sam", "max_value": 100000000000, "min_value": 10000000}, {"name": "SOM", "slug": "som", "max_value": 100000000000, "min_value": 10000000}]}, "inner_tag": "market_values"}}, {"model": "decks.question", "pk": 9, "fields": {"order": 11, "text": "Какой процент рынка сейчас и через 3 года", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"name": "Сейчас", "slug": "now", "max_value": 1, "min_value": 0}, {"name": "Через 3 года", "slug": "then", "max_value": 1, "min_value": 0}]}, "inner_tag": "percentage"}}, {"model": "decks.question", "pk": 10, "fields": {"order": 12, "text": "Текущее состояние проекта", "type": "select", "hint": false, "required": true, "params": {"options": ["MVP", "MVP", "Pre seed", "Seed", "A Round", "B Round"]}, "inner_tag": "project_stage"}}, {"model": "decks.question", "pk": 11, "fields": {"order": 13, "text": "На чем вы зарабатываете? Сколько и за что вам платят клиенты", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "money"}}, {"model": "decks.question", "pk": 12, "fields": {"order": 15, "text": "CAC, LTV", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"cac": "market", "name": "Рынок", "max_value": 200000, "min_value": 2}, {"name": "TAM", "slug": "ltv", "max_value": 200000, "min_value": 2}]}, "inner_tag": "users_metrics"}}, {"model": "decks.question", "pk": 13, "fields": {"order": 2, "text": "Бизнес модель стартапа: B2B или B2C", "type": "select", "hint": false, "required": true, "params": {"options": ["B2B", "B2C"]}, "inner_tag": "type"}}, {"model": "decks.question", "pk": 14, "fields": {"order": 3, "text": "Категория проекта", "type": "text", "hint": false, "required": true, "params": null, "inner_tag": "category"}}, {"model": "decks.question", "pk": 15, "fields": {"order": 16, "text": "Roadmap, опиши цели и дедлайны", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "aims"}}, {"model": "decks.question", "pk": 16, "fields": {"order": 17, "text": "Сколько денег от инвесторов вы уже получили", "type": "number", "hint": false, "required": true, "params": null, "inner_tag": "money_recieved"}}, {"model": "decks.question", "pk": 17, "fields": {"order": 18, "text": "Кто были вашими инвесторами", "type": "text", "hint": false, "required": true, "params": null, "inner_tag": "past_investors"}}, {"model": "decks.question", "pk": 18, "fields": {"order": 19, "text": "Сколько инвестиций вы планируете получить", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 200000000, "min_value": 20000}, "inner_tag": "how_much_investments"}}, {"model": "decks.question", "pk": 19, "fields": {"order": 20, "text": "Ссылка на фин модель", "type": "link", "hint": false, "required": true, "params": null, "inner_tag": "finance_model"}}, {"model": "decks.question", "pk": 20, "fields": {"order": 21, "text": "Оценка вашей компании", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 2000000000, "min_value": 200000}, "inner_tag": "company_value"}}, {"model": "decks.question", "pk": 21, "fields": {"order": 22, "text": "На что вы потратите полученные инвестиции", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "investments_sold"}}, {"model": "decks.question", "pk": 22, "fields": {"order": 23, "text": "Какое количество времени потребуется на освоение инвестиционных денег", "type": "date", "hint": false, "required": true, "params": null, "inner_tag": "time_to_spend"}}, {"model": "decks.question", "pk": 23, "fields": {"order": 24, "text": "Чего добьется ваша команда когда освоит инвестиции?", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "achieve"}}, {"model": "decks.question", "pk": 24, "fields": {"order": 25, "text": "Какой оценки достигнет ваша компания когда потратит инвестиции", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 200000000000, "min_value": 200000}, "inner_tag": "future_value"}}, {"model": "decks.question", "pk": 25, "fields": {"order": 26, "text": "Какая твоя роль в команде? за что ты отвественен? напиши свой контакт", "type": "photo_description", "hint": false, "required": true, "params": {"max_length": 100}, "inner_tag": "your_role"}}, {"model": "decks.question", "pk": 26, "fields": {"order": 27, "text": "Расскажи о своих сокомандниках. Кто они, чем занимаются в проекте", "type": "multiple_photo_description", "hint": false, "required": true, "params": {"max": 5, "max_length": 100}, "inner_tag": "your_teammates"}}, {"model": "decks.question", "pk": 27, "fields": {"order": 28, "text": "Расскажи о своих конкурентах", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors"}}, {"model": "decks.question", "pk": 28, "fields": {"order": 29, "text": "Какие сильные стороны есть у ваших конкурентов", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors_strength"}}, {"model": "decks.question", "pk": 29, "fields": {"order": 30, "text": "И какие слабые", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors_low"}}, {"model": "decks.question", "pk": 30, "fields": {"order": 31, "text": "Какие у вас есть преимущества над конкурентами", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "advantages"}}, {"model": "decks.question", "pk": 31, "fields": {"order": 32, "text": "Отправьте скриншоты работы вашего приложения", "type": "multiple_photo", "hint": false, "required": false, "params": {"max": 10}, "inner_tag": "images"}}, {"model": "decks.question", "pk": 32, "fields": {"order": 33, "text": "Пришлите дополнительные ссылки на контент, связанный с вашим проектом (это могут быть ссылки на соц сети, научные публикации итп)", "type": "multiple link description", "hint": false, "required": true, "params": null, "inner_tag": "links"}}, {"model": "decks.question", "pk": 33, "fields": {"order": 14, "text": "Финансовые показатели", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "financial_indicators"}}] \ No newline at end of file +[{"model": "auth.permission", "pk": 1, "fields": {"name": "Can add permission", "content_type": 1, "codename": "add_permission"}}, {"model": "auth.permission", "pk": 2, "fields": {"name": "Can change permission", "content_type": 1, "codename": "change_permission"}}, {"model": "auth.permission", "pk": 3, "fields": {"name": "Can delete permission", "content_type": 1, "codename": "delete_permission"}}, {"model": "auth.permission", "pk": 4, "fields": {"name": "Can view permission", "content_type": 1, "codename": "view_permission"}}, {"model": "auth.permission", "pk": 5, "fields": {"name": "Can add group", "content_type": 2, "codename": "add_group"}}, {"model": "auth.permission", "pk": 6, "fields": {"name": "Can change group", "content_type": 2, "codename": "change_group"}}, {"model": "auth.permission", "pk": 7, "fields": {"name": "Can delete group", "content_type": 2, "codename": "delete_group"}}, {"model": "auth.permission", "pk": 8, "fields": {"name": "Can view group", "content_type": 2, "codename": "view_group"}}, {"model": "auth.permission", "pk": 9, "fields": {"name": "Can add content type", "content_type": 3, "codename": "add_contenttype"}}, {"model": "auth.permission", "pk": 10, "fields": {"name": "Can change content type", "content_type": 3, "codename": "change_contenttype"}}, {"model": "auth.permission", "pk": 11, "fields": {"name": "Can delete content type", "content_type": 3, "codename": "delete_contenttype"}}, {"model": "auth.permission", "pk": 12, "fields": {"name": "Can view content type", "content_type": 3, "codename": "view_contenttype"}}, {"model": "auth.permission", "pk": 13, "fields": {"name": "Can add session", "content_type": 4, "codename": "add_session"}}, {"model": "auth.permission", "pk": 14, "fields": {"name": "Can change session", "content_type": 4, "codename": "change_session"}}, {"model": "auth.permission", "pk": 15, "fields": {"name": "Can delete session", "content_type": 4, "codename": "delete_session"}}, {"model": "auth.permission", "pk": 16, "fields": {"name": "Can view session", "content_type": 4, "codename": "view_session"}}, {"model": "auth.permission", "pk": 17, "fields": {"name": "Can add site", "content_type": 5, "codename": "add_site"}}, {"model": "auth.permission", "pk": 18, "fields": {"name": "Can change site", "content_type": 5, "codename": "change_site"}}, {"model": "auth.permission", "pk": 19, "fields": {"name": "Can delete site", "content_type": 5, "codename": "delete_site"}}, {"model": "auth.permission", "pk": 20, "fields": {"name": "Can view site", "content_type": 5, "codename": "view_site"}}, {"model": "auth.permission", "pk": 21, "fields": {"name": "Can add log entry", "content_type": 6, "codename": "add_logentry"}}, {"model": "auth.permission", "pk": 22, "fields": {"name": "Can change log entry", "content_type": 6, "codename": "change_logentry"}}, {"model": "auth.permission", "pk": 23, "fields": {"name": "Can delete log entry", "content_type": 6, "codename": "delete_logentry"}}, {"model": "auth.permission", "pk": 24, "fields": {"name": "Can view log entry", "content_type": 6, "codename": "view_logentry"}}, {"model": "auth.permission", "pk": 25, "fields": {"name": "Can add crontab", "content_type": 7, "codename": "add_crontabschedule"}}, {"model": "auth.permission", "pk": 26, "fields": {"name": "Can change crontab", "content_type": 7, "codename": "change_crontabschedule"}}, {"model": "auth.permission", "pk": 27, "fields": {"name": "Can delete crontab", "content_type": 7, "codename": "delete_crontabschedule"}}, {"model": "auth.permission", "pk": 28, "fields": {"name": "Can view crontab", "content_type": 7, "codename": "view_crontabschedule"}}, {"model": "auth.permission", "pk": 29, "fields": {"name": "Can add interval", "content_type": 8, "codename": "add_intervalschedule"}}, {"model": "auth.permission", "pk": 30, "fields": {"name": "Can change interval", "content_type": 8, "codename": "change_intervalschedule"}}, {"model": "auth.permission", "pk": 31, "fields": {"name": "Can delete interval", "content_type": 8, "codename": "delete_intervalschedule"}}, {"model": "auth.permission", "pk": 32, "fields": {"name": "Can view interval", "content_type": 8, "codename": "view_intervalschedule"}}, {"model": "auth.permission", "pk": 33, "fields": {"name": "Can add periodic task", "content_type": 9, "codename": "add_periodictask"}}, {"model": "auth.permission", "pk": 34, "fields": {"name": "Can change periodic task", "content_type": 9, "codename": "change_periodictask"}}, {"model": "auth.permission", "pk": 35, "fields": {"name": "Can delete periodic task", "content_type": 9, "codename": "delete_periodictask"}}, {"model": "auth.permission", "pk": 36, "fields": {"name": "Can view periodic task", "content_type": 9, "codename": "view_periodictask"}}, {"model": "auth.permission", "pk": 37, "fields": {"name": "Can add periodic tasks", "content_type": 10, "codename": "add_periodictasks"}}, {"model": "auth.permission", "pk": 38, "fields": {"name": "Can change periodic tasks", "content_type": 10, "codename": "change_periodictasks"}}, {"model": "auth.permission", "pk": 39, "fields": {"name": "Can delete periodic tasks", "content_type": 10, "codename": "delete_periodictasks"}}, {"model": "auth.permission", "pk": 40, "fields": {"name": "Can view periodic tasks", "content_type": 10, "codename": "view_periodictasks"}}, {"model": "auth.permission", "pk": 41, "fields": {"name": "Can add solar event", "content_type": 11, "codename": "add_solarschedule"}}, {"model": "auth.permission", "pk": 42, "fields": {"name": "Can change solar event", "content_type": 11, "codename": "change_solarschedule"}}, {"model": "auth.permission", "pk": 43, "fields": {"name": "Can delete solar event", "content_type": 11, "codename": "delete_solarschedule"}}, {"model": "auth.permission", "pk": 44, "fields": {"name": "Can view solar event", "content_type": 11, "codename": "view_solarschedule"}}, {"model": "auth.permission", "pk": 45, "fields": {"name": "Can add clocked", "content_type": 12, "codename": "add_clockedschedule"}}, {"model": "auth.permission", "pk": 46, "fields": {"name": "Can change clocked", "content_type": 12, "codename": "change_clockedschedule"}}, {"model": "auth.permission", "pk": 47, "fields": {"name": "Can delete clocked", "content_type": 12, "codename": "delete_clockedschedule"}}, {"model": "auth.permission", "pk": 48, "fields": {"name": "Can view clocked", "content_type": 12, "codename": "view_clockedschedule"}}, {"model": "auth.permission", "pk": 49, "fields": {"name": "Can add Token", "content_type": 13, "codename": "add_token"}}, {"model": "auth.permission", "pk": 50, "fields": {"name": "Can change Token", "content_type": 13, "codename": "change_token"}}, {"model": "auth.permission", "pk": 51, "fields": {"name": "Can delete Token", "content_type": 13, "codename": "delete_token"}}, {"model": "auth.permission", "pk": 52, "fields": {"name": "Can view Token", "content_type": 13, "codename": "view_token"}}, {"model": "auth.permission", "pk": 53, "fields": {"name": "Can add token", "content_type": 14, "codename": "add_tokenproxy"}}, {"model": "auth.permission", "pk": 54, "fields": {"name": "Can change token", "content_type": 14, "codename": "change_tokenproxy"}}, {"model": "auth.permission", "pk": 55, "fields": {"name": "Can delete token", "content_type": 14, "codename": "delete_tokenproxy"}}, {"model": "auth.permission", "pk": 56, "fields": {"name": "Can view token", "content_type": 14, "codename": "view_tokenproxy"}}, {"model": "auth.permission", "pk": 57, "fields": {"name": "Can add user", "content_type": 15, "codename": "add_user"}}, {"model": "auth.permission", "pk": 58, "fields": {"name": "Can change user", "content_type": 15, "codename": "change_user"}}, {"model": "auth.permission", "pk": 59, "fields": {"name": "Can delete user", "content_type": 15, "codename": "delete_user"}}, {"model": "auth.permission", "pk": 60, "fields": {"name": "Can view user", "content_type": 15, "codename": "view_user"}}, {"model": "auth.permission", "pk": 61, "fields": {"name": "Can add ticket", "content_type": 16, "codename": "add_ticket"}}, {"model": "auth.permission", "pk": 62, "fields": {"name": "Can change ticket", "content_type": 16, "codename": "change_ticket"}}, {"model": "auth.permission", "pk": 63, "fields": {"name": "Can delete ticket", "content_type": 16, "codename": "delete_ticket"}}, {"model": "auth.permission", "pk": 64, "fields": {"name": "Can view ticket", "content_type": 16, "codename": "view_ticket"}}, {"model": "auth.permission", "pk": 65, "fields": {"name": "Can add question answer", "content_type": 17, "codename": "add_questionanswer"}}, {"model": "auth.permission", "pk": 66, "fields": {"name": "Can change question answer", "content_type": 17, "codename": "change_questionanswer"}}, {"model": "auth.permission", "pk": 67, "fields": {"name": "Can delete question answer", "content_type": 17, "codename": "delete_questionanswer"}}, {"model": "auth.permission", "pk": 68, "fields": {"name": "Can view question answer", "content_type": 17, "codename": "view_questionanswer"}}, {"model": "auth.permission", "pk": 69, "fields": {"name": "Can add question deck hint", "content_type": 18, "codename": "add_questiondeckhint"}}, {"model": "auth.permission", "pk": 70, "fields": {"name": "Can change question deck hint", "content_type": 18, "codename": "change_questiondeckhint"}}, {"model": "auth.permission", "pk": 71, "fields": {"name": "Can delete question deck hint", "content_type": 18, "codename": "delete_questiondeckhint"}}, {"model": "auth.permission", "pk": 72, "fields": {"name": "Can view question deck hint", "content_type": 18, "codename": "view_questiondeckhint"}}, {"model": "auth.permission", "pk": 73, "fields": {"name": "Can add question", "content_type": 19, "codename": "add_question"}}, {"model": "auth.permission", "pk": 74, "fields": {"name": "Can change question", "content_type": 19, "codename": "change_question"}}, {"model": "auth.permission", "pk": 75, "fields": {"name": "Can delete question", "content_type": 19, "codename": "delete_question"}}, {"model": "auth.permission", "pk": 76, "fields": {"name": "Can view question", "content_type": 19, "codename": "view_question"}}, {"model": "auth.permission", "pk": 77, "fields": {"name": "Can add pitch deck", "content_type": 20, "codename": "add_pitchdeck"}}, {"model": "auth.permission", "pk": 78, "fields": {"name": "Can change pitch deck", "content_type": 20, "codename": "change_pitchdeck"}}, {"model": "auth.permission", "pk": 79, "fields": {"name": "Can delete pitch deck", "content_type": 20, "codename": "delete_pitchdeck"}}, {"model": "auth.permission", "pk": 80, "fields": {"name": "Can view pitch deck", "content_type": 20, "codename": "view_pitchdeck"}}, {"model": "auth.permission", "pk": 81, "fields": {"name": "Can add question answer photo", "content_type": 21, "codename": "add_questionanswerphoto"}}, {"model": "auth.permission", "pk": 82, "fields": {"name": "Can change question answer photo", "content_type": 21, "codename": "change_questionanswerphoto"}}, {"model": "auth.permission", "pk": 83, "fields": {"name": "Can delete question answer photo", "content_type": 21, "codename": "delete_questionanswerphoto"}}, {"model": "auth.permission", "pk": 84, "fields": {"name": "Can view question answer photo", "content_type": 21, "codename": "view_questionanswerphoto"}}, {"model": "contenttypes.contenttype", "pk": 1, "fields": {"app_label": "auth", "model": "permission"}}, {"model": "contenttypes.contenttype", "pk": 2, "fields": {"app_label": "auth", "model": "group"}}, {"model": "contenttypes.contenttype", "pk": 3, "fields": {"app_label": "contenttypes", "model": "contenttype"}}, {"model": "contenttypes.contenttype", "pk": 4, "fields": {"app_label": "sessions", "model": "session"}}, {"model": "contenttypes.contenttype", "pk": 5, "fields": {"app_label": "sites", "model": "site"}}, {"model": "contenttypes.contenttype", "pk": 6, "fields": {"app_label": "admin", "model": "logentry"}}, {"model": "contenttypes.contenttype", "pk": 7, "fields": {"app_label": "django_celery_beat", "model": "crontabschedule"}}, {"model": "contenttypes.contenttype", "pk": 8, "fields": {"app_label": "django_celery_beat", "model": "intervalschedule"}}, {"model": "contenttypes.contenttype", "pk": 9, "fields": {"app_label": "django_celery_beat", "model": "periodictask"}}, {"model": "contenttypes.contenttype", "pk": 10, "fields": {"app_label": "django_celery_beat", "model": "periodictasks"}}, {"model": "contenttypes.contenttype", "pk": 11, "fields": {"app_label": "django_celery_beat", "model": "solarschedule"}}, {"model": "contenttypes.contenttype", "pk": 12, "fields": {"app_label": "django_celery_beat", "model": "clockedschedule"}}, {"model": "contenttypes.contenttype", "pk": 13, "fields": {"app_label": "authtoken", "model": "token"}}, {"model": "contenttypes.contenttype", "pk": 14, "fields": {"app_label": "authtoken", "model": "tokenproxy"}}, {"model": "contenttypes.contenttype", "pk": 15, "fields": {"app_label": "users", "model": "user"}}, {"model": "contenttypes.contenttype", "pk": 16, "fields": {"app_label": "tickets", "model": "ticket"}}, {"model": "contenttypes.contenttype", "pk": 17, "fields": {"app_label": "decks", "model": "questionanswer"}}, {"model": "contenttypes.contenttype", "pk": 18, "fields": {"app_label": "decks", "model": "questiondeckhint"}}, {"model": "contenttypes.contenttype", "pk": 19, "fields": {"app_label": "decks", "model": "question"}}, {"model": "contenttypes.contenttype", "pk": 20, "fields": {"app_label": "decks", "model": "pitchdeck"}}, {"model": "contenttypes.contenttype", "pk": 21, "fields": {"app_label": "decks", "model": "questionanswerphoto"}}, {"model": "sessions.session", "pk": "75z16u4n75l7o7jcsrobft66frywjvlc", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZdsT:cvn4vsjjU7oKbOZKq3HnIl98anNkP43BShP9zfCWUrI", "expire_date": "2023-09-08T20:57:57.927Z"}}, {"model": "sessions.session", "pk": "ka6lsaaq1bsbr50dtucz995u30ekysjw", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZbw6:AV3MS-ko0vJLg_C25wYHdF5wMB799Co8tz0NiKQbpfA", "expire_date": "2023-09-08T18:53:34.076Z"}}, {"model": "sessions.session", "pk": "vrvvq92raoct0qwyowqo01u24u4sitkq", "fields": {"session_data": ".eJxVjDsOwjAQBe_iGlmOs8k6lPScwdqPhQPIkeKkQtwdLKWA9s3Me5lI-5bjXtMaZzVn05nT78Ykj1Qa0DuV22JlKds6s22KPWi110XT83K4fweZam61IikQqmeYCDz3gfuUQAS7kZFJJ3BDwFE8IHxlxAEheAGP6NCZ9wf6rDd6:1qZdlJ:5X7wA2NKn8Hb_aWLOhkjiBVZhDpLW7EXIat9KsJaRTE", "expire_date": "2023-09-08T20:50:33.923Z"}}, {"model": "sites.site", "pk": 1, "fields": {"domain": "pitch_deck_generator", "name": ""}}, {"model": "admin.logentry", "pk": 1, "fields": {"action_time": "2023-08-25T19:08:01.907Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 2, "fields": {"action_time": "2023-08-25T19:09:57.289Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "2 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 3, "fields": {"action_time": "2023-08-25T19:10:22.750Z", "user": 1, "content_type": 19, "object_id": "3", "object_repr": "3 - Какие проблемы решает ваш продукт - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 4, "fields": {"action_time": "2023-08-25T19:10:46.987Z", "user": 1, "content_type": 19, "object_id": "4", "object_repr": "4 - Продолжите предложение: Актуальность проблемы подтверждается тем фактом, что... - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 5, "fields": {"action_time": "2023-08-25T19:13:56.096Z", "user": 1, "content_type": 19, "object_id": "5", "object_repr": "5 - Как вы решаете эту проблему - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 6, "fields": {"action_time": "2023-08-25T19:14:38.412Z", "user": 1, "content_type": 19, "object_id": "6", "object_repr": "6 - Как работает ваше решение - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 7, "fields": {"action_time": "2023-08-25T19:14:54.637Z", "user": 1, "content_type": 19, "object_id": "7", "object_repr": "7 - Когда проблема будет решена, какова будет ценность для ваших пользователей - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 8, "fields": {"action_time": "2023-08-25T19:21:18.743Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "8 - Рынок, TAM, SAM, SOM - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 9, "fields": {"action_time": "2023-08-25T19:21:32.468Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "8 - Рынок, TAM, SAM, SOM - multiple_scroll", "action_flag": 2, "change_message": "[]"}}, {"model": "admin.logentry", "pk": 10, "fields": {"action_time": "2023-08-25T19:24:15.614Z", "user": 1, "content_type": 19, "object_id": "9", "object_repr": "9 - Какой процент рынка сейчас и через 3 года - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 11, "fields": {"action_time": "2023-08-25T19:28:23.693Z", "user": 1, "content_type": 19, "object_id": "10", "object_repr": "10 - Текущее состояние проекта - select", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 12, "fields": {"action_time": "2023-08-25T19:29:15.772Z", "user": 1, "content_type": 19, "object_id": "11", "object_repr": "11 - На чем вы зарабатываете? Сколько и за что вам платят клиенты - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 13, "fields": {"action_time": "2023-08-25T19:40:28.145Z", "user": 1, "content_type": 19, "object_id": "12", "object_repr": "13 - CAC, LTV - multiple_scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 14, "fields": {"action_time": "2023-08-25T19:42:59.297Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Order\"]}}]"}}, {"model": "admin.logentry", "pk": 15, "fields": {"action_time": "2023-08-25T19:43:44.276Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Order\"]}}]"}}, {"model": "admin.logentry", "pk": 16, "fields": {"action_time": "2023-08-25T19:46:25.446Z", "user": 1, "content_type": 19, "object_id": "13", "object_repr": "2 - Бизнес модель стартапа: B2B или B2C - select", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 17, "fields": {"action_time": "2023-08-25T19:46:44.235Z", "user": 1, "content_type": 19, "object_id": "14", "object_repr": "3 - Категория проекта - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 18, "fields": {"action_time": "2023-08-25T19:52:51.108Z", "user": 1, "content_type": 19, "object_id": "15", "object_repr": "16 - Roadmap, опиши цели и дедлайны - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 19, "fields": {"action_time": "2023-08-25T19:54:40.799Z", "user": 1, "content_type": 19, "object_id": "16", "object_repr": "17 - Сколько денег от инвесторов вы уже получили - number", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 20, "fields": {"action_time": "2023-08-25T19:54:55.205Z", "user": 1, "content_type": 19, "object_id": "17", "object_repr": "18 - Кто были вашими инвесторами - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 21, "fields": {"action_time": "2023-08-25T19:57:27.904Z", "user": 1, "content_type": 19, "object_id": "18", "object_repr": "19 - Сколько инвестиций вы планируете получить - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 22, "fields": {"action_time": "2023-08-25T19:58:02.798Z", "user": 1, "content_type": 19, "object_id": "19", "object_repr": "20 - Ссылка на фин модель - link", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 23, "fields": {"action_time": "2023-08-25T19:59:31.733Z", "user": 1, "content_type": 19, "object_id": "20", "object_repr": "21 - Оценка вашей компании - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 24, "fields": {"action_time": "2023-08-25T19:59:45.637Z", "user": 1, "content_type": 19, "object_id": "21", "object_repr": "22 - На что вы потратите полученные инвестиции - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 25, "fields": {"action_time": "2023-08-25T20:02:24.328Z", "user": 1, "content_type": 19, "object_id": "22", "object_repr": "23 - Какое количество времени потребуется на освоение инвестиционных денег - date", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 26, "fields": {"action_time": "2023-08-25T20:03:01.609Z", "user": 1, "content_type": 19, "object_id": "23", "object_repr": "24 - Чего добьется ваша команда когда освоит инвестиции? - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 27, "fields": {"action_time": "2023-08-25T20:03:28.429Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "10 - TAM, SAM, SOM - multiple_scroll", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Text\", \"Params\", \"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 28, "fields": {"action_time": "2023-08-25T20:04:39.109Z", "user": 1, "content_type": 19, "object_id": "24", "object_repr": "25 - Какой оценки достигнет ваша компания когда потратит инвестиции - scroll", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 29, "fields": {"action_time": "2023-08-25T20:27:38.451Z", "user": 1, "content_type": 19, "object_id": "25", "object_repr": "26 - Какая твоя роль в команде? за что ты отвественен? напиши свой контакт - photo_description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 30, "fields": {"action_time": "2023-08-25T20:37:42.730Z", "user": 1, "content_type": 19, "object_id": "26", "object_repr": "27 - Расскажи о своих сокомандниках. Кто они, чем занимаются в проекте - multiple_photo_description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 31, "fields": {"action_time": "2023-08-25T20:39:00.270Z", "user": 1, "content_type": 19, "object_id": "27", "object_repr": "28 - Расскажи о своих конкурентах - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 32, "fields": {"action_time": "2023-08-25T20:39:16.423Z", "user": 1, "content_type": 19, "object_id": "28", "object_repr": "29 - Какие сильные стороны есть у ваших конкурентов - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 33, "fields": {"action_time": "2023-08-25T20:39:30.009Z", "user": 1, "content_type": 19, "object_id": "29", "object_repr": "30 - И какие слабые - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 34, "fields": {"action_time": "2023-08-25T20:43:19.246Z", "user": 1, "content_type": 19, "object_id": "30", "object_repr": "31 - Какие у вас есть преимущества над конкурентами - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 35, "fields": {"action_time": "2023-08-25T20:46:22.207Z", "user": 1, "content_type": 19, "object_id": "31", "object_repr": "32 - Отправьте скриншоты работы вашего приложения - multiple_photo", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 36, "fields": {"action_time": "2023-08-25T20:46:38.018Z", "user": 1, "content_type": 19, "object_id": "32", "object_repr": "33 - Пришлите дополнительные ссылки на контент, связанный с вашим проектом (это могут быть ссылки на соц сети, научные публикации итп) - multiple link description", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 37, "fields": {"action_time": "2023-08-25T21:06:02.091Z", "user": 1, "content_type": 19, "object_id": "1", "object_repr": "1 - Название проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 38, "fields": {"action_time": "2023-08-25T21:06:58.298Z", "user": 1, "content_type": 19, "object_id": "14", "object_repr": "3 - Категория проекта - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 39, "fields": {"action_time": "2023-08-25T21:07:03.973Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "4 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 40, "fields": {"action_time": "2023-08-25T21:10:32.548Z", "user": 1, "content_type": 19, "object_id": "2", "object_repr": "4 - Кто пользуется/будет пользоваться вашим продуктом - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 41, "fields": {"action_time": "2023-08-25T21:10:39.155Z", "user": 1, "content_type": 19, "object_id": "3", "object_repr": "5 - Какие проблемы решает ваш продукт - text", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Inner tag\"]}}]"}}, {"model": "admin.logentry", "pk": 42, "fields": {"action_time": "2023-08-25T21:16:53.816Z", "user": 1, "content_type": 19, "object_id": "33", "object_repr": "14 - Финансовые показатели - text", "action_flag": 1, "change_message": "[{\"added\": {}}]"}}, {"model": "admin.logentry", "pk": 43, "fields": {"action_time": "2023-08-25T21:22:49.665Z", "user": 1, "content_type": 19, "object_id": "8", "object_repr": "10 - TAM, SAM, SOM - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 44, "fields": {"action_time": "2023-08-25T21:23:03.697Z", "user": 1, "content_type": 19, "object_id": "9", "object_repr": "11 - Какой процент рынка сейчас и через 3 года - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 45, "fields": {"action_time": "2023-08-25T21:24:03.871Z", "user": 1, "content_type": 19, "object_id": "12", "object_repr": "15 - CAC, LTV - multiple_range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 46, "fields": {"action_time": "2023-08-25T21:24:28.515Z", "user": 1, "content_type": 19, "object_id": "18", "object_repr": "19 - Сколько инвестиций вы планируете получить - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 47, "fields": {"action_time": "2023-08-25T21:25:24.812Z", "user": 1, "content_type": 19, "object_id": "20", "object_repr": "21 - Оценка вашей компании - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "admin.logentry", "pk": 48, "fields": {"action_time": "2023-08-25T21:26:05.687Z", "user": 1, "content_type": 19, "object_id": "24", "object_repr": "25 - Какой оценки достигнет ваша компания когда потратит инвестиции - range", "action_flag": 2, "change_message": "[{\"changed\": {\"fields\": [\"Type\"]}}]"}}, {"model": "users.user", "pk": 1, "fields": {"password": "argon2$argon2id$v=19$m=102400,t=2,p=8$b0RmZ29uTjZyVjJneW5PUDkzeFMycQ$kgKSTHjF/+/99hUGVyauNyfKbs4BqzQTF11omb/23Mw", "last_login": "2023-08-25T20:57:57.881Z", "is_superuser": true, "username": "sanspie", "email": "sanspie@akarpov.ru", "is_staff": true, "is_active": true, "date_joined": "2023-08-25T18:53:28.158Z", "groups": [], "user_permissions": []}}, {"model": "decks.pitchdeck", "pk": 1, "fields": {"name": "", "description": "123", "questions": {}, "logo": "", "styles": "", "presentation": "", "meta_info": {}, "created": "2023-08-25T18:47:05.001Z", "updated": "2023-08-25T18:47:05.001Z"}}, {"model": "decks.question", "pk": 1, "fields": {"order": 1, "text": "Название проекта", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 100}, "inner_tag": "names"}}, {"model": "decks.question", "pk": 2, "fields": {"order": 4, "text": "Кто пользуется/будет пользоваться вашим продуктом", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 300}, "inner_tag": "users"}}, {"model": "decks.question", "pk": 3, "fields": {"order": 5, "text": "Какие проблемы решает ваш продукт", "type": "text", "hint": true, "required": true, "params": {"max_lenght": 300}, "inner_tag": "problems"}}, {"model": "decks.question", "pk": 4, "fields": {"order": 6, "text": "Продолжите предложение: Актуальность проблемы подтверждается тем фактом, что...", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "actuality"}}, {"model": "decks.question", "pk": 5, "fields": {"order": 7, "text": "Как вы решаете эту проблему", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "solve"}}, {"model": "decks.question", "pk": 6, "fields": {"order": 8, "text": "Как работает ваше решение", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "works"}}, {"model": "decks.question", "pk": 7, "fields": {"order": 9, "text": "Когда проблема будет решена, какова будет ценность для ваших пользователей", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "awards"}}, {"model": "decks.question", "pk": 8, "fields": {"order": 10, "text": "TAM, SAM, SOM", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"name": "TAM", "slug": "tam", "max_value": 100000000000, "min_value": 10000000}, {"name": "SAM", "slug": "sam", "max_value": 100000000000, "min_value": 10000000}, {"name": "SOM", "slug": "som", "max_value": 100000000000, "min_value": 10000000}]}, "inner_tag": "market_values"}}, {"model": "decks.question", "pk": 9, "fields": {"order": 11, "text": "Какой процент рынка сейчас и через 3 года", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"name": "Сейчас", "slug": "now", "max_value": 1, "min_value": 0}, {"name": "Через 3 года", "slug": "then", "max_value": 1, "min_value": 0}]}, "inner_tag": "percentage"}}, {"model": "decks.question", "pk": 10, "fields": {"order": 12, "text": "Текущее состояние проекта", "type": "select", "hint": false, "required": true, "params": {"options": ["MVP", "MVP", "Pre seed", "Seed", "A Round", "B Round"]}, "inner_tag": "project_stage"}}, {"model": "decks.question", "pk": 11, "fields": {"order": 13, "text": "На чем вы зарабатываете? Сколько и за что вам платят клиенты", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "money"}}, {"model": "decks.question", "pk": 12, "fields": {"order": 15, "text": "CAC, LTV", "type": "multiple_range", "hint": true, "required": true, "params": {"scrollbars": [{"cac": "market", "name": "Рынок", "max_value": 200000, "min_value": 2}, {"name": "TAM", "slug": "ltv", "max_value": 200000, "min_value": 2}]}, "inner_tag": "users_metrics"}}, {"model": "decks.question", "pk": 13, "fields": {"order": 2, "text": "Бизнес модель стартапа: B2B или B2C", "type": "select", "hint": false, "required": true, "params": {"options": ["B2B", "B2C"]}, "inner_tag": "type"}}, {"model": "decks.question", "pk": 14, "fields": {"order": 3, "text": "Категория проекта", "type": "text", "hint": false, "required": true, "params": null, "inner_tag": "category"}}, {"model": "decks.question", "pk": 15, "fields": {"order": 16, "text": "Roadmap, опиши цели и дедлайны", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "aims"}}, {"model": "decks.question", "pk": 16, "fields": {"order": 17, "text": "Сколько денег от инвесторов вы уже получили", "type": "number", "hint": false, "required": true, "params": null, "inner_tag": "money_recieved"}}, {"model": "decks.question", "pk": 17, "fields": {"order": 18, "text": "Кто были вашими инвесторами", "type": "text", "hint": false, "required": true, "params": null, "inner_tag": "past_investors"}}, {"model": "decks.question", "pk": 18, "fields": {"order": 19, "text": "Сколько инвестиций вы планируете получить", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 200000000, "min_value": 20000}, "inner_tag": "how_much_investments"}}, {"model": "decks.question", "pk": 19, "fields": {"order": 20, "text": "Ссылка на фин модель", "type": "link", "hint": false, "required": true, "params": null, "inner_tag": "finance_model"}}, {"model": "decks.question", "pk": 20, "fields": {"order": 21, "text": "Оценка вашей компании", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 2000000000, "min_value": 200000}, "inner_tag": "company_value"}}, {"model": "decks.question", "pk": 21, "fields": {"order": 22, "text": "На что вы потратите полученные инвестиции", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "investments_sold"}}, {"model": "decks.question", "pk": 22, "fields": {"order": 23, "text": "Какое количество времени потребуется на освоение инвестиционных денег", "type": "date", "hint": false, "required": true, "params": null, "inner_tag": "time_to_spend"}}, {"model": "decks.question", "pk": 23, "fields": {"order": 24, "text": "Чего добьется ваша команда когда освоит инвестиции?", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "achieve"}}, {"model": "decks.question", "pk": 24, "fields": {"order": 25, "text": "Какой оценки достигнет ваша компания когда потратит инвестиции", "type": "range", "hint": true, "required": true, "params": {"name": "Сумма", "slug": "sum", "max_value": 200000000000, "min_value": 200000}, "inner_tag": "future_value"}}, {"model": "decks.question", "pk": 25, "fields": {"order": 26, "text": "Какая твоя роль в команде? за что ты отвественен? напиши свой контакт", "type": "photo_description", "hint": false, "required": true, "params": {"max_length": 100}, "inner_tag": "your_role"}}, {"model": "decks.question", "pk": 26, "fields": {"order": 27, "text": "Расскажи о своих сокомандниках. Кто они, чем занимаются в проекте", "type": "multiple_photo_description", "hint": false, "required": true, "params": {"max": 5, "max_length": 100}, "inner_tag": "your_teammates"}}, {"model": "decks.question", "pk": 27, "fields": {"order": 28, "text": "Расскажи о своих конкурентах", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors"}}, {"model": "decks.question", "pk": 28, "fields": {"order": 29, "text": "Какие сильные стороны есть у ваших конкурентов", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors_strength"}}, {"model": "decks.question", "pk": 29, "fields": {"order": 30, "text": "И какие слабые", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "competitors_low"}}, {"model": "decks.question", "pk": 30, "fields": {"order": 31, "text": "Какие у вас есть преимущества над конкурентами", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "advantages"}}, {"model": "decks.question", "pk": 31, "fields": {"order": 32, "text": "Отправьте скриншоты работы вашего приложения", "type": "multiple_photo", "hint": false, "required": false, "params": {"max": 10}, "inner_tag": "images"}}, {"model": "decks.question", "pk": 32, "fields": {"order": 33, "text": "Пришлите дополнительные ссылки на контент, связанный с вашим проектом (это могут быть ссылки на соц сети, научные публикации итп)", "type": "multiple link description", "hint": false, "required": true, "params": null, "inner_tag": "links"}}, {"model": "decks.question", "pk": 33, "fields": {"order": 14, "text": "Финансовые показатели", "type": "text", "hint": true, "required": true, "params": null, "inner_tag": "financial_indicators"}}] diff --git a/ml/openai_handle.py b/ml/openai_handle.py index 52cfc3a..8d7f6ef 100644 --- a/ml/openai_handle.py +++ b/ml/openai_handle.py @@ -1,28 +1,32 @@ -import openai import datetime from ast import literal_eval +import openai from django.conf import settings KEY = settings.OPENAI_KEY -description = """ -🍀 Что такое Pitch-Deck? -Pitch-Deck представляет собой презентацию-тизер проекта/компании для инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного финансирования (инвестиций). -Почему это проблема? +description = """🍀 Что такое Pitch-Deck? Pitch-Deck представляет собой презентацию-тизер проекта/компании для +инвесторов, партнеров, журналистов и других заинтересованных лиц. Цель презентации - привлечение дополнительного +финансирования (инвестиций). Почему это проблема? -🍀 Проблема #1. Недостаток средств: -Для многих стартапов ограниченные финансы создают преграду при разработке качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и малоинформативной презентации, что затрудняет привлечение инвестиций. +🍀 Проблема #1. Недостаток средств: Для многих стартапов ограниченные финансы создают преграду при разработке +качественного Pitch Deck. Отсутствие достаточных средств для найма профессиональных консультантов, дизайнеров и +копирайтеров, а также для проведения исследований рынка, может привести к созданию менее привлекательной и +малоинформативной презентации, что затрудняет привлечение инвестиций. -🍀 Проблема #2. Недостаток экспертизы: -Проблемой для стартапов является недостаток экспертизы для проведения необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной презентации для привлечения инвестиций. +🍀 Проблема #2. Недостаток экспертизы: Проблемой для стартапов является недостаток экспертизы для проведения +необходимых исследований и корректного отражения их результатов в Pitch Deck. Не всегда у стартапов есть нужные +знания в области маркетинга, финансов и анализа рынка, что затрудняет создание убедительной и информативной +презентации для привлечения инвестиций. -🍀 Проблема #3. Недостаток времени -Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью погружены в процесс разработки и улучшения продукта или сервиса. +🍀 Проблема #3. Недостаток времени Молодым компаниям для привлечения инвестиций требуется подготовить целый пакет +документов, одним из которых является Pitch Deck. Особенностью стартапов является сравнительного молодая и небольшая +команда, у которой чисто физически не хватает времени на разработку инвестиционных материалов, ведь они полностью +погружены в процесс разработки и улучшения продукта или сервиса. -🍀 ИДЕЯ: -Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под создание Pitch-Deck. -""" +🍀 ИДЕЯ: Основная идея кейса заключается в создании вспомогательного инструмента на основе ИИ, заточенного под +создание Pitch-Deck.""" names_prompt = """ По тексту ответь или предположи ответ на вопросы в следющем формате: @@ -45,11 +49,11 @@ """ По тексту ответь или предположи ответ на вопросы в следющем формате: { - 'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей', - 'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты', - 'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год}, - 'investments_sold': 'На что потратить инвестиции под проект', - 'financial_indicators': 'Напиши финансовые показатели проекта' +'awards': 'Когда проблема будет решена, какова будет ценность для ваших пользователей', +'money': 'На чем проект зарабатывает? сколько и за что ему платят клиенты', +'aims': Напиши 3 цели: на месяц, на полгода и год, формат: {'1': цель на месяц, '2': цель на полгода, '3': цель на год}, +'investments_sold': 'На что потратить инвестиции под проект', +'financial_indicators': 'Напиши финансовые показатели проекта' } """, """ diff --git a/ml/search.py b/ml/search.py index 831e920..53ce1c1 100644 --- a/ml/search.py +++ b/ml/search.py @@ -1,6 +1,7 @@ +import pickle + from annoy import AnnoyIndex from sentence_transformers import SentenceTransformer -import pickle model = None data = None diff --git a/pitch_deck_generator/common/models.py b/pitch_deck_generator/common/models.py index 01528d3..f63fa8e 100644 --- a/pitch_deck_generator/common/models.py +++ b/pitch_deck_generator/common/models.py @@ -1,12 +1,12 @@ 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 ( create_cropped_model_image, delete_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): diff --git a/pitch_deck_generator/common/signals.py b/pitch_deck_generator/common/signals.py index 0618bea..1f77b6f 100644 --- a/pitch_deck_generator/common/signals.py +++ b/pitch_deck_generator/common/signals.py @@ -7,7 +7,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs): model = sender if created: if instance.image: - + crop_model_image.apply_async( kwargs={ "pk": instance.pk, @@ -16,7 +16,7 @@ def create_cropped_model_image(sender, instance, created, **kwargs): }, countdown=2, ) - + def update_cropped_model_image(sender, instance, **kwargs): model = sender @@ -30,7 +30,7 @@ def update_cropped_model_image(sender, instance, **kwargs): # run task to create new cropped image if kwargs["update_fields"] != frozenset({"image_cropped"}) and instance: if instance.image: - + crop_model_image.apply_async( kwargs={ "pk": instance.pk, @@ -39,7 +39,7 @@ def update_cropped_model_image(sender, instance, **kwargs): }, countdown=2, ) - + else: instance.image_cropped = None diff --git a/pitch_deck_generator/decks/admin.py b/pitch_deck_generator/decks/admin.py index a3d4de1..6a51639 100644 --- a/pitch_deck_generator/decks/admin.py +++ b/pitch_deck_generator/decks/admin.py @@ -1,6 +1,6 @@ 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(Question) diff --git a/pitch_deck_generator/decks/api/serializers.py b/pitch_deck_generator/decks/api/serializers.py index 8ef4665..8bc3fff 100644 --- a/pitch_deck_generator/decks/api/serializers.py +++ b/pitch_deck_generator/decks/api/serializers.py @@ -7,9 +7,9 @@ from pitch_deck_generator.decks.models import ( PitchDeck, Question, - QuestionDeckHint, QuestionAnswer, QuestionAnswerPhoto, + QuestionDeckHint, ) diff --git a/pitch_deck_generator/decks/api/urls.py b/pitch_deck_generator/decks/api/urls.py index 087b454..bc3d949 100644 --- a/pitch_deck_generator/decks/api/urls.py +++ b/pitch_deck_generator/decks/api/urls.py @@ -1,11 +1,12 @@ from django.urls import path from pitch_deck_generator.decks.api.views import ( + CreateQuestionAnswerApiView, + GetDeckQuestionApiView, + GetDeckQuestionHintApiView, + GetFirstQuestionApiView, ListDecksApiView, RetrievePitchApiView, - GetFirstQuestionApiView, - GetDeckQuestionApiView, - GetDeckQuestionHintApiView, CreateQuestionAnswerApiView, ) app_name = "decks" @@ -15,6 +16,9 @@ path("", RetrievePitchApiView.as_view()), path("question/", GetFirstQuestionApiView.as_view()), path("question//", GetDeckQuestionApiView.as_view()), - path("question///", CreateQuestionAnswerApiView.as_view()), + path( + "question///", + CreateQuestionAnswerApiView.as_view(), + ), path("hint//", GetDeckQuestionHintApiView.as_view()), ] diff --git a/pitch_deck_generator/decks/api/views.py b/pitch_deck_generator/decks/api/views.py index 4210474..a562d03 100644 --- a/pitch_deck_generator/decks/api/views.py +++ b/pitch_deck_generator/decks/api/views.py @@ -1,16 +1,16 @@ from rest_framework import generics, status 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.parsers import JSONParser, FormParser, MultiPartParser from pitch_deck_generator.decks.api.serializers import ( + AnswerSerializer, BasePitchDeckSerializer, + HintSerializer, PitchDeckSerializer, 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): diff --git a/pitch_deck_generator/decks/tasks.py b/pitch_deck_generator/decks/tasks.py index 4e86521..64db626 100644 --- a/pitch_deck_generator/decks/tasks.py +++ b/pitch_deck_generator/decks/tasks.py @@ -1,7 +1,7 @@ import requests 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 data_types = { diff --git a/pitch_deck_generator/decks/tests.py b/pitch_deck_generator/decks/tests.py index 7ce503c..e69de29 100644 --- a/pitch_deck_generator/decks/tests.py +++ b/pitch_deck_generator/decks/tests.py @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/pitch_deck_generator/decks/views.py b/pitch_deck_generator/decks/views.py index 91ea44a..e69de29 100644 --- a/pitch_deck_generator/decks/views.py +++ b/pitch_deck_generator/decks/views.py @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/pitch_deck_generator/tickets/signals.py b/pitch_deck_generator/tickets/signals.py index e64413e..d8fe190 100644 --- a/pitch_deck_generator/tickets/signals.py +++ b/pitch_deck_generator/tickets/signals.py @@ -1,5 +1,5 @@ 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 pitch_deck_generator.tickets.models import Ticket diff --git a/pitch_deck_generator/users/views.py b/pitch_deck_generator/users/views.py index 8b13789..e69de29 100644 --- a/pitch_deck_generator/users/views.py +++ b/pitch_deck_generator/users/views.py @@ -1 +0,0 @@ - diff --git a/pitch_deck_generator/utils/files.py b/pitch_deck_generator/utils/files.py index b8db6bb..9f90b16 100644 --- a/pitch_deck_generator/utils/files.py +++ b/pitch_deck_generator/utils/files.py @@ -1,6 +1,6 @@ import os - from io import BytesIO + from PIL import Image from pitch_deck_generator.users.models import User diff --git a/poetry.lock b/poetry.lock index 8e17326..0ca6e73 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1428,18 +1428,18 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa [[package]] name = "isort" -version = "5.12.0" +version = "5.11.5" description = "A Python utility / library to sort Python imports." category = "main" optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.7.0" files = [ - {file = "isort-5.12.0-py3-none-any.whl", hash = "sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6"}, - {file = "isort-5.12.0.tar.gz", hash = "sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504"}, + {file = "isort-5.11.5-py3-none-any.whl", hash = "sha256:ba1d72fb2595a01c7895a5128f9585a5cc4b6d395f1c8d514989b9a7eb2a8746"}, + {file = "isort-5.11.5.tar.gz", hash = "sha256:6be1f76a507cb2ecf16c7cf14a37e41609ca082330be4e3436a18ef74add55db"}, ] [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"] plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] @@ -3298,4 +3298,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "981198feadb63083b31387f32ef93f2ded7098868fe9cd40a9e505a057cf9d1b" +content-hash = "31ce390d9b50a16455803f012bd6f7eca984fbec0d0e60404edaea07b5523792" diff --git a/pyproject.toml b/pyproject.toml index 99ba473..8a95a46 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,6 +48,7 @@ django-coverage-plugin = "^3.0.0" pytest-django = "^4.5.2" sentry-sdk = "^1.12.0" openai = "^0.27.9" +isort = "5.11.5" [build-system]