oerppy-hackers team mailing list archive
-
oerppy-hackers team
-
Mailing list archive
-
Message #00022
[Branch ~oerppy-hackers/oerppy/trunk] Rev 42: * Improved some of the command line help options.
------------------------------------------------------------
revno: 42
committer: duncan@xxxxxxxxxx
branch nick: trunk
timestamp: Thu 2011-06-09 08:24:33 -0600
message:
* Improved some of the command line help options.
* Added support for querying all projects.
* Moved Project query methods out of the Canonical query class and into the
project one.
* Added a TODO file.
added:
TODO
modified:
bin/export_month_timesheets
oerppy/addons/canonical/query.py
oerppy/addons/canonical/scripting/export.py
oerppy/addons/project/query.py
oerppy/scripting/base.py
--
lp:oerppy
https://code.launchpad.net/~oerppy-hackers/oerppy/trunk
Your team oerppy Hackers is subscribed to branch lp:oerppy.
To unsubscribe from this branch go to https://code.launchpad.net/~oerppy-hackers/oerppy/trunk/+edit-subscription
=== added file 'TODO'
--- TODO 1970-01-01 00:00:00 +0000
+++ TODO 2011-06-09 14:24:33 +0000
@@ -0,0 +1,4 @@
+* Create a convenience method on the base Query class for getting an addon.
+* Update the data models per the email from James Jesudason regarding the
+ Canonical customizations.
+* Add a script for getting all the project names.
=== modified file 'bin/export_month_timesheets'
--- bin/export_month_timesheets 2011-06-09 03:06:38 +0000
+++ bin/export_month_timesheets 2011-06-09 14:24:33 +0000
@@ -7,6 +7,7 @@
from oerppy.addons.canonical import canonical_query
from oerppy.addons.canonical.scripting import export
from oerppy.addons.hr import hr_query
+from oerppy.addons.project import project_query
# get configuration; note that option parsing is handled by the script
@@ -15,6 +16,7 @@
# setup any addons that we want
registry.add("base", query.Query)
registry.add("hr", hr_query.HRQuery)
+registry.add("project", project_query.ProjectQuery)
registry.add("canonical", canonical_query.CanonicalQuery)
# run the exporter
monthly_export = export.MonthExport(config_data)
=== modified file 'oerppy/addons/canonical/query.py'
--- oerppy/addons/canonical/query.py 2011-06-09 03:06:38 +0000
+++ oerppy/addons/canonical/query.py 2011-06-09 14:24:33 +0000
@@ -78,44 +78,6 @@
self._cache["oem_user_ids"] = result.user_ids
return result.user_ids
- def get_project(self, id=None, name=""):
- if name:
- query = [('name','=',name)]
- elif id:
- query = [('id','=',id)]
- raw_results = self.client.searchfields(
- entity='project.project',
- query=query,
- fields=[])
- return project.model.ProjectSet(raw_results).get_first()
-
- def get_project_id(self, project_name):
- project = self.get_project(name=project_name)
- if project:
- return project.id
-
- def get_project_user_ids(self, project_name="", project_id=None):
- if project_name:
- query = [('name', '=', project_name)]
- elif project_id:
- query = [('id', '=', project_id)]
- else:
- query = []
- raw_results = self.client.searchfields(
- entity='project.project',
- query=query,
- fields=['members'])
- result = project.model.ProjectSet(raw_results).get_first()
- return result.members
-
- def get_project_names(self):
- raw_results = self.client.searchfields(
- entity='project.project',
- query=[],
- fields=['name'])
- results = project.model.ProjectSet(raw_results)
- return [x.name for x in results]
-
def get_timesheet_hours(self, domains=None):
if not domains:
domains = []
@@ -217,7 +179,8 @@
user_ids=None):
mondays = util.get_mondays(date(year, month, 1), return_iso=True)
if not user_ids:
- user_ids = self.get_project_user_ids(project_name=project_name)
+ user_ids = registry.get_addon("project").get_project_user_ids(
+ project_name=project_name)
all_timesheets = []
records = []
for monday in mondays:
@@ -238,3 +201,12 @@
"hours": project_data.hours}
records.append(row)
return records
+
+ def get_month_timesheets(self, month, year, user_ids=None):
+ records = []
+ project_names = registry.get_addon("project").get_project_names()
+ for project_name in project_names:
+ records = self.get_month_project_timesheets(
+ month, year, project_name)
+ records.extend(records)
+ return records
=== modified file 'oerppy/addons/canonical/scripting/export.py'
--- oerppy/addons/canonical/scripting/export.py 2011-06-09 03:06:38 +0000
+++ oerppy/addons/canonical/scripting/export.py 2011-06-09 14:24:33 +0000
@@ -18,14 +18,14 @@
parser.add_option(
"-m", "--month", dest="month", action="store", type="int",
default=now.month,
- help="the month to export")
+ help="the month to export (default is current month)")
parser.add_option(
"-y", "--year", dest="year", action="store", type="int",
default=now.year,
- help="the year to export")
+ help="the year to export (default is current year)")
parser.add_option(
"-p", "--project", dest="project_name", action="store",
- default=now.year,
+ default="all",
help="the project to get timesheet data for (if not provided, "
"all projects will be returned).")
return parser
@@ -36,8 +36,12 @@
# options of this class added to those
options = self.get_options(purge=True)
addon = self.service.get_addon("canonical")
- data = addon.get_month_project_timesheets(
- options.month, options.year, options.project_name)
+ project_name = options.project_name
+ if project_name == "all":
+ data = addon.get_month_timesheets(options.month, options.year)
+ else:
+ data = addon.get_month_project_timesheets(
+ options.month, options.year, project_name)
self.export(data)
=== modified file 'oerppy/addons/project/query.py'
--- oerppy/addons/project/query.py 2011-06-09 03:06:38 +0000
+++ oerppy/addons/project/query.py 2011-06-09 14:24:33 +0000
@@ -5,6 +5,44 @@
class ProjectQuery(query.Query):
"""
"""
+ def get_project(self, id=None, name=""):
+ if name:
+ query = [('name','=',name)]
+ elif id:
+ query = [('id','=',id)]
+ raw_results = self.client.searchfields(
+ entity='project.project',
+ query=query,
+ fields=[])
+ return model.ProjectSet(raw_results).get_first()
+
+ def get_project_id(self, project_name):
+ project = self.get_project(name=project_name)
+ if project:
+ return project.id
+
+ def get_project_user_ids(self, project_name="", project_id=None):
+ if project_name:
+ query = [('name', '=', project_name)]
+ elif project_id:
+ query = [('id', '=', project_id)]
+ else:
+ query = []
+ raw_results = self.client.searchfields(
+ entity='project.project',
+ query=query,
+ fields=['members'])
+ result = model.ProjectSet(raw_results).get_first()
+ return result.members
+
+ def get_project_names(self):
+ raw_results = self.client.searchfields(
+ entity='project.project',
+ query=[],
+ fields=['name'])
+ results = model.ProjectSet(raw_results)
+ return [x.name for x in results]
+
def timesheet_hours(self, domains):
raw_results = self.client.searchfields(
entity="project.task.work",
=== modified file 'oerppy/scripting/base.py'
--- oerppy/scripting/base.py 2011-06-09 03:06:38 +0000
+++ oerppy/scripting/base.py 2011-06-09 14:24:33 +0000
@@ -68,11 +68,11 @@
parser.add_option(
"-o", "--output-file", dest="output_filename", action="store",
default=const.STDOUT_FILENAME,
- help="the file to write the export to")
+ help="the file to write the export to (default is stdout)")
parser.add_option(
"-f", "--format", dest="export_format", action="store",
default=const.EXPORT_RAW,
- help="the format to export the data in")
+ help="the format to export the data in (default is JSON)")
return parser
def export(self, data, *args, **kwargs):