[Featureserver] Bugreport/Bugfix FeatureServer
Brent Pedersen
bpederse at gmail.com
Tue Aug 26 14:17:33 EDT 2008
hi, i think you may be using an old version of featureserver.
there's a doctest for the sqlite dataset in doc/API.txt. and it has a test
for setting properties.
if you're not using the svn version, could you try that out?
i may be mistaken as it's been a while since i've looked at this stuff.
-brent
On Mon, Aug 25, 2008 at 5:26 PM, <crschmidt at metacarta.com> wrote:
> On Tue, Aug 26, 2008 at 02:20:43AM +0200, Frederik Ramm wrote:
>> Hi Christopher,
>>
>> we (Jochen and myself at Geofabrik) have just used FeatureServer
>> with the SQLite backend for a small application.
>>
>> There was a bug in the SQLite backend that would not allow any property
>> updates to stored features. It was possible to update the *geometry* and
>> it was possible to *create* properties, but not to update properties.
>
> Frederik,
>
> I'm forwarding this to the FeatureServer mailing list, where you can
> feel free to follow up. I've never looked at or touched the sqlite code,
> as it is maintained entirely by another FeatureServer contributor: It is
> my hope that Brent will be able to address your concerns if he has any
> questions.
>
> Thank you for your contribution.
>
>> Reason was that the "update" method expected feature_predicates to
>> return an array that alternatingly contained keys and values, but
>> instead the method returned an array with one string per k/v pair.
>>
>> The attached patch against
>>
>> __version__ = "$Id: SQLite.py 449 2008-03-29 01:34:04Z brentp $"
>>
>> fixes this, rather unelegantly because written by a Python ignorant, but
>> probably better than nothing.
>>
>> During our debugging attempts, we introduced lots of compile errors
>> (e.g. using sys.stderr without "import sys") and were a bit unhappy that
>> these did not lead to "500 Internal Server Error" return codes, but
>> resulted in nice and shiny "200 OK" codes, with the Python stack trace
>> in the body of the HTTP message. Maybe this can be fixed but we felt
>> unable to do so.
>
> Were you using cgi? Both mod_python and wsgi do it right -- and I would
> generally recommend using wsgi for minor testing. As far as my
> investigations have shown, there is no way to set the error code with
> Python CGI responses to 500. If you find any research that shows
> otherwise, I'll gladly work to integrate a fix into the code.
>
>
>
>> Bye
>> Frederik
>>
>> --
>> Frederik Ramm ## eMail frederik at remote.org ## N49°00'09" E008°23'33"
>
>> --- ./DataSource/SQLite.py 2008-08-24 21:14:56.000000000 +0200
>> +++ /srv/featureserver/FeatureServer/DataSource/SQLite.py 2008-08-24 23:09:35.000000000 +0200
>> @@ -111,17 +111,21 @@
>>
>> def feature_predicates (self, feature):
>> columns = self.column_names(feature)
>> - values = self.value_formats(feature)
>> + values = self.feature_values(feature)
>> predicates = []
>> for pair in zip(columns, values):
>> if pair[0] != self.geom_col:
>> - predicates.append(" %s = %s" % pair)
>> + predicates.append(pair[0])
>> + predicates.append(pair[1])
>> + #predicates.append(" %s = %s" % pair)
>> else:
>> - predicates.append(" %s = %s " % (self.geom_col, self.to_wkt(feature.geometry)))
>> + predicates.append(self.geom_col)
>> + predicates.append(self.to_wkt(feature.geometry))
>> + #predicates.append(" %s = %s " % (self.geom_col, self.to_wkt(feature.geometry)))
>> return predicates
>>
>> def feature_values (self, feature):
>> - return copy.deepcopy(feature.properties)
>> + return feature.properties.values()
>>
>> def to_wkt (self, geom):
>> def coords_to_wkt (coords):
>
>
> --
> Christopher Schmidt
> MetaCarta
> _______________________________________________
> Featureserver mailing list
> Featureserver at openlayers.org
> http://featureserver.org/mailman/listinfo/featureserver
>
More information about the Featureserver
mailing list