mediapop / django-friendface

Getting Facebook to work for Django.
2 stars 0 forks source link

Refactor request decorations into a lazy loadable object. #76

Closed kitsunde closed 10 years ago

kitsunde commented 11 years ago

Right now the middleware is doing multiple database hits that might not be needed.

I'd like to do this:

class FacebookContext(object):
    request = request
    decoded_signed_request = None
    application = None

    def __init__(self, request):
        self.request = request

    def application(self):
        # .. figure out app

    def user(self):
        self.application.facebookuser_set.get(self.request.user)

    def signed_request(self):
        return self.decoded_signed_request

Except it'll lazy load things as needed. Changing the API too:

request.facebook => request.facebook.application
request.facebook_user => request.facebook.user
request.REQUEST => request.facebook.signed_request

This is backwards incompatible.

gaqzi commented 11 years ago

Very good idea!

kitsunde commented 11 years ago

Also:

request.facebook.page

On page requests.

kitsunde commented 10 years ago

This is implemented in the 1.5 branch. You can now do:

request.facebook.user
request.facebook.application
request.facebook.request