Skip to content

Commit

Permalink
Fixing permissions, third try (#116)
Browse files Browse the repository at this point in the history
  • Loading branch information
Harald Wilhelmi committed Jul 23, 2024
1 parent f9896a2 commit b7a17d5
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions server/src/scimodom/services/file.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
import os
import re
from enum import Enum
from fcntl import flock, LOCK_SH, LOCK_EX, LOCK_UN
Expand Down Expand Up @@ -26,6 +27,10 @@
DEFAULT_MODE = 0o660


def write_opener(path, flags):
return os.open(path, flags, DEFAULT_MODE)


class FileTooLarge(Exception):
pass

Expand Down Expand Up @@ -147,7 +152,7 @@ def update_gene_cache(self, selection_id: int, genes: Iterable[str]) -> None:
:type genes: Iterable[str]
"""
path = Path(self._get_gene_cache_dir(), str(selection_id))
with open(path, "w", mode=DEFAULT_MODE) as fh:
with open(path, "w", opener=write_opener) as fh:
flock(fh.fileno(), LOCK_EX)
for g in genes:
print(g, file=fh)
Expand All @@ -167,7 +172,7 @@ def create_project_metadata_file(self, smid: str) -> TextIO:
:rtype: TextIO
"""
metadata_file = Path(self._get_project_metadata_dir(), f"{smid}.json")
return open(metadata_file, "w", mode=DEFAULT_MODE)
return open(metadata_file, "w", opener=write_opener)

def create_project_request_file(self, request_uuid) -> TextIO:
"""Open a metadata (request) file for writing.
Expand All @@ -179,7 +184,7 @@ def create_project_request_file(self, request_uuid) -> TextIO:
"""
path = Path(self._get_project_request_file_path(request_uuid))
logger.info(f"Writing project request to {path}...")
return open(path, "w", mode=DEFAULT_MODE)
return open(path, "w", opener=write_opener)

def open_project_request_file(self, request_uuid) -> TextIO:
"""Open a metadata (request) file for reading.
Expand Down Expand Up @@ -270,7 +275,7 @@ def create_assembly_file(self, taxa_id: int, file_type: AssemblyFileType) -> Tex
raise NotImplementedError()
path = self.get_assembly_file_path(taxa_id, file_type)
self._create_folder(path.parent)
return open(path, "x", mode=DEFAULT_MODE)
return open(path, "x", opener=write_opener)

def create_chain_file(
self, taxa_id: int, file_name: str, assembly_name
Expand All @@ -294,7 +299,7 @@ def create_chain_file(
chain_assembly_name=assembly_name,
)
self._create_folder(path.parent)
return open(path, "xb", mode=DEFAULT_MODE)
return open(path, "xb", opener=write_opener)

def delete_assembly(self, taxa_id: int, assembly_name: str) -> None:
"""Remove assembly directory structure
Expand Down Expand Up @@ -374,7 +379,7 @@ def _stream_to_file(self, data_stream, path, max_size, overwrite_is_ok=False):
self._create_folder(dirname(path))
try:
bytes_written = 0
with open(path, "wb", mode=DEFAULT_MODE) as fp:
with open(path, "wb", opener=write_opener()) as fp:
while True:
buffer = data_stream.read(self.BUFFER_SIZE)
if len(buffer) == 0:
Expand Down

0 comments on commit b7a17d5

Please # to comment.