3
g                 @   sH   d Z ddlZddlZddlmZ ddlmZ dgZdd ZdddZ	dS )z
Move a file in the safest way possible::

    >>> from django.core.files.move import file_move_safe
    >>> file_move_safe("/tmp/old_file", "/tmp/new_file")
    N)copystat)locksfile_move_safec             C   sX   t tjdr0ytjj| |S  tk
r.   dS X tjjtjj| tjjtjj|kS )NsamefileF)hasattrospathr   OSErrornormcaseabspath)srcdst r   T/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django/core/files/move.py	_samefile   s    r   i   @   Fc          5   C   sz  t | |rdS y0| r0tj|tjr0td| tj| | dS  tk
rR   Y nX t| d}tj|tjtj	B t
tddB |stjndB }z:tj|tj d}x"|dkr|j|}tj|| qW W dtj| tj| X W dQ R X yt| | W n4 tk
r, } z|jtjkr W Y dd}~X nX ytj|  W n8 tk
rt } zt
|dddkrd W Y dd}~X nX dS )	aU  
    Move a file from one location to another in the safest way possible.

    First, try ``os.rename``, which is simple but will break across filesystems.
    If that fails, stream manually from one file to another in pure Python.

    If the destination file exists and ``allow_overwrite`` is ``False``, raise
    ``FileExistsError``.
    Nz8Destination file %s exists and allow_overwrite is False.rbO_BINARYr       winerror    )r   r   accessF_OKFileExistsErrorrenamer	   openO_WRONLYO_CREATgetattrO_EXCLr   lockZLOCK_EXreadwriteZunlockcloser   PermissionErrorerrnoEPERMremove)Zold_file_nameZnew_file_name
chunk_sizeZallow_overwriteZold_filefdZcurrent_chunker   r   r   r      s<    



   )r+   F)
__doc__r%   r   shutilr   Zdjango.core.filesr   __all__r   r   r   r   r   r   <module>   s   