From 75f0069538a7f0753739181f5a3344f09cbf8924 Mon Sep 17 00:00:00 2001
From: anonymous <anonymous>
Date: Tue, 12 Mar 2019 13:07:53 +0100
Subject: [PATCH] ODPSH-6: reimplement qa search

---
 .../odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo  | Bin 6199 -> 6372 bytes
 .../odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po  |  17 ++++++-
 ckanext/odsh/plugin.py                        |  46 +++++++++---------
 ckanext/odsh/templates/package/search.html    |  23 ---------
 .../odsh/templates/snippets/facet_list.html   |   3 ++
 5 files changed, 41 insertions(+), 48 deletions(-)

diff --git a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo
index b6854e4f5145dd2dcb02ec18f393ef6ef403c9e0..1c0637984f09888c0446060066344f8fa8344204 100644
GIT binary patch
delta 1829
zcmdmP@WinGo)F7a1_lO(Oa=x983qQ16lM?)f!DAxFo1;CLg|fAdMg_P0}BHK!%irF
z9~%RM5Ca3lAvOjEZUzR1t85VS9<nhoure?({9|KaU}s=pU}1;I^RP28@G~&fGf1#A
zFmN$2FlewdFbFa*Fc`BlFeorEFu1ZaFi0{mFr-1n8=&eYK@FJ84l#HoJH+Dk><kQS
zAP2BBFmN(3Fq~v(V31&7V7Lqwf5XneAi%)D@EK|z3kL&(7(+b+gBS<IWx5;?hnR9e
z40hmv80f~qz`)1Az~IZlz#z)Nz!1a1z@W;&z)-}&z`)DEz%YY@fkB0Vfnga31A_<y
z1H)+!1_oIM28IVv`F|V`kMM9p%u(Znm~RT=*E29MSaU)&dT~Nr9uK86IUzw+%n1%E
zhI&p01}O#xhJH>+(68cTVBle3U|0__h=GA&4<`eIF316#5QqMRTEx%Az`()4z#z&6
z@sJ!B#38C&3=H)k2@@^`25|-k23szOMWI{}3sRv9v!LRYTo4C#LJgeE1qrb^P<6|p
z`nGXFLUcD&-C-zw1}c6P>X5r!4E5l|@`MYL$UbmE(!dv}L2TR%48jZy4BXrhAIWn=
z9BRr9Nh7}8kf_MxW?;}{U|^U6<?n;aKjCIzkYiwAVC8|RSK)yqN>?68lqK=hL*lBP
z2NFk1c^DYv85kJ$L;3f4Ac^ZIl;+`ugn&FR0|OHS1A`_nM4t{X1A{aJ1A`kc1A`s|
z149xo1A`X>1H(jK1_lcT28KJl3=9((85l(QAZcb9KP05L)bm5);s}(!%nyn4NBj_l
z@Ax69_zyqCr=kK7accoc+<QXlFabyiB@2L3H3LH>ls`d$fk6$FI0YacI}6qS7Ajx=
zTL9t!K|x5IDF{NciH0B~u~-U1;@CkD5)$4}ew-i!gEFYx5M*FbVqjqC6@&!!2B^OC
zQ2Lr6B(>j#@*fLA68kGbaER42{1;?k&}Lv@kQRbC#9attP?!)Tu1bX<E}tX>37Jho
zkSN<H1W7A*gdl0+oe(4h*n}Z`8DWS=OoSmJ<|+({x?o{Ql*I~z(o8)ALpfBzLSaZ^
zTQ3YT=&&#YgAoG*!%bm`19(IrKG6|@7-S>@2_YLO-&q8bYkWl@K^`Om@oA+9BxL(U
zAP$};0&&<1kUmiU-w9$cFfbezfw=T6RN-wANUnG*0?EH0q3V7?X%<n4L-<4?iAh2f
zVz7oN#G#g=5DV=^Ar1|M%14MYFld0HPLzS69#mjV5@ld8XJBABAPNckAEJ;{EG`B~
zbZ%mhAkPtlgh-bd#D{yu7#Oq|7#N<2F)%1HFfj0oLkb{6aY&TLi!(47GB7Z7i$g+m
zuQ<ekm&GAz>4`XlAGl=tE)MZ2g9N06W08Qwy}SeigCzq4gN+0OgEIpILzx69&KMYW
zfeLm5e;)?JAXf$>e>Vo>&>&9+6Can&F>Fsc-1F1YQu9(3d@`$2^Qstf6N{5GGV@aN
za#D+v5{nohvc(E+`9-;jB@AV$Mdhh^DXAq2p+TO-3_h88*{LZCE{P?Hn;rPSa{vG{
C*0Njx

delta 1655
zcmaE2xZR-so)F7a1_lO(6b1$c83qOh8)gs>fn(Sh7=#!Y7-HEN7`Pc27z)@R>T1{+
z7+4t?7-q6DFt9T)FwBR_FK1(5;Adc9*v!Vjz{SA8aF~sOL6Cug;T#(Sg8~Bs!vi)3
z21y1621a(Ucs+wOJ4B%_JH!GDc8I|)>=28+*clkuKn`GMVBiEfl%0V=f`Ne{4=Ucy
z&cGnRz`)Q4F_2+CI|G9l0|UcGc8J4HK+V4ZHTO1D-$Ql=20n&*28I{x3=E<S3=H4d
z85mR<7#Mgt7#MgN7#NH>7#LI-7#JKm7#Ktt7#Pwx7#L(37#OOd@-sOgK3UEIGKhiU
zAP2<Z7ohxWP<>B1AP)ZprCB&39_8a?VBoK3U|^8qWMGhDU|`VVWME)nU|?|NWMJT7
zU|{g#gcuyo$-tlsasVg9p;I^^7OmoBVBlb2VA#M3389@(^#`Eh=Q$Y|#2FYEZh$Oe
zU|{$FH6Ii&d<+Z>tXvEX^`N*C;exnOg$rV!9v37^%();AaN>eEERYKlq+w8XaZoxP
zDqg?^aYzLh#E11<3=E*;)XfEsYleQPISaWM7=#%Z7?yD{)PsY57Z=2(7q}pa<OLTb
zDmb|r7&I9e81%Uz{77zyd_6Y<gB$|`!vZLOKQ|;%KH!E#*<Wr*R4MU5qR4@VfkB>u
zfguXYui}BEttmY95XN#INC@oWVPIflU|=``Rd}3-fkB#qf#D$!1A`s|1H)e)1_mz%
z1_m8o1_lcT28ME828IcY3=A81A!){uACfrz`5_L@;D?C!@k63?4wPQW4~fccpzsH!
z)-zCn$NUToY77hvKlvdpRuF&~;2;3e;3oiyk`w_*R1^z9Qh&7oB<OntAW=720OGNE
zQ2s^%1_osY28KNX3=B%3Y$yN;!Fpyvh(;wSttkjeTn13SnII(f+X_NLB1n*dK^v6)
z1R)NYB?vKSr642<P6$FA{!|c>23Un4Q6VS<Ndx*qkf?SP0(+>QArdN(F9h*PyAZ_3
zGlU>fvP=jPhZ}?-Y2g%9{)-SK5itpa4Pp=zW?(P^MU61T0rA2RkJJl8%xM*dc(fnN
zpC$}S)b$Ju3xpv-zEl|E(=)=5pnWI|aq&xGh{JwEHS&l+3=|WAI8;FdqE1f)lG+_a
zAi2l|s?HZmhePQ^5l9J{EyBPc0LuT>A`qAMKn<EC0&(dQkOBq<hSeer3>u)g6M>Wi
zPem9Q%o!LMghe4i?=1>RoLQofL^o3u66E_uAt7>C6yiYvF$M-L1_lOmF$M-j1_p*C
zF$RVVP{Gn728q*6Vhjw13=9nS#2`T`AP(`lnm8menTtbw<|PjCX|On?;0hOq#C?%C
l1A`?414F+!1A{XI1H(yiNR;tPFfeRB$o7<D^E>`;8~|d!j4%KI

diff --git a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po
index 75c0967a..191aacf1 100644
--- a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po
+++ b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po
@@ -328,4 +328,19 @@ msgid "Show More"
 msgstr "mehr anzeigen"
 
 msgid "Show Less"
-msgstr "weniger anzeigen"
\ No newline at end of file
+msgstr "weniger anzeigen"
+
+msgid "0OL"
+msgstr "offene Lizenz"
+
+msgid "1RE"
+msgstr "maschinenlesbar"
+
+msgid "2OF"
+msgstr "offenes Format"
+
+msgid "3URI"
+msgstr "verwendet URIs"
+
+msgid "4LD"
+msgstr "Linked Data"
\ No newline at end of file
diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py
index 0c43a231..92437d01 100644
--- a/ckanext/odsh/plugin.py
+++ b/ckanext/odsh/plugin.py
@@ -349,7 +349,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
         return OrderedDict({'organization': _('Herausgeber'),
                             'res_format': _('Dateiformat'),
                             'license_title': _('Lizenz'),
-                            'groups': _('Kategorie')})
+                            'groups': _('Kategorie'),
+                            'openness': _('Open-Data-Eigenschaften')})
 
     def organization_facets(self, facets_dict, organization_type, package_type):
         return OrderedDict({'organization': _('Herausgeber'),
@@ -423,20 +424,6 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
                 'odsh_validate_temporal_end': odsh_validate_extra_date_factory('temporal_end'),
                 'odsh_tag_name_validator': odsh_tag_name_validator}
 
-    def process_score_in_search_params(self,search_params):
-        extras = search_params.get('extras')
-
-        score = 0 
-        for i in range(1,6):
-            if extras.get('ext_score_'+str(i)):
-                score = max([score,i])
-
-        if score>0:
-            fq = search_params['fq']
-            fq = "{fq} qa:/.*'openness_score':.[{score}-5].*/".format(fq=fq, score=i)
-            search_params['fq'] = fq
-
-
     # Add the custom parameters to Solr's facet queries
     # use several daterange queries agains temporal_start and temporal_end field
     # TODO: use field of type date_range in solr index instead
@@ -447,15 +434,8 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
             # There are no extras in the search params, so do nothing.
             return search_params
 
-        self.process_score_in_search_params(search_params)
-
         fq = search_params['fq']
 
-        score = extras.get('ext_score')
-        if score:
-            fq = "{fq} qa:/.*'openness_score':.[{score}-5].*/".format(fq=fq, score=score)
-            search_params['fq'] = fq
-
         start_date=None
         end_date=None
         try:
@@ -511,6 +491,21 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
 
         return search_params
 
+    scores = [ ['0OL'], ['0OL','1RE'], ['0OL','1RE','2OF'], ['0OL','1RE','2OF','3URI'], ['0OL','1RE','2OF','3URI','4LD']]
+    def map_qa_score(self, dict_pkg):
+        if 'validated_data_dict' in dict_pkg and 'openness_score' in dict_pkg['validated_data_dict']:
+                d = json.loads(dict_pkg['validated_data_dict'])
+                score = -1
+                for r in d['resources']:
+                    if 'qa' in r:
+                        i = r['qa'].find('openness_score')
+                        s = int(r['qa'][i+17])
+                        if s > score:
+                                score=s
+                if score > 0:
+                    dict_pkg['openness']=OdshPlugin.scores[score-1]
+
+
     def before_index(self, dict_pkg):
         # make special date fields solr conform
         fields = ["issued", "temporal_start", "temporal_end"]
@@ -518,9 +513,12 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm
             field = 'extras_' + field
             if field in dict_pkg and dict_pkg[field]:
                 d = parse(dict_pkg[field])
-                dict_pkg[field] = '{0.year:4d}-{0.month:02d}-{0.day:02d}T00:00:00Z'.format(
-                    d)
+                dict_pkg[field] = '{0.year:4d}-{0.month:02d}-{0.day:02d}T00:00:00Z'.format(d)
         # if 'res_format' in dict_pkg:
         #     dict_pkg['res_format']=[e.lower() for e in dict_pkg['res_format']]
+
+        self.map_qa_score(dict_pkg)
+
         return dict_pkg
+
     
\ No newline at end of file
diff --git a/ckanext/odsh/templates/package/search.html b/ckanext/odsh/templates/package/search.html
index c78cbbc6..ae707840 100644
--- a/ckanext/odsh/templates/package/search.html
+++ b/ckanext/odsh/templates/package/search.html
@@ -102,29 +102,6 @@ default_extent="{ \"type\": \"Polygon\", \"coordinates\": [[[7.6574,53.1632],[11
     </nav>
   </section>
   {% endblock %}
-  {% block qa_search%}
-  <section class="module module-narrow module-shallow">
-    <nav>
-      <div class="nav-title">{{_('Score')}}</div>
-   <ul class="unstyled nav nav-simple nav-facet">
-    {% set titles=['offene Lizenz', 'maschinenlesbar', 'offenes Format', 'verwendet URIs', 'Linked Data'] %}
-    {%- for stars in range(1,6)-%}
-      {%- set score = request.params['ext_score_'+stars|string]=='on'-%}
-      <li class='nav-item'>
-      <div class='facet_label'>
-	      <input name='ext_score_{{stars}}' type="checkbox" {% if score %} checked {% endif %} class="filter-checkbox" id="check-score-{{stars}}"/>
-        <label class='label-score label-score-{{stars}}' for='check-score-{{stars}}'></label>
-        <div class='search-score search-score-{{stars}}'  title="offene Lizenz">
-                    <span>{{titles[stars-1]}}</span>
-        </div>
-      </div>
-      </li>
-    {%- endfor -%}
-    </ul>
-    </nav>
-  </section>
-  {% endblock %}
-
 
 </div>
 {% endblock %}
diff --git a/ckanext/odsh/templates/snippets/facet_list.html b/ckanext/odsh/templates/snippets/facet_list.html
index aaf3a415..985003d4 100644
--- a/ckanext/odsh/templates/snippets/facet_list.html
+++ b/ckanext/odsh/templates/snippets/facet_list.html
@@ -18,6 +18,9 @@
         item.active else h.add_url_param(new_params={name: item.name}, extras=extras, alternative_url=alternative_url)
         %}
         {% set label = label_function(item) if label_function else item.display_name %}
+        {% if title=='Open-Data-Eigenschaften'%}
+        {% set label = _(label)%}
+        {% endif%}
         {% set count = count_label(item['count']) if count_label else ('%d' % item['count']) %}
         {% set label_truncated = h.truncate(label, 25) if not label_function else label %}
         <li class="{{ nav_item_class or 'nav-item' }}">
-- 
GitLab