#!/usr/bin/env python3
"""Django's command-line utility for administrative tasks."""
import os
import sys
import pwd
import grp


def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'gamoto.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc

    if not os.environ.get('IGNORE_UID'):
        # Check UID
        from django.conf import settings

        try:
            uid = pwd.getpwnam(settings.GAMOTO_USER).pw_uid
        except KeyError as err:
            print("Invalid user `%s`" % settings.GAMOTO_USER)
            sys.exit(1)

        try:
            gid = grp.getgrnam(settings.GAMOTO_GROUP).gr_gid
        except KeyError as err:
            print("Invalid group `%s`" % settings.GAMOTO_GROUP)
            sys.exit(1)

        try:
            if os.getgid() != gid:
                os.setgid(gid)
            if os.getuid() != uid:
                os.setuid(uid)
        except PermissionError as err:
            print("Couldn't set UID %s. Try again as `root` or `%s`" % (
                uid, settings.GAMOTO_USER))
            sys.exit(1)

    execute_from_command_line(sys.argv)

if __name__ == '__main__':
    main()
