from datetime import datetime import os from typing import Optional, Tuple class NoteBaseCommand(object): date = datetime.now() def file_name(self): return f"{self.date.strftime('%Y%m%d')}.md" def get_formatted_dates(self) -> Tuple[str, str]: return (self.date.strftime("%Y%m%d"), self.date.strftime("%Y-%m-%d")) def get_date(self) -> datetime: return datetime.now() def get_date_parts(self) -> Tuple[str]: return (self.date.strftime('%Y'), self.date.strftime('%m')) def write_file_heading(self, file_path): date_yyyymmdd = self.date.strftime('%Y-%m-%d') underline = '=' * len(date_yyyymmdd) with open(file_path, 'w') as file: file.write(f"{date_yyyymmdd}\n{underline}\n\n\n") def parse_file_date (self, file_name: str) -> Tuple[str, str]: year = file_name[:4] month = file_name[4:6] return year, month def get_notes_path(self, project_data) -> Optional[str]: if project_data and 'folders' in project_data: for folder in project_data['folders']: folder_path = folder['path'] if os.path.basename(folder_path).lower() == "notes": return folder_path return None def create_note(self, project_data, callback): # Get the current date formatted as YYYYMMDD and YYYY-MM-DD notes_path = self.get_notes_path(project_data) if notes_path: year, month = self.get_date_parts() directory = os.path.join(notes_path, year, month) os.makedirs(directory, exist_ok=True) file_path = os.path.join(directory, self.file_name()) # Check if file already exists if os.path.exists(file_path): callback(False, f"The file '{self.file_name()}' already exists.") else: self.write_file_heading(file_path) callback(True, None, file_path) else: callback(False, "No 'Notes' directory found in the project. Please add a 'Notes' folder.")