diff options
| -rw-r--r-- | archaeological_finds/forms.py | 228 | ||||
| -rw-r--r-- | archaeological_finds/models_finds.py | 248 | ||||
| -rw-r--r-- | ishtar_common/static/js/ishtar.js | 45 | ||||
| -rw-r--r-- | ishtar_common/static/media/styles.css | 5 | ||||
| -rw-r--r-- | ishtar_common/templates/blocks/bs_form_snippet.html | 10 | ||||
| -rw-r--r-- | ishtar_common/views.py | 3 | ||||
| -rw-r--r-- | ishtar_common/widgets.py | 6 | ||||
| -rw-r--r-- | scss/custom.scss | 20 | 
8 files changed, 512 insertions, 53 deletions
| diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 3073c5c23..88c25be44 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -148,7 +148,8 @@ class BaseFindForm(CustomForm, ManageOldType):          'mark', 'description', 'is_complete', 'material_type',          'material_type_quality', 'object_type', 'object_type_quality',          'find_number', 'min_number_of_individuals', 'inscription', -        'manufacturing_place', 'communicabilitie', 'comment', 'dating_comment', +        'decoration', 'manufacturing_place', 'communicabilitie', 'comment', +        'dating_comment',          'length', 'width', 'height', 'thickness', 'diameter', 'circumference',          'volume', 'weight', 'clutter_long_side', 'clutter_short_side',          'clutter_height', 'dimensions_comment', 'checked_type', 'check_date' @@ -833,6 +834,47 @@ DatingFormSet.form_slug = "find-040-dating"  class FindSelect(HistorySelect):      _model = models.Find +    FORM_FILTERS = [ +        (_(u"Find origin"), [ +            "base_finds__cache_short_id", +            "base_finds__cache_complete_id", +            "base_finds__context_record__town", +            "base_finds__context_record__operation__year", +            "base_finds__context_record__operation__operation_code", +            "base_finds__context_record__operation__code_patriarche", +            "base_finds__context_record__operation__operation_type", +            "base_finds__context_record__town__areas", +            "archaeological_sites", +            "archaeological_sites_context_record", +            "base_finds__context_record", +            "ope_relation_types", +            "cr_relation_types", +        ]), +        (_(u"Discovery date"), [ +            "base_finds__discovery_date__before", +            "base_finds__discovery_date__after", +            "base_finds__discovery_date_tpq__before", +            "base_finds__discovery_date_tpq__after", +            "base_finds__discovery_date_taq__before", +            "base_finds__discovery_date_taq__after" +        ]), +        (_(u"Dimensions"), [ +            "length__higher", "width__higher", "height__higher", +            "thickness__higher", "diameter__higher", "circumference__higher", +            "volume__higher", "weight__higher", "clutter_long_side__higher", +            "clutter_short_side__higher", "clutter_height__higher", +            "length__lower", "width__lower", "height__lower", +            "thickness__lower", "diameter__lower", "circumference__lower", +            "volume__lower", "weight__lower", "clutter_long_side__lower", +            "clutter_short_side__lower", "clutter_height__lower", +            "dimensions_comment", +        ]), +        (_(u"Preservation"), ( +            "integrities", "remarkabilities", "conservatory_state", +            "alterations", "alteration_causes", "preservation_to_considers", +            "treatment_emergency") +         ) +    ]      form_admin_name = _(u"Find - 001 - Search")      form_slug = "find-001-search" @@ -840,10 +882,18 @@ class FindSelect(HistorySelect):          label=_(u"Full text search"), widget=widgets.SearchWidget(              'archaeological-finds', 'find'          )) -    base_finds__cache_short_id = forms.CharField(label=_(u"Short ID")) -    base_finds__cache_complete_id = forms.CharField(label=_(u"Complete ID"))      label = forms.CharField(label=_(u"Free ID"))      denomination = forms.CharField(label=_(u"Denomination")) +    previous_id = forms.CharField(label=_(u"Previous ID")) +    base_finds__excavation_id = forms.CharField(label=_(u"Excavation ID")) +    seal_number = forms.CharField(label=_(u"Seal number")) +    museum_id = forms.CharField(label=_(u"Museum ID")) +    mark = forms.CharField(label=_(u"Mark")) + +    base_finds__cache_short_id = forms.CharField( +        label=_(u"Base find - Short ID")) +    base_finds__cache_complete_id = forms.CharField( +        label=_(u"Base find - Complete ID"))      base_finds__context_record__town = get_town_field()      base_finds__context_record__operation__year = forms.IntegerField(          label=_(u"Year")) @@ -878,26 +928,169 @@ class FindSelect(HistorySelect):              reverse_lazy('autocomplete-contextrecord'),              associated_model=ContextRecord),          validators=[valid_id(ContextRecord)]) -    basket = forms.ChoiceField(label=_(u"Basket"), choices=[])      ope_relation_types = forms.ChoiceField(          label=_(u"Search within related operations"), choices=[])      cr_relation_types = forms.ChoiceField(          label=_(u"Search within related context records"), choices=[]) + +    basket = forms.ChoiceField(label=_(u"Basket"), choices=[]) + +    description = forms.CharField(label=_(u"Description")) +    base_finds__discovery_date__after = forms.DateField( +        label=_(u"Discovery date after"), widget=DatePicker +    ) +    base_finds__discovery_date__before = forms.DateField( +        label=_(u"Discovery date before"), widget=DatePicker +    ) +    base_finds__discovery_date_tpq__after = forms.DateField( +        label=_(u"Discovery date (exact or TPQ) after"), widget=DatePicker +    ) +    base_finds__discovery_date_tpq__before = forms.DateField( +        label=_(u"Discovery date (exact or TPQ) before"), widget=DatePicker +    ) +    base_finds__discovery_date_taq__after = forms.DateField( +        label=_(u"Discovery date (TAQ) after"), widget=DatePicker +    ) +    base_finds__discovery_date_taq__before = forms.DateField( +        label=_(u"Discovery date (TAQ) before"), widget=DatePicker +    ) +    base_finds__batch = forms.ChoiceField(label=_(u"Batch/object"), choices=[]) +    is_complete = forms.NullBooleanField(label=_(u"Is complete?")) +    material_types = forms.IntegerField( +        label=_(u"Material type"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-materialtype'), +            associated_model=models.MaterialType), +    ) +    material_type_quality = forms.ChoiceField(label=_(u"Material type quality"), +                                              choices=[]) +    object_types = forms.IntegerField( +        label=_(u"Object type"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-objecttype'), +            associated_model=models.ObjectType), +    ) +    object_type_quality = forms.ChoiceField( +        label=_(u"Object type quality"), choices=[]) + +    find_number = forms.IntegerField(label=_(u"Find number")) +    min_number_of_individuals = forms.IntegerField( +        label=_(u"Minimum number of individuals (MNI)")) + +    manufacturing_place = forms.CharField(label=_(u"Manufacturing place")) +    decoration = forms.CharField(label=_(u"Decoration")) +    inscription = forms.CharField(label=_(u"Inscription")) + +    communicabilities = forms.ChoiceField(label=_(u"Communicability")) +    comment = forms.CharField(label=_(u"Comment")) +      datings__period = forms.ChoiceField(label=_(u"Period"), choices=[]) -    material_types = forms.ChoiceField(label=_(u"Material type"), choices=[]) -    object_types = forms.ChoiceField(label=_(u"Object type"), choices=[]) -    preservation_to_considers = forms.ChoiceField( -        choices=[], label=_(u"Preservation type")) -    conservatory_state = forms.ChoiceField(label=_(u"Conservatory state"), -                                           choices=[]) +    dating_comment = forms.CharField(label=_(u"Comment on dating")) + +    length__higher = FloatField(label=_(u"Length - higher than (cm)"), +                                widget=widgets.CentimeterMeterWidget) +    length__lower = FloatField(label=_(u"Length - lower than (cm)"), +                               widget=widgets.CentimeterMeterWidget) +    width__lower = FloatField( +        label=_(u"Width - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    width__higher = FloatField( +        label=_(u"Width - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    height__lower = FloatField( +        label=_(u"Height - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    height__higher = FloatField( +        label=_(u"Height - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    thickness__lower = FloatField( +        label=_(u"Thickness - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    thickness__higher = FloatField( +        label=_(u"Thickness - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    diameter__lower = FloatField( +        label=_(u"Diameter - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    diameter__higher = FloatField( +        label=_(u"Diameter - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    circumference__lower = FloatField( +        label=_(u"Circumference - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    circumference__higher = FloatField( +        label=_(u"Circumference - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    volume__lower = FloatField(label=_(u"Volume - lower than (l)")) +    volume__higher = FloatField(label=_(u"Volume - higher than (l)")) +    weight__lower = FloatField( +        label=_(u"Weight - lower than (g)"), +        widget=widgets.GramKilogramWidget) +    weight__higher = FloatField( +        label=_(u"Weight - higher than (g)"), +        widget=widgets.GramKilogramWidget) +    clutter_long_side__lower = FloatField( +        label=_(u"Clutter long side - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    clutter_long_side__higher = FloatField( +        label=_(u"Clutter long side - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    clutter_short_side__lower = FloatField( +        label=_(u"Clutter short side - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    clutter_short_side__higher = FloatField( +        label=_(u"Clutter short side - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    clutter_height__lower = FloatField( +        label=_(u"Clutter height - lower than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    clutter_height__higher = FloatField( +        label=_(u"Clutter height - higher than (cm)"), +        widget=widgets.CentimeterMeterWidget) +    dimensions_comment = forms.CharField( +        label=_(u"Dimensions comment")) + +    base_finds__topographic_localisation = forms.CharField( +        label=_(u"Point of topographic reference"), +    ) +    checked_type = forms.ChoiceField(label=_("Check")) +    check_date__after = forms.DateField( +        label=_(u"Check date after"), widget=DatePicker +    ) +    check_date__before = forms.DateField( +        label=_(u"Check date before"), widget=DatePicker +    )      integrities = forms.ChoiceField(label=_(u"Integrity / interest"),                                      choices=[])      remarkabilities = forms.ChoiceField(label=_(u"Remarkability"),                                          choices=[]) -    base_finds__find__description = forms.CharField(label=_(u"Description")) -    base_finds__batch = forms.ChoiceField( -        label=_(u"Batch/object"), choices=[]) -    checked_type = forms.ChoiceField(label=_("Check")) +    conservatory_state = forms.ChoiceField(label=_(u"Conservatory state"), +                                           choices=[]) +    alterations = forms.ChoiceField( +        label=_(u"Alteration"), choices=[]) +    alteration_causes = forms.ChoiceField( +        label=_(u"Alteration cause"), choices=[]) +    preservation_to_considers = forms.ChoiceField( +        choices=[], label=_(u"Preservation type")) +    treatment_emergency = forms.ChoiceField( +        choices=[], label=_(u"Treatment emergency") +    ) + +    estimated_value__higher = FloatField( +        label=_(u"Estimated value - higher than")) +    estimated_value__lower = FloatField( +        label=_(u"Estimated value - lower than")) +    insurance_value__higher = FloatField( +        label=_(u"Insurance value - higher than")) +    insurance_value__lower = FloatField( +        label=_(u"Insurance value - lower than")) +    appraisal_date__after = forms.DateField( +        label=_(u"Appraisal date after"), widget=DatePicker) +    appraisal_date__before = forms.DateField( +        label=_(u"Appraisal date before"), widget=DatePicker) +    conservatory_comment = forms.CharField( +        label=_(u"Conservatory comment")) +      documents__image__isnull = forms.NullBooleanField(label=_(u"Has an image?"))      loan = forms.NullBooleanField(label=_(u"Loan?"))      treatments_file_end_date = forms.DateField( @@ -906,10 +1099,8 @@ class FindSelect(HistorySelect):      TYPES = [          FieldType('datings__period', Period), -        FieldType('material_types', models.MaterialType),          FieldType('conservatory_state', models.ConservatoryState),          FieldType('base_finds__batch', models.BatchType), -        FieldType('object_types', models.ObjectType),          FieldType('preservation_to_considers', models.TreatmentType),          FieldType('integrities', models.IntegrityType),          FieldType('remarkabilities', models.RemarkabilityType), @@ -917,6 +1108,11 @@ class FindSelect(HistorySelect):          FieldType('base_finds__context_record__operation__operation_type',                    OperationType),          FieldType('checked_type', models.CheckedType), +        FieldType('material_type_quality', models.MaterialTypeQualityType), +        FieldType('object_type_quality', models.ObjectTypeQualityType), +        FieldType('communicabilities', models.CommunicabilityType), +        FieldType('alterations', models.AlterationType), +        FieldType('alteration_causes', models.AlterationCauseType),      ]      def __init__(self, *args, **kwargs): diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 81ac94a41..b49c4655e 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -798,8 +798,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,          'base_finds__context_record__archaeological_site__name':              'base_finds__context_record__archaeological_site__name',          'datings__period': 'datings__period__pk', -        'base_finds__find__description': -            'base_finds__find__description__icontains', +        'description': 'description__icontains',          'base_finds__batch': 'base_finds__batch',          'basket_id': 'basket__pk',          'denomination': 'denomination', @@ -914,10 +913,10 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,              SearchAltName(                  pgettext_lazy("key for text search", u"remarkability"),                  'remarkabilities__label__iexact'), -        'base_finds__find__description': +        'description':              SearchAltName(                  pgettext_lazy("key for text search", u"description"), -                'base_finds__find__description__iexact'), +                'description__iexact'),          'base_finds__batch':              SearchAltName(                  pgettext_lazy("key for text search", u"batch"), @@ -994,6 +993,247 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,                  pgettext_lazy("key for text search",                                u"treatment-end-date-before"),                  'treatments__file__end_date__lte'), +        'previous_id': +            SearchAltName( +                pgettext_lazy("key for text search", u"previous-id"), +                'previous_id__iexact'), +        'seal_number': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"seal-number"), +                'seal_number__iexact'), +        'base_finds__excavation_id': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"excavation-id"), +                'base_finds__excavation_id__iexact'), +        'museum_id': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"museum-id"), +                'museum_id__iexact'), +        'mark': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"mark"), +                'mark__iexact'), +        'base_finds__discovery_date__before': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"discovery-date-before"), +                'base_finds__discovery_date__lte'), +        'base_finds__discovery_date__after': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"discovery-date-after"), +                'base_finds__discovery_date__gte'), +        'base_finds__discovery_date_tpq__before': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"discovery-date-tpq-before"), +                'base_finds__discovery_date_tpq__lte'), +        'base_finds__discovery_date_tpq__after': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"discovery-date-tpq-after"), +                'base_finds__discovery_date_tpq__gte'), +        'base_finds__discovery_date_taq__before': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"discovery-date-taq-before"), +                'base_finds__discovery_date_taq__lte'), +        'base_finds__discovery_date_taq__after': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"discovery-date-taq-after"), +                'base_finds__discovery_date_taq__gte'), +        'is_complete': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"is-complete"), +                'is_complete'), +        'material_type_quality': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"material-type-quality"), +                'material_type_quality__label__iexact'), +        'object_type_quality': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"object-type-quality"), +                'object_type_quality__label__iexact'), +        'find_number': +        SearchAltName( +                pgettext_lazy(u"key for text search", u"find-number"), +                'find_number'), +        'min_number_of_individuals': +            SearchAltName( +               pgettext_lazy(u"key for text search", +                             u"min-number-of-individuals"), +               'min_number_of_individuals'), +        'decoration': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"decoration"), +                'decoration__iexact'), +        'inscription': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"inscription"), +                'inscription__iexact'), +        'manufacturing_place': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"manufacturing-place"), +                'manufacturing_place__iexact'), +        'communicabilities': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"communicabilities"), +                'communicabilities__label__iexact'), +        'comment': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"comment"), +                'comment__iexact'), +        'dating_comment': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"dating-comment"), +                'dating_comment__iexact'), +        'length__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"length-lower"), +                'length__lte'), +        'width__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"width-lower"), +                'width__lte'), +        'height__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"height-lower"), +                'height__lte'), +        'thickness__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"thickness-lower"), +                'thickness__lte'), +        'diameter__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"diameter-lower"), +                'diameter__lte'), +        'circumference__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"circumference-lower"), +                'circumference__lte'), +        'volume__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"volume-lower"), +                'volume__lte'), +        'weight__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"weight-lower"), +                'weight__lte'), +        'clutter_long_side__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"clutter-long-side-lower"), +                'clutter_long_side__lte'), +        'clutter_short_side__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"clutter-short-side-lower"), +                'clutter_short_side__lte'), +        'clutter_height__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"clutter-height-lower"), +                'clutter_height__lte'), +        'length__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"length-higher"), +                'length__gte'), +        'width__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"width-higher"), +                'width__gte'), +        'height__higher': +            SearchAltName( +                 pgettext_lazy(u"key for text search", u"height-higher"), +                 'height__gte'), +        'thickness__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"thickness-higher"), +                'thickness__gte'), +        'diameter__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"diameter-higher"), +                'diameter__gte'), +        'circumference__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"circumference-higher"), +                'circumference__gte'), +        'volume__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"volume-higher"), +                'volume__gte'), +        'weight__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"weight-higher"), +                'weight__gte'), +        'clutter_long_side__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"clutter-long-side-higher"), +                'clutter_long_side__gte'), +        'clutter_short_side__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"clutter-short-side-higher"), +                'clutter_short_side__gte'), +        'clutter_height__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"clutter-height-higher"), +                'clutter_height__gte'), + +        'dimensions_comment': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"dimensions-comment"), +                'dimensions_comment__icontains'), +        'base_finds__topographic_localisation': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"topographic-localisation"), +                'base_finds__topographic_localisation__iexact'), +        'check_date__before': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"check-date-before"), +                'check_date__lte'), +        'check_date__after': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"check-date-after"), +                'check_date__gte'), +        'alterations': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"alterations"), +                'alterations__label__iexact'), +        'alteration_causes': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"alteration-causes"), +                'alteration_causes__label__iexact'), +        'treatment_emergency': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"treatment-emergency"), +                'treatment_emergency__label__iexact'), +        'estimated_value__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"estimated-value-higher"), +                'estimated_value__gte'), +        'estimated_value__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"estimated-value-lower"), +                'estimated_value__lte'), +        'insurance_value__higher': +            SearchAltName( +                pgettext_lazy(u"key for text search", +                              u"insurance-value-higher"), +                'insurance_value__gte'), +        'insurance_value__lower': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"insurance-value-lower"), +                'insurance_value__lte'), +        'appraisal_date__before': +            SearchAltName( +               pgettext_lazy(u"key for text search", u"appraisal-date-before"), +                'appraisal_date__lte'), +        'appraisal_date__after': +            SearchAltName( +                pgettext_lazy(u"key for text search", u"appraisal-date-after"), +                'appraisal_date__gte'),      }      DYNAMIC_REQUESTS = { diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index 43ef6ff1a..715ba85d5 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -655,29 +655,29 @@ function open_window(url){  }  function save_and_close_window(name_label, name_pk, item_name, item_pk){ -  var main_page = opener.document; -  jQuery(main_page).find("#"+name_label).val(item_name); -  jQuery(main_page).find("#"+name_pk).val(item_pk); -  opener.focus(); -  self.close(); +    var main_page = opener.document; +    jQuery(main_page).find("#"+name_label).val(item_name); +    jQuery(main_page).find("#"+name_pk).val(item_pk); +    opener.focus(); +    self.close();  }  function save_and_close_window_many(name_label, name_pk, item_name, item_pk){ -  var main_page = opener.document; -  var lbl_ = jQuery(main_page).find("#"+name_label); -  var val_ = jQuery(main_page).find("#"+name_pk); -  if (val_.val()){ -    var v = lbl_.val(); -    v = v.slice(0, v.lastIndexOf(",")); -    lbl_.val(v + ", " + item_name + ", "); -    val_.val(val_.val() + ", " + item_pk); -    lbl_.change(); -  } else { -    jQuery(main_page).find("#"+name_label).val(item_name); -    jQuery(main_page).find("#"+name_pk).val(item_pk); -  } -  opener.focus(); -  self.close(); +    var main_page = opener.document; +    var lbl_ = jQuery(main_page).find("#" + name_label); +    var val_ = jQuery(main_page).find("#" + name_pk); +    if (val_.val()){ +        var v = lbl_.val(); +        v = v.slice(0, v.lastIndexOf(",")); +        lbl_.val(v + ", " + item_name + ", "); +        val_.val(val_.val() + ", " + item_pk); +        lbl_.change(); +    } else { +        jQuery(main_page).find("#" + name_label).val(item_name); +        jQuery(main_page).find("#" + name_pk).val(item_pk); +    } +    opener.focus(); +    self.close();  }  function multiRemoveItem(selItems, name, idx){ @@ -782,6 +782,11 @@ function update_search_field(){                  }              } else if ($(this).filter(":text").length){                  v = $(this).val(); +                if (v.match( new RegExp(' > ') )){ +                    matches = v.split(' > '); +                    v = matches[matches.length - 1]; +                } +              } else if ($(this).filter('input[type="number"]').length){                  v = $(this).val();              } diff --git a/ishtar_common/static/media/styles.css b/ishtar_common/static/media/styles.css index b5e8bab48..507948915 100644 --- a/ishtar_common/static/media/styles.css +++ b/ishtar_common/static/media/styles.css @@ -30,11 +30,6 @@ html{      display: none;  } -.search .form-group { -    margin-bottom: 0.2rem; -    font-size: 0.9em; -} -  #id_parcel_0, #id_parcel_1, #id_parcel_2{      width: 30%;      display: inline-block; diff --git a/ishtar_common/templates/blocks/bs_form_snippet.html b/ishtar_common/templates/blocks/bs_form_snippet.html index caa20b016..f0f729e2c 100644 --- a/ishtar_common/templates/blocks/bs_form_snippet.html +++ b/ishtar_common/templates/blocks/bs_form_snippet.html @@ -50,10 +50,8 @@                      <span aria-hidden="true">×</span>                  </button>                  <div class="form-group col-12" id="advanced-search-info"></div> -            </div> -            <div class="modal-body body-scroll search-fields"> -                <div class="form-row justify-content-md-center"> -                    <div class="form-row col-md-6"> +                <div class="row col-12 justify-content-center"> +                    <div class="form-row col-md-8">                          <div class="input-group search-widget">                              <span class="input-group-prepend">                                  <span class="input-group-text" title="{% trans 'Filter...' %}"> @@ -71,8 +69,8 @@                          </div>                      </div>                  </div> -            <hr> - +            </div> +            <div class="modal-body body-scroll search-fields">  {% endif %}  {% if field.name in form.HEADERS %}  {% if forloop.counter0 %} diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 8b2602dbc..5050f2d0d 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -192,9 +192,12 @@ account_deletion_wizard = wizards.IshtarUserDeletionWizard.as_view(  def get_autocomplete_generic(model, extra=None):      if not extra:          extra = {'available': True} +      def func(request):          q = request.GET.get('term')          query = Q(**extra) +        if not q: +            q = ""          for q in q.split(' '):              if not q:                  continue diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index aee4eb95d..cb9250b9c 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -30,7 +30,7 @@ from django.db.models import fields  from django.forms import ClearableFileInput  from django.forms.utils import flatatt  from django.forms.widgets import CheckboxSelectMultiple as \ -    CheckboxSelectMultipleBase +    CheckboxSelectMultipleBase, NumberInput  from django.template import loader  from django.template.defaultfilters import slugify  from django.utils.encoding import smart_unicode @@ -1115,3 +1115,7 @@ class DataTable(Select2Media, forms.RadioSelect):          t = loader.get_template('blocks/DataTables.html')          rendered += t.render(dct)          return mark_safe(rendered) + + +class RangeInput(NumberInput): +    input_type = 'range' diff --git a/scss/custom.scss b/scss/custom.scss index 4798291ea..b877a1255 100644 --- a/scss/custom.scss +++ b/scss/custom.scss @@ -106,6 +106,11 @@ pre {      padding-bottom: 0;  } +#advanced-search-info .alert{ +    margin-bottom: 0.6rem; +} + +  #modal-advanced-search .modal-header .alert-secondary{      background-color: $white;  } @@ -114,8 +119,13 @@ pre {      background-color: $gray-200;  } +.modal-header .input-group-text{ +    background-color: $gray-300; +    border-color: $gray-400; +} +  .modal-body.body-scroll{ -    max-height: calc(100vh - 200px); +    max-height: calc(100vh - 300px);      overflow-y: auto;  } @@ -576,6 +586,14 @@ ul.compact{  /* search */ +.search .form-group { +    font-size: 0.9em; +    margin-bottom: 0; +} +.search .search-widget { +    margin-bottom: 1rem; +} +  .search_button{      display: none;  } | 
