← Back to team overview

oerppy-hackers team mailing list archive

[Branch ~oerppy-hackers/oerppy/trunk] Rev 35: * Lots of fixes to the data models (possible now that I have access to the

 

------------------------------------------------------------
revno: 35
committer: duncan@xxxxxxxxxx
branch nick: trunk
timestamp: Fri 2011-06-03 08:19:21 -0600
message:
  * Lots of fixes to the data models (possible now that I have access to the
    OpenERP data and know what the returned structures look like) with some
    corresponding changes to the unit tests.
  * Fixed variable name typos in CanonicalAddons as well as some semantic
    changes to method names.
  * Fixed raw export to output as JSON.
modified:
  oerppy/addons/canonical/query.py
  oerppy/model.py
  oerppy/scripting/base.py
  oerppy/service.py
  oerppy/tests/test_model.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
=== modified file 'oerppy/addons/canonical/query.py'
--- oerppy/addons/canonical/query.py	2011-06-02 22:46:11 +0000
+++ oerppy/addons/canonical/query.py	2011-06-03 14:19:21 +0000
@@ -68,8 +68,9 @@
                 ('week','<=', last_week.isoformat())
             ],
             fields=[])
+        return weeks
 
-    def get_timeentry(self, week):
+    def get_users_timeentry(self, week, user_ids):
         """
         Get the timeentry for a given week.
         """
@@ -107,7 +108,7 @@
 
         weeks = self.get_all_timeentry_weeks()
         user_ids = self.get_oem_user_ids()
-        users = self.get_users_names(user_ids)
+        users = self.get_user_names(user_ids)
         # build list of names for each user id
         user_list = {}
         for u in users:
@@ -116,8 +117,7 @@
         records = []
         for week in weeks:
             # get timesheets for the week
-            timesheets = self.get_timeentry(week["week"])
-
+            timesheets = self.get_users_timeentry(week, user_ids)
             # store lookup of total time by user for this week
             total_time = {}
             if timesheets:
