Welcome, guest | Sign In | My Account | Store | Cart
from django.core.management.base import BaseCommand, CommandError

from django.conf import settings

import commands, os
from optparse import make_option



class Command(BaseCommand):

    option_list
= BaseCommand.option_list + (
                make_option
('--test', '-t',
                            dest
='test',
                            action
='store_true',
                           
default=False,
                            help
='Simulate the synchronization.'),
   
)
    help
= 'It allows to sync your develop site project with the remote site repository.'

   
def handle(self, *args, **options):
       
"""
        List of options in rsync command:
        -a:     Preserve the attibutes of the files.
        -v:     Verbose.
        -z:     Enables the compression.
        -u:     Update files.
        -r:     Recursive.
        -E:     Preserve Executability.
        -h:     Human readable.
        -n:     Simulate.
        """

       
# Check the rsync command
        st
, out = commands.getstatusoutput('rsync --version')
       
if st !=0:
           
self.stderr.write('Error: To use this command you need the rsync command.\n')
           
exit(1)
       
           
       
# Check for the settings parameters            
       
try:
           
# Deploy data
            USER_SERVER
= settings.USER_SERVER
            DOMAIN_SERVER
= settings.DOMAIN_SERVER
            DIR_SERVER
= settings.DIR_SERVER
            DIR_LOCAL
= settings.DIR_LOCAL
       
except AttributeError:
           
self.stderr.write('Error: You have to define the parameters in settings.py.\n')
           
exit(1)
           

           
        opts
= '-uhzravE --exclude="*.pyc" --exclude=settings.py --exclude="mydata.db"'
       
if options['test']:
            opts
= opts+' -n'
           
        os
.system('rsync '+opts+' '+DIR_LOCAL+' '+USER_SERVER+'@'+DOMAIN_SERVER+':'+DIR_SERVER)
       
self.stdout.write('\nWARNING: Consider that the file settings.py must be sent manually.\n'+ \
       
'Don\'t apply any changes in the server directory except into settings.py\n')
       
       
pass

History