def add_backup_file (request, machine = False, windows = False): """ Asocia un fichero a una planificación de una máquina. """ # Hay que saber desde qué máquina nos están consultando. logger.debug('Adding backup file') if not machine: machine = Machine.get_by_addr(request.META['REMOTE_ADDR']) if not machine: msg = 'There is no machine for address: %s' % request.META['REMOTE_ADDR'] logger.error(msg) raise Http404(msg) if not request.GET.has_key('filename'): logger.error('No Filename in request') raise Http404("filename") if not request.GET.has_key ('filedate'): logger.error('No File date in request') raise Http404("Filedate") if windows and not request.GET.has_key ('filetime'): logger.error('No File time in request') raise Http404("Filetime") if not windows and not request.GET.has_key('filesize'): logger.error('No File size in request') raise Http404("Filesize") filename = request.GET['filename'] logger.debug('filename: %s', filename) if windows: logger.debug('Windows file') filedate = map(int, request.GET['filedate'].split ('/')) filetime = map (int, request.GET['filetime'].split (':')) filedate = datetime.datetime.now (filedate[2], filedate[1], filedate[0], filetime[0], filetime[1], filetime[2]) filesize = 0 else: logger.debug('Unix file') filedate = datetime.datetime.fromtimestamp(float(request.GET['filedate'])) filesize = request.GET['filesize'] fbp = FileBackupTask.get_fbp(machine, filename) if not fbp: msg = "There is no pattern for this file" logger.error(msg) return HttpResponse (msg) next_run = fbp.file_backup_task.next_run(filedate) previous_run = fbp.file_backup_task.last_run(filedate) if (abs(next_run - filedate) <= abs(filedate - previous_run)): tch_time = next_run else: tch_time = previous_run if tch_time > datetime.datetime.now(): logger.error('Future backup') tch, created = TaskCheck.objects.get_or_create ( task = fbp.file_backup_task, task_time = tch_time ) if created: logger.debug('TaskCheck created') else: logger.debug('TaskCheck already exists') bf, created = BackupFile.objects.get_or_create ( file_backup_product = fbp, task_check = tch, original_file_name = filename, original_date = filedate, original_file_size = filesize ) if created: logger.debug('BackupFile created') else: logger.debug('BackupFile already exists') return HttpResponse("Ok")
logger.debug('Windows file') filedate = map(int, request.GET['filedate'].split('/')) filetime = map(int, request.GET['filetime'].split(':')) filedate = datetime.datetime(filedate[2], filedate[1], filedate[0], filetime[0], filetime[1], filetime[2]) filesize = 0 else: logger.debug('Unix file') try: filedate = datetime.datetime.fromtimestamp(float(request.GET['filedate'])) # Croniter doest not get seconds difference, to ensure last_run is this run we increment 1 min to filetime filedate = filedate + datetime.timedelta(minutes=1) except ValueError, e: logger.error(e) return HttpResponse(e) filesize = request.GET['filesize'] fbp = FileBackupTask.get_fbp(machine, filename) if not fbp: msg = "There is no pattern for this file: %s" % filename logger.error(msg) return HttpResponse(msg) next_run = fbp.file_backup_task.next_run(filedate) previous_run = fbp.file_backup_task.last_run(filedate) if (abs(next_run - filedate) <= abs(filedate - previous_run)): tch_time = next_run else: tch_time = previous_run if tch_time > datetime.datetime.now(): logger.error('Future backup') tch, created = TaskCheck.objects.get_or_create( task=fbp.file_backup_task, task_time=tch_time
def add_backup_file(request, machine=False, windows=False): """ Asocia un fichero a una planificación de una máquina. """ # Hay que saber desde qué máquina nos están consultando. logger.debug('Adding backup file') if not machine: machine = Machine.get_by_addr(request.META['REMOTE_ADDR']) if not machine: msg = 'There is no machine for address: %s' % request.META[ 'REMOTE_ADDR'] logger.error(msg) raise Http404(msg) if not request.GET.has_key('filename'): logger.error('No Filename in request') raise Http404("filename") if not request.GET.has_key('filedate'): logger.error('No File date in request') raise Http404("Filedate") if windows and not request.GET.has_key('filetime'): logger.error('No File time in request') raise Http404("Filetime") if not windows and not request.GET.has_key('filesize'): logger.error('No File size in request') raise Http404("Filesize") filename = request.GET['filename'] logger.debug('filename: %s', filename) if windows: logger.debug('Windows file') filedate = map(int, request.GET['filedate'].split('/')) filetime = map(int, request.GET['filetime'].split(':')) filedate = datetime.datetime.now(filedate[2], filedate[1], filedate[0], filetime[0], filetime[1], filetime[2]) filesize = 0 else: logger.debug('Unix file') filedate = datetime.datetime.fromtimestamp( float(request.GET['filedate'])) filesize = request.GET['filesize'] fbp = FileBackupTask.get_fbp(machine, filename) if not fbp: msg = "There is no pattern for this file" logger.error(msg) return HttpResponse(msg) next_run = fbp.file_backup_task.next_run(filedate) previous_run = fbp.file_backup_task.last_run(filedate) if (abs(next_run - filedate) <= abs(filedate - previous_run)): tch_time = next_run else: tch_time = previous_run if tch_time > datetime.datetime.now(): logger.error('Future backup') tch, created = TaskCheck.objects.get_or_create(task=fbp.file_backup_task, task_time=tch_time) if created: logger.debug('TaskCheck created') else: logger.debug('TaskCheck already exists') bf, created = BackupFile.objects.get_or_create(file_backup_product=fbp, task_check=tch, original_file_name=filename, original_date=filedate, original_file_size=filesize) if created: logger.debug('BackupFile created') else: logger.debug('BackupFile already exists') return HttpResponse("Ok")