@observe(
        'constraints', 'hug_width', 'hug_height', 'resist_width',
        'resist_height', 'limit_width', 'limit_height', 'visible')
    def _layout_invalidated(self, change):
        if change['type'] == 'update':
            self.request_relayout()

    #--------------------------------------------------------------------------
    # Public API
    #--------------------------------------------------------------------------
view should return HttpResponseNotAllowed if request isn't POST.
dataset/ETHPy150Open nucleic/enaml/enaml/widgets/constraints_widget.py/ConstraintsWidget._layout_invalidated--crossover with--dataset/ETHPy150Open ofa/connect/open_connect/connectmessages/tests/test_views.py/ThreadUnsubscribeViewTest.test_thread_unsubscribe_view_only_accepts_post