Django Fobi Versions Save

Form generator/builder application for Django done right: customisable, modular, user- and developer- friendly.

0.19.9

10 months ago
  • Added email_repeat plugin.

0.19.8

1 year ago
  • Method fobi.contrib.plugins.form_handlers.db_store.base.DBStoreHandlerPlugin.run now returns created fobi.contrib.plugins.form_handlers.db_store.models.SavedFormDataEntry.

0.19.7

1 year ago
  • Fix incorrect URLs for files in emails.
  • Drop Python 3.6 support.

0.19.6

1 year ago
  • Tested against Python 3.10 and 3.11. Note that ATM, Python 3.11 tests do pass on SQLite only due to Python 3.11 issue with postgres bindings.
  • Tested against Django 4.1.
  • Drop Python 3.5 support.

0.19.5

1 year ago
  • Enable accidentally forgotten login-required permission on the Dashboard view.

0.19.2

1 year ago
  • Make it easier to get initial data for the ViewFormEntry view.
  • Apply black and isort on entire code base.

0.19.1

1 year ago
  • Added class-based view for Dashboard.

0.19

1 year ago
  • Introduce class based views. Function based views are still supported and will be supported until at least 0.23.

    Migration to class based views is simple. Only your project's urls.py would change:


      urlpatterns = [
          # ...
          url(r'^fobi/', include('fobi.urls.class_based.view')),
          url(r'^fobi/', include('fobi.urls.class_based.edit')),
          # ...
      ]

To use function based views, simply replace the previous line with:


      urlpatterns = [
          # ...
          url(r'^fobi/', include('fobi.urls.view')),
          url(r'^fobi/', include('fobi.urls.edit')),
          # ...
      ]
  • Class-based permissions (work only in combination with class-based views).

    Example:


      from fobi.permissions.definitions import edit_form_entry_permissions
      from fobi.permissions.generic import BasePermission
      from fobi.permissions.helpers import (
          any_permission_required_func, login_required,
      )

      class EditFormEntryPermission(BasePermission):
      """Permission to edit form entries."""

      def has_permission(self, request, view) -> bool:
          return login_required(request) and any_permission_required_func(
              edit_form_entry_permissions
          )(request.user)

      def has_object_permission(self, request, view, obj) -> bool:
          return login_required(request) and any_permission_required_func(
              edit_form_entry_permissions
          )(request.user) and obj.user == request.user

0.18

1 year ago
  • Tested against Python 3.9, Django 3.2 and 4.0.
Release dedicated to my dear son, Tigran, who turned 10 recently.

0.17.1

3 years ago
Release dedicated to defenders of Armenia and Artsakh (Nagorno Karabakh) 
and all the victims of Turkish and Azerbaijani aggression.
  • Replace outdated simplejson with json.