boxed / django-fastdev

An app to make it safer, faster and more fun to develop in Django
BSD 3-Clause "New" or "Revised" License
148 stars 13 forks source link

Invalid blocks check is faulty #51

Open Mte90 opened 1 week ago

Mte90 commented 1 week ago

With https://github.com/unfoldadmin/django-unfold in my case is Invalid blocks specified: for branding. Also if I put django_fastdev as last app I am getting that error for a block of that template of that package that I don't duplicated in my project.

After investigating a bit in my case is that the blocks doesn't exist as it is a package that has a logic to not print them if found them in various HTML files so the logic right now doens't work.

For fastdev is invalid but in reality is not declared or unused. It should load all the template files to check if a block exists or not and the alert should be different but right now there are no options to disable that alert.

As you can see on https://github.com/unfoldadmin/django-unfold/blob/541a1577ec93630a9c99ec623d395a26c7098b65/src/unfold/templates/unfold/helpers/navigation.html#L10 if the block is not available the file is not loaded so the block for fastdev is not valid but in reality there shouldn't be any errors.

boxed commented 1 week ago

Hmm, I don't understand. You are talking about the invalid block check, but you link to code that references a variable, not a block. I don't see the connection.

Mte90 commented 1 week ago

So the capture custom block for branding: https://github.com/unfoldadmin/django-unfold/blob/541a1577ec93630a9c99ec623d395a26c7098b65/src/unfold/templates/unfold/layouts/skeleton.html#L6 A capturenode in unfold: https://github.com/unfoldadmin/django-unfold/blob/541a1577ec93630a9c99ec623d395a26c7098b65/src/unfold/templatetags/unfold.py#L79

With the actual code in fastdev is not detect and reported as invalid block.

boxed commented 1 week ago

Ah. I see the problem. CaptureNode is incorrect. It does not declare child_nodelists = ('nodelist',) as it should.

Mte90 commented 1 week ago

Reported at https://github.com/unfoldadmin/django-unfold/issues/839

boxed commented 1 week ago

You can also easily monkey patch that attribute yourself to verify.

Mte90 commented 1 week ago

Suggestions on how to do that?

boxed commented 1 week ago

Write

CaptureNode.child_nodelists = ('nodelist', )

somewhere where it is run before the template is loaded.