Changeset 2192:7711f612e2bd

Show
Ignore:
Timestamp:
11/23/09 20:42:00 (4 months ago)
Author:
Ronny Pfannschmidt <Ronny.Pfannschmidt@…>
Branch:
default
Message:

don't prematurely cache projects on documents, fixes #338

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pida/core/document.py

    r2162 r2192  
    110110        else: 
    111111            self.filename = None 
    112         self.project = project 
    113112        self.editor = None 
    114113        self._list = [] 
    115114        self._str = "" 
    116115        self.creation_time = time.time() 
     116        self._project = project 
    117117 
    118118        if filename is None: 
     
    123123            self.newfile_index = None 
    124124 
    125         if project is None: 
    126             self.project, self.project_relative_path = self.get_project_relative_path() 
    127         else: 
    128             self.project_relative_path = project.get_relative_path_for(filename) 
    129  
    130125        self.clear() 
     126 
     127 
     128    def project_and_path(self): 
     129        if self.filename is None: 
     130            return None, None 
     131        if self.boss is not None: 
     132            return self.boss.cmd('project', 'get_project_for_document', document=self) 
     133 
     134    @property 
     135    def project(self): 
     136        if self._project is not None: 
     137            return self._project 
     138        pp = self.project_and_path() 
     139        if pp is not None: 
     140            self._project = pp[0] 
     141            return pp[0] 
     142 
     143    @property 
     144    def project_relative_path(self): 
     145        pp = self.project_and_path() 
     146        if pp is not None: 
     147            return pp[1] 
     148        return os.path.join(*os.path.split(self.directory)[-2:]) 
     149 
    131150 
    132151    def clear(self): 
     
    443462            return '' 
    444463 
    445     def get_project_relative_path(self): 
    446         """ 
    447         Returns the relative path to Project's root 
    448         """ 
    449         if self.filename is None: 
    450             return None, None 
    451  
    452         #XXX: move to buffer manager 
    453         if self.boss is None: 
    454             return None, os.path.join(*os.path.split(self.directory)[-2:]) 
    455         match = self.boss.cmd('project', 'get_project_for_document', document=self) 
    456         if match is None: 
    457             return None, os.path.join(*os.path.split(self.directory)[-2:]) 
    458         else: 
    459             project, path = match 
    460             return project, path 
    461  
    462  
    463464    @property 
    464465    def is_new(self):