Skip to content

Commit

Permalink
Add events to ControlQueryList, Fix manytomany update in ModelForm
Browse files Browse the repository at this point in the history
  • Loading branch information
UmSenhorQualquer committed Feb 14, 2019
1 parent 36cd766 commit 72b2f50
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 deletions.
15 changes: 13 additions & 2 deletions pyforms_web/controls/control_querylist.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ def __init__(self, *args, **kwargs):
self._columns_align = kwargs.get('columns_align', None)
self.item_selection_changed_event = kwargs.get('item_selection_changed_event', self.item_selection_changed_event)

self.filter_event = kwargs.get('filter_event', self.filter_event)
self.page_event = kwargs.get('page_event', self.page_event)
self.sort_event = kwargs.get('sort_event', self.sort_event)

self.search_field_key = None
self.filter_by = []
Expand Down Expand Up @@ -265,19 +268,27 @@ def serialize(self, init_form=False):
return data


def page_changed_event(self):
def page_changed_event(self):
self.page_event()
self._selected_row_id = -1
self.mark_to_update_client()

def sort_changed_event(self):
def sort_changed_event(self):
self.sort_event()
self._selected_row_id = -1
self.mark_to_update_client()

def filter_changed_event(self):
self.filter_event()
self._selected_row_id = -1
self._current_page = 1
self.mark_to_update_client()


def filter_event(self):pass
def page_event(self):pass
def sort_event(self):pass

#####################################################################
#####################################################################

Expand Down
18 changes: 12 additions & 6 deletions pyforms_web/widgets/django/modelform.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ def __init__(self, *args, **kwargs):
# Create the edit buttons buttons #####################

if self._has_update_permissions:
self._save_btn = ControlButton(self.SAVE_BTN_LABEL, label_visible=False, default=self.__save_btn_event)
self._save_btn = ControlButton(self.SAVE_BTN_LABEL, label_visible=False, default=self.save_btn_event)
self.edit_buttons.append( self._save_btn )

if self._has_add_permissions:
Expand Down Expand Up @@ -254,7 +254,7 @@ def get_buttons_row(self):
buttons = []
if self._has_update_permissions: buttons.append('_save_btn')
if self._has_add_permissions: buttons.append('_create_btn')
if self.has_cancel_btn: buttons.append('_cancel_btn')
if self.has_cancel_btn: buttons.append('_cancel_btn')
if self._has_remove_permissions: buttons.append('_remove_btn')
return [no_columns(*buttons)]

Expand Down Expand Up @@ -463,6 +463,8 @@ def show_edit_form(self, pk=None):
except AttributeError:
continue

print('---', self.title, field_name, type(pyforms_field), value)

if callable(field) and not isinstance(field, models.Model):
pyforms_field.value = value()

Expand Down Expand Up @@ -708,6 +710,10 @@ def update_object_fields(self, obj):

setattr(obj, field.name, value)

elif obj.pk and isinstance(field, models.ManyToManyField):
pyforms_field.error = False
getattr(obj, field.name).set(value)

# all other fields except the ManyToManyField
elif not isinstance(field, models.ManyToManyField):
pyforms_field.error = False
Expand All @@ -728,14 +734,14 @@ def save_related_fields(self, obj):
Returns:
:django.db.models.Mode: Object passed as parameter
"""

for field in self.model._meta.get_fields():

if isinstance(field, models.ManyToManyField) and hasattr(self, field.name):
values = getattr(self, field.name).value
field_instance = getattr(obj, field.name)

values = [] if values is None else values
field_instance.set(values)
"""values = [] if values is None else values
objs = field.related_model.objects.filter(pk__in=values)
values_2_remove = field_instance.all().exclude(pk__in=[o.pk for o in objs])
Expand All @@ -744,7 +750,7 @@ def save_related_fields(self, obj):
values_2_add = objs.exclude(pk__in=[o.pk for o in field_instance.all()])
for o in values_2_add: field_instance.add(o)
"""
return obj


Expand Down Expand Up @@ -1051,7 +1057,7 @@ def __create_btn_event(self):
self.save_form_event(obj)


def __save_btn_event(self):
def save_btn_event(self):
"""
Event called by the save button
"""
Expand Down

0 comments on commit 72b2f50

Please sign in to comment.