[Workman-svn] SF.net SVN: workman:[32] trunk
An unobtrusive time-tracking program for self-employed people
Status: Pre-Alpha
Brought to you by:
jmsilva
|
From: <jm...@us...> - 2011-10-21 00:51:40
|
Revision: 32
http://workman.svn.sourceforge.net/workman/?rev=32&view=rev
Author: jmsilva
Date: 2011-10-21 00:51:34 +0000 (Fri, 21 Oct 2011)
Log Message:
-----------
- Changes to the database.
- Changes to the type classes.
- Corrected the main window's UI to use a QTableView instead of a QListView
Modified Paths:
--------------
trunk/db.sql
trunk/src/db.py
trunk/src/gui/build_ui.sh
trunk/src/gui/workman.ui
trunk/src/types.py
Modified: trunk/db.sql
===================================================================
--- trunk/db.sql 2011-10-21 00:51:20 UTC (rev 31)
+++ trunk/db.sql 2011-10-21 00:51:34 UTC (rev 32)
@@ -16,24 +16,30 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+/*
+This should work with SQLite 3
+It doesn't enforce the foreign keys, but they are provided for
+ease of migration to another database.
+*/
+
drop table employers;
create table employers(
- employer_id integer not null autoincrement,
+ employer_id integer primary key autoincrement,
employer_name varchar(128) not null,
employer_description varchar not null,
- primary key(employer_id),
+ --primary key(employer_id),
unique(employer_name)
);
drop table employer_instances;
create table employer_instances(
- employer_instance_id integer not null autoincrement,
+ employer_instance_id integer primary key autoincrement,
employer_id integer not null,
- employer_hourly_rate float not null
+ employer_hourly_rate float not null,
employer_rate_start_date date not null,
- primary key(employer_instance_id),
+ --primary key(employer_instance_id),
unique(employer_id, employer_rate_start_date),
foreign key(employer_id) references employers
);
@@ -41,11 +47,11 @@
drop table projects;
create table projects(
- project_id integer not null autoincrement,
+ project_id integer primary key autoincrement,
project_name varchar(128) not null,
project_description varchar not null,
employer_id integer not null,
- primary key(project_id),
+ --primary key(project_id),
unique(project_name),
foreign key(employer_id) references employers
);
@@ -53,23 +59,25 @@
drop table sessions;
create table sessions(
- session_id integer not null autoincrement,
+ session_id integer primary key autoincrement,
session_start_time date not null,
session_end_time date not null,
session_description varchar not null,
project_id integer not null,
- primary key(session_id),
+ --primary key(session_id),
unique(session_start_time, project_id),
foreign key(project_id) references projects
);
+drop table breaks;
+
create table breaks(
- break_id integer not null autoincrement,
+ break_id integer primary key autoincrement,
break_start_time date not null,
break_end_time date not null,
break_reason varchar(128) not null,
session_id integer not null,
- primary key(break_id),
+ --primary key(break_id),
unique(break_start_time, session_id),
foreign key(session_id) references sessions
);
@@ -78,15 +86,16 @@
drop table tasks;
create table tasks(
- task_id integer not null autoincrement,
+ task_id integer primary key autoincrement,
project_name varchar(128) not null,
task_name varchar(256) not null,
task_description varchar not null,
task_due_date date not null,
- primary key(task_id),
+ --primary key(task_id),
unique(project_name, task_name),
foreign key(project_name) references projects
);
+
*/
/*
@@ -95,9 +104,11 @@
- no start dates smaller than the biggest end date
*/
-insert into employers(
- employer_name, employer_hourly_rate, employer_rate_start_date)
- values('None', 0, datetime());
+insert into employers
+ values(1, 'None', 'For personal projects');
+insert into employer_instances(employer_id,
+ employer_hourly_rate, employer_rate_start_date)
+ values(1, 0.0, datetime());
insert into projects(project_name, project_description, employer_id)
- (select 'None', 'For unassigned projects', employer_id from employers);
+ select 'None', 'For unassigned projects', employer_id from employers;
Modified: trunk/src/db.py
===================================================================
--- trunk/src/db.py 2011-10-21 00:51:20 UTC (rev 31)
+++ trunk/src/db.py 2011-10-21 00:51:34 UTC (rev 32)
@@ -19,7 +19,7 @@
'''
Created on 2009/11/30
-@author: jms
+@author: João Miguel Ferreira da Silva
'''
Modified: trunk/src/gui/build_ui.sh
===================================================================
--- trunk/src/gui/build_ui.sh 2011-10-21 00:51:20 UTC (rev 31)
+++ trunk/src/gui/build_ui.sh 2011-10-21 00:51:34 UTC (rev 32)
@@ -1,4 +1,4 @@
+echo \#\!/usr/bin/python > compiled_ui.py
for i in *.ui ; do
- basename=`basename $i .ui`
- pyuic4 -o $basename.py $i && true
+ pyuic4 $i >> compiled_ui.py && true
done
Modified: trunk/src/gui/workman.ui
===================================================================
--- trunk/src/gui/workman.ui 2011-10-21 00:51:20 UTC (rev 31)
+++ trunk/src/gui/workman.ui 2011-10-21 00:51:34 UTC (rev 32)
@@ -22,16 +22,19 @@
<number>10</number>
</property>
<item>
- <widget class="QListView" name="projectList">
- <property name="toolTip">
- <string>A list with all your projects.</string>
- </property>
+ <widget class="QTableView" name="projectList">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
- <property name="tabKeyNavigation">
+ <property name="alternatingRowColors">
<bool>true</bool>
</property>
+ <property name="selectionBehavior">
+ <enum>QAbstractItemView::SelectRows</enum>
+ </property>
+ <property name="gridStyle">
+ <enum>Qt::NoPen</enum>
+ </property>
</widget>
</item>
<item>
@@ -92,5 +95,59 @@
</widget>
</widget>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>startSessionButton</sender>
+ <signal>clicked()</signal>
+ <receiver>mainWindow</receiver>
+ <slot>startSession()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>569</x>
+ <y>30</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>431</x>
+ <y>-7</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>createProjectButton</sender>
+ <signal>clicked()</signal>
+ <receiver>mainWindow</receiver>
+ <slot>createProject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>547</x>
+ <y>60</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>572</x>
+ <y>140</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>viewSessionsButton</sender>
+ <signal>clicked()</signal>
+ <receiver>mainWindow</receiver>
+ <slot>viewSessions()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>558</x>
+ <y>103</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>549</x>
+ <y>174</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+ <slots>
+ <slot>startSession()</slot>
+ <slot>createProject()</slot>
+ <slot>viewSessions()</slot>
+ </slots>
</ui>
Modified: trunk/src/types.py
===================================================================
--- trunk/src/types.py 2011-10-21 00:51:20 UTC (rev 31)
+++ trunk/src/types.py 2011-10-21 00:51:34 UTC (rev 32)
@@ -21,7 +21,7 @@
Created on 2009/12/08
-@author: jms
+@author: João Miguel Ferreira da Silva
'''
from datetime import datetime
@@ -31,32 +31,59 @@
Specifies an employer
'''
def __init__(self, name = '', rate = 0.0,
- description = '', startDate = ''):
+ description = '', projects = None):
self.name = name
self.rate = rate
self.description = description
- self.startDate = startDate
+ if projects is None:
+ self.projects = {}
+ else:
+ self.projects = projects
class Project:
- def __init__(self, name = '', employer = None, description = ''):
- self.name = name
- self.employer = employer
+ def __init__(self, name = '', employer = None, description = '', sessions = None):
+ self.name = name
self.description = description
+ self.setEmployer(employer)
+ if sessions is None:
+ self.sessions = []
+ else:
+ self.sessions = sessions
+
+ def setEmployer(self, employer):
+ self.employer = employer
+ if not employer is None:
+ employer.projects[self.name] = self
+
class Session:
- def __init__(self, project = None,
- startTime = datetime.now(), endTime = None, message = ''):
- self.project = project
+ def __init__(self, project = None, startTime = datetime.now(),
+ endTime = None, message = '', breaks = None):
self.startTime = startTime
self.endTime = endTime
+ self.setProject(project)
+ if not breaks is None:
+ self.breaks = []
+ else:
+ self.breaks = breaks
+
+ def setProject(self, project):
+ self.project = project
+ if not project is None:
+ project.sessions.append(self)
class Break:
- def __init__(self, session = None,
- startTime = datetime.now(), endTime = None, reason = ''):
- self.session = session
+ def __init__(self, session = None, startTime = datetime.now(),
+ endTime = None, reason = ''):
self.startTime = startTime
self.endTime = endTime
- self.reason = reason
\ No newline at end of file
+ self.reason = reason
+ self.setSession(session)
+
+ def setSession(self, session):
+ self.session = session
+ if not session is None:
+ session.breaks.append(self)
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|