kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
94 wiersze
2.6 KiB
Python
94 wiersze
2.6 KiB
Python
import os
|
|
|
|
import debugpy
|
|
import uvicorn
|
|
from django.core.management import call_command
|
|
from django.core.management.commands.migrate import Command as BaseCommand
|
|
|
|
from funkwhale_api.common import preferences
|
|
from funkwhale_api.music.models import Library
|
|
from funkwhale_api.users.models import User
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Manage gitpod environment"
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument("command", nargs="?", type=str)
|
|
|
|
def handle(self, *args, **options):
|
|
command = options["command"]
|
|
|
|
if not command:
|
|
return self.show_help()
|
|
|
|
if command == "init":
|
|
return self.init()
|
|
|
|
if command == "dev":
|
|
return self.dev()
|
|
|
|
def show_help(self):
|
|
self.stdout.write("")
|
|
self.stdout.write("Available commands:")
|
|
self.stdout.write("init - Initialize gitpod workspace")
|
|
self.stdout.write("dev - Run Funkwhale in development mode with debug server")
|
|
self.stdout.write("")
|
|
|
|
def init(self):
|
|
try:
|
|
user = User.objects.get(username="gitpod")
|
|
except Exception:
|
|
call_command(
|
|
"createsuperuser",
|
|
username="gitpod",
|
|
email="gitpod@example.com",
|
|
no_input=False,
|
|
)
|
|
user = User.objects.get(username="gitpod")
|
|
|
|
user.set_password("gitpod")
|
|
if not user.actor:
|
|
user.create_actor()
|
|
|
|
user.save()
|
|
|
|
# Allow anonymous access
|
|
preferences.set("common__api_authentication_required", False)
|
|
|
|
# Download music catalog
|
|
os.system(
|
|
"git clone https://dev.funkwhale.audio/funkwhale/catalog.git /tmp/catalog"
|
|
)
|
|
os.system("mv -f /tmp/catalog/music /workspace/funkwhale/data")
|
|
os.system("rm -rf /tmp/catalog/music")
|
|
|
|
# Import music catalog into library
|
|
call_command(
|
|
"create_library",
|
|
"gitpod",
|
|
name="funkwhale/catalog",
|
|
privacy_level="everyone",
|
|
)
|
|
call_command(
|
|
"import_files",
|
|
Library.objects.get(actor=user.actor).uuid,
|
|
"/workspace/funkwhale/data/music/",
|
|
recursive=True,
|
|
in_place=True,
|
|
no_input=False,
|
|
)
|
|
|
|
def dev(self):
|
|
debugpy.listen(5678)
|
|
uvicorn.run(
|
|
"config.asgi:application",
|
|
host="0.0.0.0",
|
|
port=5000,
|
|
reload=True,
|
|
reload_dirs=[
|
|
"/workspace/funkwhale/api/config/",
|
|
"/workspace/funkwhale/api/funkwhale_api/",
|
|
],
|
|
)
|