-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart_server.sh
More file actions
68 lines (55 loc) · 3.32 KB
/
start_server.sh
File metadata and controls
68 lines (55 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/bash
echo "================== Останавливаем сервер =================="
fuser -k 8000/tcp >/dev/null 2>&1
if [ -f "moneyflow_database.sqlite3" ]; then
echo "================== Удаляем базу данных =================="
rm moneyflow_database.sqlite3
fi
MIGRATIONS_DIR="dds/migrations"
if [ -d "$MIGRATIONS_DIR" ]; then
echo "================== Очищаем папку миграций =================="
find "$MIGRATIONS_DIR" -type f -not -name "__init__.py" -delete
fi
echo "================== Создаем новые миграции =================="
python manage.py makemigrations
python manage.py makemigrations dds
echo "================== Применяем миграции =================="
python manage.py migrate
# Можете поменять данные админа (суперпользователя) если необходимо
export DJANGO_SUPERUSER_USERNAME=admin
export DJANGO_SUPERUSER_EMAIL=admin@admin.ru
export DJANGO_SUPERUSER_PASSWORD=admin
echo "================== Добавляем админа =================="
python manage.py createsuperuser --noinput
echo "================== Добавление тестовых данных =================="
python manage.py shell -c "from dds.models import Type,Status,Category,Subcategory,Record; \
Type.objects.all().delete(); Status.objects.all().delete(); Category.objects.all().delete(); Subcategory.objects.all().delete(); \
t1=Type.objects.create(name='Списание'); t2=Type.objects.create(name='Пополнение'); \
s1=Status.objects.create(name='Бизнес'); s2=Status.objects.create(name='Личное'); \
c1=Category.objects.create(name='Маркетинг', type=t1); c2=Category.objects.create(name='Доходы', type=t2); \
sc1=Subcategory.objects.create(name='Google Ads', category=c1); sc2=Subcategory.objects.create(name='Avito', category=c1); sc3=Subcategory.objects.create(name='Продажи', category=c2); \
Record.objects.create(status=s1, type=t1, category=c1, subcategory=sc1, amount=12345.67, comment='Тест: рекламная кампания'); \
Record.objects.create(status=s2, type=t1, category=c1, subcategory=sc2, amount=6789.00, comment='Тест: рекламная кампания личного типа'); \
Record.objects.create(status=s1, type=t2, category=c2, subcategory=sc3, amount=10000.00, comment='Тест: доход от продаж'); \
print('OK: sample data created')"
echo "================== Запускаем сервер =================="
python manage.py runserver 8000 >/dev/null 2>&1 & # Для удаления подавления вывода можете убрать ">/dev/null 2>&1"
sleep 1
OS_NAME=$(uname -s)
if [[ "$OS_NAME" == "Linux" ]]; then
# WSL проверка
if grep -qEi "(Microsoft|WSL)" /proc/version &> /dev/null ; then
# Win (WSL) Как у меня :)
powershell.exe /c start http://127.0.0.1:8000
else
xdg-open http://127.0.0.1:8000
fi
elif [[ "$OS_NAME" == "Darwin" ]]; then
# MacOS
open http://127.0.0.1:8000
elif [[ "$OS_NAME" == *"MINGW"* || "$OS_NAME" == *"CYGWIN"* ]]; then
# Windows через Git Bash / Cygwin
start http://127.0.0.1:8000
else
echo "[ERROR] Откройте браузер вручную, пожалуйста: http://127.0.0.1:8000"
fi