Skip to content

Database-backed folder problem #27

@petrklus

Description

@petrklus

Hi,

I am setting-up a database-backed version and the example is giving me following error when trying to push a file (folders are OK):

Django version 1.7.7, using settings 'ft1_templateengine.settings'
Starting development server at http://0.0.0.0:8002/
Quit the server with CONTROL-C.
[10/Apr/2015 10:55:39] "HEAD /dbdav/ HTTP/1.1" 200 0
[10/Apr/2015 10:55:39] "PROPFIND /dbdav/test/ HTTP/1.1" 207 465
Internal Server Error: /dbdav/test/0a0580af142411996101666820_700wa_0.gif
Traceback (most recent call last):
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/virtualenv2/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/virtualenv2/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view
    return self.dispatch(request, *args, **kwargs)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/virtualenv2/lib/python2.7/site-packages/django/utils/decorators.py", line 29, in _wrapper
    return bound_func(*args, **kwargs)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/virtualenv2/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
    return view_func(*args, **kwargs)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/virtualenv2/lib/python2.7/site-packages/django/utils/decorators.py", line 25, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/ft1_templateengine/djangodav/views/views.py", line 71, in dispatch
    resp = handler(request, self.path, *args, **kwargs)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/ft1_templateengine/djangodav/views/views.py", line 218, in put
    self.resource.write(request)
  File "/Users/petr/Dropbox/work/repos/ft1_templateengine/ft1_templateengine/ft1_templates/resources.py", line 21, in write
    size = len(content)
TypeError: object of type 'WSGIRequest' has no len()
[10/Apr/2015 10:55:39] "PUT /dbdav/test/0a0580af142411996101666820_700wa_0.gif HTTP/1.1" 500 105425

I am using the resource implementation straight from the examples:

class MyDBDavResource(NameLookupDBDavMixIn, BaseDBDavResource):
    collection_model = CollectionModel
    object_model = ObjectModel

    def write(self, content):
        size = len(content)
        hashsum = md5(content).hexdigest()
        content = b64encode(content)
        if not self.exists:
            self.object_model.objects.create(
                name=self.displayname,
                parent=self.get_parent().obj,
                md5=hashsum,
                size=size,
                content=content
            )
            return
        self.obj.size = size
        self.obj.modified = now()
        self.obj.content = content
        self.md5 = hashsum
        self.obj.save(update_fields=['content', 'size', 'modified', 'md5'])

    def read(self):
        return b64decode(self.obj.content)

    @property
    def getetag(self):
        return self.obj.md5

    @property
    def getcontentlength(self):
        return self.obj.size

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions