1 from project import Project
2 from observable import ObservableList
3 from filtered_list import FilteredList
4 from compat import sorted
5 #from tickler import TickleDirectory
6 #from inout.io import *
8 #project_directory = '@Projects/'
11 #def make_string_stripper(to_strip):
12 # return lambda x: x.replace(to_strip,'')
14 class Projects(ObservableList,FilteredList):
16 super(Projects,self).__init__()
17 def with_status(self,status):
19 return self.with_property(lambda p:p.status == status)
21 def sorted_by_status(self):
22 return sorted(self,cmp=lambda x,y:y.status.__cmp__(x.status))
23 # def __init__(self,project_directory):
24 # self.review_directory = project_directory+'@Review/'
25 # self.done_directory = project_directory+'@Done/'
26 # self.someday_directory = project_directory+'@Someday/'
27 # self.tickled_directory = project_directory+'@Tickled/'
28 # self.project_dir_name = '@Projects/'
30 # self.tickle_times=None
31 # self.someday_contexts=None
33 # self.root = project_directory
34 # self.processed_projects = []
35 # self.review_projects = []
36 # self.someday_projects = []
37 # self.tickled_projects = []
40 # def get_tickle_times(self):
41 # if self.tickle_times == None:
42 # self.tickle_times=map(make_string_stripper(self.tickled_directory+'/'),list_dir(self.tickled_directory,True,is_dir))
43 # return self.tickle_times
44 # def get_someday_contexts(self):
45 # if self.someday_contexts == None:
46 # self.someday_contexts=map(make_string_stripper(self.someday_directory+'/'),list_dir(self.someday_directory,True,is_dir))
47 # return self.someday_contexts
49 # def read(self,root,recursive=False):
50 # # TODO Use generic read funct
51 # return [Project(project_name) for project_name in list_dir(root, recursive, lambda name: name.endswith('.prj'))]
52 # def get_all_projects(self):
53 # return self.get_active_projects() + self.get_review_projects() + \
54 # self.get_tickled_projects() + self.get_someday_projects()
55 # def get_current_projects(self):
56 # return self.get_active_projects() + self.get_review_projects()
57 # def get_inactive_projects(self):
58 # return self.get_tickled_projects() + self.get_someday_projects()
59 # def get_active_projects(self):
60 # if self.processed_projects == None:
61 # self.processed_projects = self.read(self.root)
62 # return self.processed_projects
63 # def get_review_projects(self):
64 # if self.review_projects == None:
65 # self.review_projects = self.read(self.review_directory)
66 # return self.review_projects
67 # def get_tickled_projects(self):
68 # if self.tickled_projects == None:
69 # self.tickled_projects = self.read(self.tickled_directory,True)
70 # return self.tickled_projects
71 # def get_someday_projects(self):
72 # if self.someday_projects == None:
73 # self.someday_projects = self.read(self.someday_directory,True)
74 # return self.someday_projects
75 # def get_current_tickled_projects(self):
76 # current_tickled_projects = []
77 # tickled_projects = self.get_tickled_projects()
78 # for project in tickled_projects:
79 # if project.should_not_be_tickled():
80 # current_tickled_projects.append(project)
81 # return current_tickled_projects
83 # def add_project(self,project):
84 # # Projects are not being reread
85 # if self.processed_projects:
86 # self.get_active_projects().insert(0,project)
87 # def create_project(self,project_name):
88 # project_file_name = (project_directory+project_name+'.prj')
89 # project = Project(project_file_name)
92 # self.add_project(project)
97 # ##logger.log(u'Starting to process')
100 # ##logger.log('Searching for projects without next act')
101 # for project in self.get_active_projects():
102 # #logger.log(project.name(),2)
103 # self.process_project(project)
104 # ##logger.log('Searching for projects that should be untickled')
105 # for project in self.get_current_tickled_projects():
106 # self.review(project)
108 # ##logger.log('Removing obsolete tickle directories')
109 # for tickle_dir in self.get_tickle_times():
110 # if TickleDirectory(tickle_dir).is_obsolete():
112 # os.removedirs(u'%s/%s'%(self.tickled_directory,tickle_dir))
119 # def process_project(self,project):
120 # is_active = project.process()
122 # self.review(project)
124 # def update_status(self,project):
125 # if project.has_active_actions() and project.get_status()==inactive:
126 # self.activate(project)
127 # elif not project.has_active_actions() and project.is_processed():
128 # self.review(project)
130 # def review(self,project):
131 # project.move_to(self.review_directory)
132 # def set_done(self,project):
133 # project.inactivate()
134 # project.move_to(self.done_directory)
135 # def activate(self,project):
136 # project.move_to(self.root)
138 # def defer(self,project,context=''):
139 # project.inactivate()
140 # project.move_to(u'%s/%s'%(self.someday_directory,context))
141 # def tickle(self,project,time=''):
142 # project.inactivate()
143 # project.move_to(u'%s/%s'%(self.tickled_directory,time))
145 __all__ = ["Projects"]