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