[Osaas-commits] r9 - in trunk: . server/osaas server/test

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Tue Aug 28 12:54:28 CEST 2007


Author: bh
Date: 2007-08-28 12:54:28 +0200 (Tue, 28 Aug 2007)
New Revision: 9

Modified:
   trunk/ChangeLog
   trunk/server/osaas/formparser.py
   trunk/server/test/test_formparser.py
   trunk/server/test/test_osasserver.py
Log:
* server/osaas/formparser.py (Field.deserialize): New method to
support non-string data types
(DateField): New class for fields with date/time values
(Record.set_fields): Deserialize the values of the fields
(form_fields): Turn requesttime into a DateField.

* server/test/test_formparser.py
(FormParsingTests.test_convert_form_urlencoded),
server/test/test_osasserver.py
(OSAASDBServerTests.test_post_with_content)
(OSAASDBServerTests.test_post_with_content_and_filtering): Adapt
to datetime/requesttime changes


Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2007-08-28 10:46:24 UTC (rev 8)
+++ trunk/ChangeLog	2007-08-28 10:54:28 UTC (rev 9)
@@ -1,5 +1,20 @@
 2007-08-28  Bernhard Herzog  <bh at intevation.de>
 
+	* server/osaas/formparser.py (Field.deserialize): New method to
+	support non-string data types
+	(DateField): New class for fields with date/time values
+	(Record.set_fields): Deserialize the values of the fields
+	(form_fields): Turn requesttime into a DateField.
+
+	* server/test/test_formparser.py
+	(FormParsingTests.test_convert_form_urlencoded),
+	server/test/test_osasserver.py
+	(OSAASDBServerTests.test_post_with_content)
+	(OSAASDBServerTests.test_post_with_content_and_filtering): Adapt
+	to datetime/requesttime changes
+
+2007-08-28  Bernhard Herzog  <bh at intevation.de>
+
 	* server/osaas/config.py (find_xml_path, find_xml_path_node)
 	(find_xml_path_text): Split find_xml_path into find_xml_path_node
 	and find_xml_path_text.

Modified: trunk/server/osaas/formparser.py
===================================================================
--- trunk/server/osaas/formparser.py	2007-08-28 10:46:24 UTC (rev 8)
+++ trunk/server/osaas/formparser.py	2007-08-28 10:54:28 UTC (rev 9)
@@ -8,6 +8,8 @@
 """Parse the OSAAS form data into a record"""
 
 import cgi
+import datetime
+import time
 
 class FormParserException(Exception):
 
@@ -20,7 +22,18 @@
         self.name = name
         self.required = required
 
+    def deserialize(self, s):
+        return s
 
+
+class DateField(Field):
+
+    def deserialize(self, string):
+        return datetime.datetime(*time.strptime(string.strip(),
+                                                "%Y-%m-%dT%H:%M:%SZ")[:6])
+
+
+
 class Record:
 
     def set_fields(self, fields, formdata, fieldname_normalizer=None):
@@ -40,7 +53,7 @@
             value = parsed_form.get(field.name)
             if value:
                 if len(value) == 1:
-                    setattr(self, field.name, value[0])
+                    setattr(self, field.name, field.deserialize(value[0]))
                 else:
                     raise FormParserException("only one value allowed"
                                               " for field %r" % field.name)
@@ -49,9 +62,9 @@
                                           " field %r" % field.name)
 
 form_fields = [Field(name, required=True)
-               for name in ["user", "responsetime",
-                            "wmsidextern", "wmsidintern",
+               for name in ["user", "wmsidextern", "wmsidintern",
                             "requeststring"]]
+form_fields.append(DateField("responsetime", required=True))
 
 request_fields = [
     Field("VERSION", required=True),

Modified: trunk/server/test/test_formparser.py
===================================================================
--- trunk/server/test/test_formparser.py	2007-08-28 10:46:24 UTC (rev 8)
+++ trunk/server/test/test_formparser.py	2007-08-28 10:54:28 UTC (rev 9)
@@ -8,6 +8,7 @@
 """Tests for osaas.formparser"""
 
 import sys
+import datetime
 import unittest
 import traceback
 
@@ -31,7 +32,8 @@
                              "%26SERVICE=WMS"])
         self.check_attributes(parse_formdata(formdata),
                               user="karl",
-                              responsetime="2007-06-01T12:14:16Z",
+                              responsetime=datetime.datetime(2007, 6, 1,
+                                                             12, 14, 16),
                               wmsidextern="example.com/cgi-bin/fridawms",
                               wmsidintern="localhost/cgi-bin/myfrida",
                               requeststring=("VERSION=1.1.1&REQUEST=GetMap"

Modified: trunk/server/test/test_osasserver.py
===================================================================
--- trunk/server/test/test_osasserver.py	2007-08-28 10:46:24 UTC (rev 8)
+++ trunk/server/test/test_osasserver.py	2007-08-28 10:54:28 UTC (rev 9)
@@ -9,6 +9,7 @@
 
 import base64
 import threading
+import datetime
 
 import serversupport
 import support
@@ -140,7 +141,8 @@
         self.assertEquals(len(self.dbrequests), 1)
         self.check_attributes(self.dbrequests[0],
                               user="karl",
-                              responsetime="2007-06-01T12:14:16Z",
+                              responsetime=datetime.datetime(2007, 6, 1,
+                                                             12, 14, 16),
                               wmsidextern="example.com/cgi-bin/fridawms",
                               wmsidintern="localhost/cgi-bin/myfrida",
                               requeststring=("VERSION=1.1.1&REQUEST=GetMap"
@@ -196,7 +198,8 @@
         self.assertEquals(len(self.dbrequests), 1)
         self.check_attributes(self.dbrequests[0],
                               user="karl",
-                              responsetime="2007-06-01T12:14:16Z",
+                              responsetime=datetime.datetime(2007, 6, 1,
+                                                             12, 14, 16),
                               wmsidextern="example.com/cgi-bin/fridawms",
                               wmsidintern="localhost/cgi-bin/myfrida",
                               requeststring=("VERSION=1.1.1&REQUEST=GetMap"



More information about the Osaas-commits mailing list