#!/usr/bin/env python
# GPL. (C) 2007-2009 Paolo Patruno.

# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
# 

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'rmap.settings'
from django.conf import settings

from django.core import management
import rmap.settings
import sys, optparse, rmap.daemon
from rmap import  __version__


def initdb(cwd):
    p = optparse.OptionParser(usage="usage: %prog [options]",version="%prog "+__version__)
    p.add_option("--syncdb", action="store_true",dest="syncdb", help="initialize rmap DB (default %default)", default=False)
    p.add_option("--changeuser", action="store_true",dest="changeuser", help="change user to the user in config file (default %default)", default=False)
    p.add_option("--dumpdata", action="store_true", help=\
                 "dump Data Base (default %default)", default=False)
    p.add_option("--loaddata", type="string",action="store", help=\
                 "restore Data Base (default %default)", default=None)

    (options, args) = p.parse_args()

    import django
    django.setup()

    if (not options.syncdb and\
        not options.dumpdata and\
        options.loaddata is None) :
        p.print_help()
        raise optparse.OptionValueError("you have to set one of --syncdb --dumpdata --loaddata")


    if (options.changeuser):
        dae=rmap.daemon.Daemon()
        dae.switchuser(user=rmap.rmap_config.user,group=rmap.rmap_config.group,env=None)
        #os.chdir(cwd)

    if (options.syncdb):
        #management.call_command("migrate",no_initial_data=True,app_label="auth",migration_name="0001_initial" )
        #management.call_command("migrate",no_initial_data=True,app_label="admin",migration_name="0001_initial" )
        management.call_command("migrate",no_initial_data=True )

        #from django.core.management import call_command
        #call_command("createsuperuser",username="rmap",email="rmap@rmap.cc",interactive=False) 
        ##management.call_command("changepassword","rmap" )

        #from django.contrib.auth.models import User
        #u = User.objects.get(username__exact='rmap')
        #u.set_password('rmap')
        #u.save()


    if (options.dumpdata):
        management.call_command("dumpdata")

    if (options.loaddata is not None):
        print "loaddata",options.loaddata
        management.call_command("loaddata",options.loaddata)


if __name__ == '__main__':

    cwd=os.getcwd()

    sys.exit(initdb(cwd))  # (this code was run as script)
