I had an old html5lib installed with –user, that would break globally installed pip from my Arch Linux system. Posting the solution that worked for me here because i couldn’t find it elsewhere: pip uninstall html Uninstalling html5lib-0.9999999: Would remove: /home/jpic/.local/lib/python3.6/site-packages/html5lib-0.9999999-py3.6.egg-info /home/jpic/.local/lib/python3.6/site-packages/html5lib/* Proceed (y/n)? y Successfully uninstalled html5lib-0.9999999 Then, pip install --user worked again. The full traceback was: Traceback (most recent call last): File “/usr/lib/python3.6/site-packages/pip/_internal/”, line 228, in main status = self. [Read More]


In the first screen we see that two posts in the list have a different button in the Actions column. The first row is a post that I’m the owner of, therefore the Actions shows a button for a dropdown menu. The second row is a post that I’m not owner of, but that has been published, so, I only have the detail link on that row. In the second screenshot, using the checkboxes reveals possible groupped actions on the bottom of the screen, here “Delete objects” which serves as reference action. [Read More]

CRUDLFA+ 0.3 Series

CRUDLFA+ is an expirement (read: pre-alpha state) of what Django could be if: generic views provided templates and javascript for a rich experience out of the box, class based views leveraged OOP a bit more to add DRY goodness, leveraged externals apps from the Django ecosystem. Let’s compare it side by side. Consider this simple model: class Email(models.Model): email = models.EmailField() caisse = models.ForeignKey('Caisse', on_delete=models.CASCADE) def __str__(self): return self. [Read More]

Getting generic views to support “fake” models

Sometimes, we need to make views around objects which are not stored in the database. They may be calculated on the fly in python, or come from some data source that’s not the database, or which aggregates several objects in the database. This is supported out of the box with CRUDLFA+, the modern web framework for Django. All you need to implement is: a Model class with what you want in it, just set Meta. [Read More]