@@ -129,7 +129,7 @@
                 if not total_time.get(u,None):
                     # missing timesheet
                     line = {
-                       'Week Commencing': w['week'],
+                       'Week Commencing': week['week'],
                        'User': user_list[u],
                        'Department': self.user_dept.get(u, '?'),
                        'Total Time': 0,
@@ -137,7 +137,7 @@
                     }
                 else:
                     line = {
-                       'Week Commencing': w['week'],
+                       'Week Commencing': week['week'],
                        'User': user_list[u],
                        'Department': self.user_dept.get(u, '?'),
                        'Total Time': total_time.get(u,{}).get('time',0),

=== modified file 'oerppy/model.py'
--- oerppy/model.py	2011-06-02 22:46:11 +0000
+++ oerppy/model.py	2011-06-03 14:19:21 +0000
@@ -14,7 +14,10 @@
 
     def __init__(self, results, *args, **kwds):
         for row in results:
-            self.add(self.model(row, *args, **kwds))
+            try:
+                self.add(self.model(row, *args, **kwds))
+            except:
+                import pdb;pdb.set_trace()
 
 
 class HREmployee(Model):
@@ -23,10 +26,20 @@
     "hr.employee" entity.
     """
     def __init__(self, row):
+        user_data = row["user_id"]
+        if user_data:
+            self.user_id = user_data[0]
+        else:
+            self.user_id = None
         self.name = row["name"][0]
-        self.department_id = row["department_id"][1]
         self.resource_id = row["resource_id"][0]
-        self.user_id = row["user_id"][0]
+        department_data = row["department_id"]
+        if department_data:
+            self.department_id = department_data[0]
+            self.department_name = department_data[1]
+        else:
+            self.department_id = None
+            self.department_name = None
 
 
 class HREmployeeSet(ResultSet):
@@ -44,8 +57,8 @@
         table = {}
         table["unknown"] = 0
         for user in self:
-            if user.department_id and user.user_id:
-                table[user.user_id] = user.department_id
+            if user.department_name and user.user_id:
+                table[user.user_id] = user.department_name
             elif user.user_id:
                 table[user.user_id] = "?"
             else:
@@ -62,7 +75,7 @@
         self.project_id = row['project_id'][1]
         self.task_id = row['task_id'][1]
         self.user_id = row['user_id'][1]
-        self.department_id = depts.get(self.user_id, "?")
+        self.department_name = depts.get(self.user_id, "?")
         self.hours = row['hours']
         self.date = row['date']
         self.year = int(row['date'][0:4])

=== modified file 'oerppy/scripting/base.py'
--- oerppy/scripting/base.py	2011-06-02 17:25:28 +0000
+++ oerppy/scripting/base.py	2011-06-03 14:19:21 +0000
@@ -1,4 +1,5 @@
 from optparse import OptionParser
+import sys
 
 from oerppy import config, const, service
 
@@ -86,7 +87,8 @@
             fd = open(options.output_filename, "w+")
         # dispatch the appropriate export based on the format option
         if options.export_format == const.EXPORT_RAW:
-            fd.write(data)
+            import json
+            fd.write(json.dumps(data))
         elif options.export_format == const.EXPORT_CSV:
             export.export_csv(data, fd)
         #elif options.export_format == const.EXPORT_GOOGLE_DOCS:

=== modified file 'oerppy/service.py'
--- oerppy/service.py	2011-06-02 19:03:01 +0000
+++ oerppy/service.py	2011-06-03 14:19:21 +0000
@@ -79,7 +79,6 @@
         """
         uri = self.get_uri()
         if purge or type(self._proxy) == type(None):
-            print uri
             self._proxy = xmlrpclib.ServerProxy(uri, allow_none=1)
         return self._proxy
 

=== modified file 'oerppy/tests/test_model.py'
--- oerppy/tests/test_model.py	2011-06-02 22:46:11 +0000
+++ oerppy/tests/test_model.py	2011-06-03 14:19:21 +0000
@@ -3,74 +3,60 @@
 from oerppy import model
 
 
+user_results = [
+    {"name": ["Bob"],
+     "user_id": [314],
+     "department_id": [1, "Crypto"],
+     "resource_id": [34]},
+    {"name": ["Alice"],
+     "user_id": [315],
+     "department_id": [2, "Maths"],
+     "resource_id": [37]},
+    {"name": ["Carol"],
+     "user_id": [316],
+     "department_id": False,
+     "resource_id": [42]},
+    ]
+
+
 class HRTestCase(unittest.TestCase):
 
-    def setUp(self):
-        self.user_results = [
-            {"name": ["Bob"],
-             "user_id": [314],
-             "department_id": ["what's this field?", 1],
-             "resource_id": [34]},
-            {"name": ["Alice"],
-             "user_id": [315],
-             "department_id": ["UKN", 2],
-             "resource_id": [37]},
-            {"name": ["Carol"],
-             "user_id": [316],
-             "department_id": ["UKN", None],
-             "resource_id": [42]},
-            ]
-
     def test_hr_employee(self):
-        employee = model.HREmployee(self.user_results[1])
+        employee = model.HREmployee(user_results[1])
         self.assertEqual(employee.user_id, 315)
         self.assertEqual(employee.name, "Alice")
         self.assertEqual(employee.department_id, 2)
         self.assertEqual(employee.resource_id, 37)
 
     def test_hr_employee_set(self):
-        results = model.HREmployeeSet(self.user_results)
+        results = model.HREmployeeSet(user_results)
         self.assertEqual(len(results), 3)
         user = results.get_user(314)
         self.assertEqual(user.name, "Bob")
         table = results.build_department_lookup_table()
-        self.assertEqual(table.get(315), 2)
+        self.assertEqual(table.get(315), "Maths")
         self.assertEqual(table.get(316), "?")
 
 class ProjectTaskWorkTestCase(unittest.TestCase):
 
     def setUp(self):
-        self.user_results = [
-            {"name": ["Bob"],
-             "user_id": [314],
-             "department_id": ["what's this field?", 1],
-             "resource_id": [34]},
-            {"name": ["Alice"],
-             "user_id": [315],
-             "department_id": ["UKN", 2],
-             "resource_id": [37]},
-            {"name": ["Carol"],
-             "user_id": [316],
-             "department_id": ["UKN", None],
-             "resource_id": [42]},
-            ]
         self.work_results = [
             {"project_id": ["UKN", 1],
              "task_id": ["UKN", 1001],
              "user_id": ["UKN", 314],
              "hours": 273,
-             "department_id": ["what's this field?", 1],
+             "department_id": [1, "Crypto"],
              "date": "2011-05-01",
              "week_start": 172},
             {"project_id": ["UKN", 2],
              "task_id": ["UKN", 1002],
              "user_id": ["UKN", 315],
              "hours": 735,
-             "department_id": ["what's this field?", 2],
+             "department_id": [2, "Maths"],
              "date": "2011-05-01",
              "week_start": 172},
             ]
-        self.results = model.HREmployeeSet(self.user_results)
+        self.results = model.HREmployeeSet(user_results)
         self.table = self.results.build_department_lookup_table()
 
     def test_project_task_work(self):
@@ -79,7 +65,7 @@
         self.assertEqual(work.project_id, 2)
         self.assertEqual(work.task_id, 1002)
         self.assertEqual(work.user_id, 315)
-        self.assertEqual(work.department_id, 2)
+        self.assertEqual(work.department_name, "Maths")
         self.assertEqual(work.hours, 735)
         self.assertEqual(work.date, "2011-05-01")
         self.assertEqual(work.year, 2011)