code: def handle(self, *args, **options):
      self.force_npm = options["force_npm"]
      self.force_bower = options["force_bower"]
      app_path = os.sep.join(
          [
              apps.get_app_config("timeside_player").path,
              "static",
              "timeside2",
          ]
      )
      os.chdir(app_path)
      print("Building front...")
      os.system("npm install -g grunt")
      os.system("npm cache clean -f; npm install -g n; n stable")
      if not os.path.exists("node_modules") or self.force_npm:
          os.system("npm install")
      os.system("grunt build --force")
  
file_path: TimeSide/timeside/server/management/commands/timeside-build-front.py
imports: import os, time
  import subprocess
  from django.apps import apps
  from optparse import make_option
  from django.conf import settings
  from django.core.management.base import BaseCommand, CommandError
  from django.db import connections
label_desc: Use image node_id 2 for calling the Command obj's underlying member method code with example usage: obj.handle() without return types