diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/forms.py | 10 | ||||
| -rw-r--r-- | ishtar_common/forms_common.py | 6 | ||||
| -rw-r--r-- | ishtar_common/views.py | 3 | ||||
| -rw-r--r-- | ishtar_common/views_item.py | 15 | 
4 files changed, 30 insertions, 4 deletions
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 754f63f74..d697ee89b 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -273,6 +273,11 @@ class CustomForm(BSForm):      @classmethod      def _get_json_fields(cls, custom_form): +        """ +        Return json field list from database configuration +        :param custom_form: form concerned +        :return: ((order1, key1, field1), ...) +        """          fields = []          for field in custom_form.json_fields.order_by('order').all():              key = "data__" + field.json_field.key @@ -299,6 +304,11 @@ class CustomForm(BSForm):      @classmethod      def check_custom_form(cls, current_user): +        """ +        Check form customization +        :param current_user: +        :return: available, excluded_fields, json_fields +        """          if not current_user:              return True, [], []          base_q = {"form": cls.form_slug, 'available': True} diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index fadda7593..eb15445a4 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -44,7 +44,7 @@ from ishtar_common.templatetags.link_to_window import simple_link_to_window  from forms import FinalForm, FormSet, reverse_lazy, name_validator, \      TableSelect, ManageOldType, CustomForm, FieldType, FormHeader, \      FormSetWithDeleteSwitches, IshtarForm, get_data_from_formset, \ -    file_size_validator +    file_size_validator, HistorySelect  from ishtar_common.utils import is_downloadable, clean_session_cache, \      max_size_help @@ -1228,8 +1228,10 @@ class DocumentForm(forms.ModelForm, CustomForm, ManageOldType):          return item -class DocumentSelect(TableSelect): +class DocumentSelect(HistorySelect):      _model = models.Document +    form_admin_name = _(u"Document - 001 - Search") +    form_slug = "document-001-search"      search_vector = forms.CharField(          label=_(u"Full text search"), widget=widgets.SearchWidget( diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 5050f2d0d..61bae69e2 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -1679,7 +1679,8 @@ class OrganizationPersonEdit(LoginRequiredMixin, UpdateView):  # documents  show_document = show_item(models.Document, 'document') -get_document = get_item(models.Document, 'get_document', 'document') +get_document = get_item(models.Document, 'get_document', 'document', +                        search_form=forms.DocumentSelect)  display_document = display_item(models.Document) diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 1a0824c3b..65f06d2f1 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1000,7 +1000,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None,               relative_session_names=None, specific_perms=None,               own_table_cols=None, relation_types_prefix=None,               do_not_deduplicate=False, model_for_perms=None, -             alt_query_own=None): +             alt_query_own=None, search_form=None):      """      Generic treatment of tables @@ -1022,6 +1022,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None,      instance for record_relations view).      :param model_for_perms: use another model to check permission      :param alt_query_own: name of alternate method to get query_own +    :param search_form: associated search form to manage JSON query keys      :return:      """      def func(request, data_type='json', full=False, force_own=False, @@ -1140,6 +1141,18 @@ def get_item(model, func_name, default_name, extra_request_keys=None,                        for field in associated_fields]))          request_keys.update(my_extra_request_keys) +        # manage search on json fields and excluded fields +        if search_form and request.user and getattr( +                request.user, 'ishtaruser', None): +            available, excluded_fields, json_fields = \ +                search_form.check_custom_form(request.user.ishtaruser) +            # for now no manage on excluded_fields: should we prevent search on +            # some fields regarding the user concerned? +            if available: +                for __, jkey, jfield in json_fields: +                    if jfield.alt_name not in request_keys: +                        request_keys[jfield.alt_name] = jkey + "__iexact" +          if "query" in dct:              request_items = dct["query"]              request_items["submited"] = True  | 
