Newer
Older
version=${VERSION:-develop}
music_path=${MUSIC_PATH:-/usr/share/music}
demo_path=${DEMO_PATH:-/srv/funkwhale-demo/demo}
env_file=${ENV_FILE}
echo 'Cleaning everything...'
/usr/local/bin/docker-compose down -v || echo 'Nothing to stop'
sudo rm -rf $demo_path/*
mkdir -p $demo_path
echo 'Downloading demo files...'
curl -L -o docker-compose.yml "https://code.eliotberriot.com/funkwhale/funkwhale/raw/$version/deploy/docker-compose.yml"
curl -L -o .env "https://code.eliotberriot.com/funkwhale/funkwhale/raw/$version/deploy/env.prod.sample"
mkdir data/
curl -L -o front.zip "https://code.eliotberriot.com/funkwhale/funkwhale/-/jobs/artifacts/$version/download?job=build_front"
unzip front.zip
echo "FUNKWHALE_VERSION=$version" >> .env
echo "MUSIC_DIRECTORY_SERVE_PATH=$music_path" >> .env
echo "MUSIC_DIRECTORY_PATH=$music_path" >> .env
echo "MEDIA_ROOT=$demo_path/data/media/" >> .env
echo "STATIC_ROOT=$demo_path/data/static/" >> .env
# /usr/local/bin/docker-compose pull
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
cat .env
cat <<EOF | /usr/local/bin/docker-compose run --rm api python manage.py shell -i python
import subprocess
subprocess.call("pip install factory-boy", shell=True)
from django.core.management import call_command
call_command("migrate", interactive=False)
from funkwhale_api.users.models import User
print("Creating dummy user")
u = User.objects.create(email="demo@demo.com", username="demo", is_staff=True, is_superuser=True, privacy_level="everyone")
u.set_password("demo")
u.subsonic_api_token = "demo"
u.save()
from funkwhale_api.common import preferences
manager = preferences.global_preferences_registry.manager()
manager['common__api_authentication_required'] = False
manager['federation__music_needs_approval'] = False
manager['instance__name'] = "Login: demo / password: demo"
paths = [
"$music_path/**/*.ogg",
"$music_path/**/*.mp3",
"$music_path/**/*.flac",
]
print(paths)
call_command("import_files", *paths, username="demo", recursive=True, interactive=False)
print('Creating some dummy data...')
import random
import datetime
from funkwhale_api.music.models import Album, Track
from funkwhale_api.history.factories import ListeningFactory
from funkwhale_api.favorites.factories import TrackFavorite as TrackFavoriteFactory
from funkwhale_api.users.factories import UserFactory
from funkwhale_api.playlists.factories import PlaylistFactory
users = UserFactory.create_batch(size=15, privacy_level="everyone")
available_tracks = list(Track.objects.all())
available_albums = list(Album.objects.all())
def get_random_datetime():
from django.utils import timezone
import datetime
import random
now = timezone.now()
return now - datetime.timedelta(seconds=random.randint(1, 3600 * 24 * 7))
print('Updating album dates to have random sorting...')
for album in available_albums:
album.creation_date = get_random_datetime()
album.save(update_fields=['creation_date'])
for i in range(30):
print('Creating playlist {}'.format(i))
playlist = PlaylistFactory(user=random.choice(users), privacy_level="everyone", creation_date=get_random_datetime())
tracks = set()
for i in range(random.randint(5, 35)):
tracks.add(random.choice(available_tracks))
playlist.insert_many(tracks)
for user in users:
for i in range(random.randint(5, 35)):
print('Adding favorite {} for user {}'.format(i, user.username))
try:
TrackFavoriteFactory(user=user, track=random.choice(available_tracks), creation_date=get_random_datetime())
except:
pass
for i in range(random.randint(5, 35)):
print('Adding listening {} for user {}'.format(i, user.username))
try:
ListeningFactory(user=user, track=random.choice(available_tracks), creation_date=get_random_datetime())
except:
pass
EOF
chmod 777 -R front