def request_copy(self, save=True): u""" Gera um pedido de copia local do media Os pedidos tem um codigo uuid e são gravados em /repository/mucua/requests/uuid O arquivo atualmente contem somente o caminho para o media no repositorio. """ self.set_is_local() if not self.is_local: self.is_requested = True if save: self.save() try: requests_path = os.path.join(REPOSITORY_DIR, self.get_repository(), DEFAULT_MUCUA, 'requests') if not os.path.exists(requests_path): os.makedirs(requests_path) request_filename = os.path.join(requests_path, self.uuid) logger.info("REQUESTING: " + request_filename) request_file = open(request_filename, 'a') request_file.write(self.media_file.path) request_file.close # TODO: Need to git add logger.debug("ADDING REQUEST: " + os.path.basename(request_filename)) logger.debug("ADDED ON: " + os.path.dirname(request_filename)) from repository.models import git_add git_add(os.path.basename(request_filename), os.path.dirname(request_filename)) except IOError: logger.info(u'Alo! I can\'t write request file!') logger.debug("get_file_path: " + get_file_path(self)) logger.debug("media_file.name: " + os.path.basename(self.media_file.name)) async_result = git_annex_get.delay( get_file_path(self), os.path.basename(self.media_file.name))
def request_copy(self, save=True): u""" Gera um pedido de copia local do media Os pedidos tem um codigo uuid e são gravados em /repository/mucua/requests/uuid O arquivo atualmente contem somente o caminho para o media no repositorio. """ self.set_is_local() if not self.is_local: self.is_requested = True if save: self.save() try: requests_path = os.path.join(REPOSITORY_DIR, self.get_repository(), DEFAULT_MUCUA, 'requests') if not os.path.exists(requests_path): os.makedirs(requests_path) request_filename = os.path.join(requests_path, self.uuid) logger.info("REQUESTING: " + request_filename) request_file = open(request_filename, 'a') request_file.write(self.media_file.path) request_file.close # TODO: Need to git add logger.debug("ADDING REQUEST: " + os.path.basename(request_filename)) logger.debug("ADDED ON: " + os.path.dirname(request_filename)) from repository.models import git_add git_add(os.path.basename(request_filename), os.path.dirname(request_filename)) except IOError: logger.info(u'Alo! I can\'t write request file!') logger.debug("get_file_path: " + get_file_path(self)) logger.debug("media_file.name: " + os.path.basename(self.media_file.name)) async_result = git_annex_get.delay(get_file_path(self), os.path.basename(self.media_file.name))
def handle(self, *args, **options): repository = args[0] mucua = args[1] # Here we copy mucuas requests from all "linked mucuas" linked_mucuas = git_remote_get_list(repository) requests_path = os.path.join(REPOSITORY_DIR, repository, mucua, "requests") if not os.path.exists(requests_path): os.makedirs(requests_path) for lmucua in linked_mucuas: lmucua_dir = os.path.join(REPOSITORY_DIR, repository, lmucua, "requests") if not os.path.isdir(lmucua_dir): os.mkdir(lmucua_dir) src_files = os.listdir(lmucua_dir) for file_name in src_files: full_file_name = os.path.join(lmucua_dir, file_name) if (os.path.isfile(full_file_name)): shutil.copy(full_file_name, requests_path) # TODO: Need to git add logger.debug('ADDING REQUEST: ' + os.path.basename(full_file_name)) logger.debug('ADDED ON: ' + requests_path) git_add(os.path.basename(full_file_name), requests_path) request_list = [uuid for uuid in os.listdir(requests_path)] for request_uuid in request_list: if os.path.isfile(os.path.join(requests_path, request_uuid)): try: media = Media.objects.get(uuid=request_uuid) media.set_is_local() if media.is_local: request_list = [uuid for uuid in request_list if uuid != request_uuid] logger.debug('REMOVING REQUEST: ' + request_uuid) git_rm(request_uuid, requests_path) # Here we also git annex drop the file because # it's only a "transport copy", couse of # media.is_requested = False. if not media.is_requested: requests = [] # Check if we can drop, couse linked mucuas doesn't have pending request for lmucua in linked_mucuas: requests_path = os.path.join(REPOSITORY_DIR, repository, lmucua, "requests") for name in os.listdir(requests_path): if os.path.isfile(os.path.join(requests_path, name)): requests.append(name) if request_uuid not in requests: # Check to see if origin mucua is not the current mucua if media.origin.description != mucua: # Doesn't work #git_annex_drop(media) pass else: media.is_requested = False media.save() else: repository_path = os.path.join(REPOSITORY_DIR, media.get_repository()) async_result = git_annex_get.delay(get_file_path(media), os.path.basename(media.media_file.name)) logger.debug(async_result.info) media.save() except Media.DoesNotExist: logger.debug('Requested media not found: {0}'.format(request_uuid))
def handle(self, *args, **options): repository = args[0] mucua = args[1] # Here we copy mucuas requests from all "linked mucuas" linked_mucuas = git_remote_get_list(repository) requests_path = os.path.join(REPOSITORY_DIR, repository, mucua, "requests") if not os.path.exists(requests_path): os.makedirs(requests_path) for lmucua in linked_mucuas: lmucua_dir = os.path.join(REPOSITORY_DIR, repository, lmucua, "requests") if not os.path.isdir(lmucua_dir): os.mkdir(lmucua_dir) src_files = os.listdir(lmucua_dir) for file_name in src_files: full_file_name = os.path.join(lmucua_dir, file_name) if (os.path.isfile(full_file_name)): shutil.copy(full_file_name, requests_path) # TODO: Need to git add logger.debug('ADDING REQUEST: ' + os.path.basename(full_file_name)) logger.debug('ADDED ON: ' + requests_path) git_add(os.path.basename(full_file_name), requests_path) request_list = [uuid for uuid in os.listdir(requests_path)] for request_uuid in request_list: if os.path.isfile(os.path.join(requests_path, request_uuid)): try: media = Media.objects.get(uuid=request_uuid) media.set_is_local() if media.is_local: request_list = [ uuid for uuid in request_list if uuid != request_uuid ] logger.debug('REMOVING REQUEST: ' + request_uuid) git_rm(request_uuid, requests_path) # Here we also git annex drop the file because # it's only a "transport copy", couse of # media.is_requested = False. if not media.is_requested: requests = [] # Check if we can drop, couse linked mucuas doesn't have pending request for lmucua in linked_mucuas: requests_path = os.path.join( REPOSITORY_DIR, repository, lmucua, "requests") for name in os.listdir(requests_path): if os.path.isfile( os.path.join(requests_path, name)): requests.append(name) if request_uuid not in requests: # Check to see if origin mucua is not the current mucua if media.origin.description != mucua: # Doesn't work #git_annex_drop(media) pass else: media.is_requested = False media.save() else: repository_path = os.path.join(REPOSITORY_DIR, media.get_repository()) async_result = git_annex_get.delay( get_file_path(media), os.path.basename(media.media_file.name)) logger.debug(async_result.info) media.save() except Media.DoesNotExist: logger.debug( 'Requested media not found: {0}'.format(request_uuid))