From 542d29ed51ebac97652b623e844aff4b1b6e136a Mon Sep 17 00:00:00 2001 From: anonymous <anonymous> Date: Thu, 27 Jun 2019 12:54:41 +0200 Subject: [PATCH] ODPSH-31 --- .../odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo | Bin 8762 -> 8946 bytes .../odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po | 9 +++++ ckanext/odsh/plugin.py | 3 ++ ckanext/odsh/public/odsh.css | 18 ++++++---- .../odsh/templates/datarequests/close.html | 16 +++++++++ .../odsh/templates/datarequests/comment.html | 2 +- ckanext/odsh/templates/datarequests/edit.html | 16 +++++++++ ckanext/odsh/templates/datarequests/new.html | 8 ++--- .../snippets/datarequest_form.html | 9 +++-- ckanext/odsh/tests/test_datarequest.py | 32 +++++++++++++++++- ckanext/odsh/tests/test_helpers.py | 1 + 11 files changed, 96 insertions(+), 18 deletions(-) create mode 100644 ckanext/odsh/templates/datarequests/close.html create mode 100644 ckanext/odsh/templates/datarequests/edit.html diff --git a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.mo index cef945a8afa87f4e86460ece41951d9de3fdfc29..8be79d9fd27fdd19815a279d577a8af7bd65b6ed 100644 GIT binary patch delta 2526 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 IzGyTL027b_(f|Me delta 2376 zcmez5y33{ho)F7a1_lO(eg*~x83qQ1DJ&o!0`qV(FfcPPFz`ZYK`1TC$-n?oDhcJw zaWXInF)%PFaWXLQGcYiiaxyS*GcYi?Lg_$Gi21Rc3=FIc3=CDA3=HfH4D}2RoD2-& z3=9k%oD2-S3=9klpc>Xe>0O)*415d>49B1bUxixy6v}_a$-uzHz`*c}lYv2yfq{XQ zi-AFbfq_Asi-AFsfq}t-3nCuG1yPs61#wtD7sw&?3=Gv=5SKS{F)*-!LV$~bfs=uO zVKx^7g9HNu!&0dDJ}w3Z0R{$!qfi5{aWOE6F)%Q^-~#)E;Xl*@c5aZt3=Bft5c4Fs zAs&$DW?&FyU|`VWW?)cdU|?|JW?*2hXJBB+;)eJ<kDGx(g@J*ghMR#wgn@x!AvXhq zECU0>Hg1STSD@-%b3=UglbeBogMooTm<M8k3=hO&Z7AQ62V#x`55z;EP&%Fm5(1e# z3=H+4xGLp=__P(OU>*+xgEa#K!wMb-1}O#xh9^9bxc<+>z`(=6z`()_u~3kgfkBsn zfkA;6;xj*9hyzl1Ar8ypg@iycRDBgxyptCa<&$_B>cNR<6)z;wtmlPTv>&SB2vqzs zFT@9rp$5E#s{00|e?w_dLII@(Rz8RW1^6K5$wO%sD6PrIz@P|<3ch-Xf&e~99ES2i zTpkOh)1cz{P>tn$5Fgd>L87dg4-#?{q4KNvAVIsHkAXp(fq`K+A0#B7^FeZvGCw3S zs`Eqau>^%bC>uHPGcX7<Ffh3DLxM7z9}+}`{E*b#$qz|1tN0lhG#MBeE<pLepz;a= z3=DD%3=EC}5cLTHkhIe%07)zJ1sE9Q85kILLislZARe#(EC5OUKcE8Kf)IlQ1R*}t z7lg=r2tqVO3ql;40998a2yyUaL5RgG1tC#&N|1qpiGhLP3RK^9L5M@{2r@88GcYiG z6J%hp0_A@pAqECL1_lOSAqEC7Q0f<AV6b3dU^p(sz%YRkl)NE9Jy8UbM&^q^;&wfh z-X{VH^0OikbvH#IiS)S$#9?1VARgfog@mB8C`6s7C`esB14Fnd#6>Bh5Q7`Q5)2Ie zQ2rcINSv(}h2;OeqL4IjP84FnRZ&Rxd=2F@i7_y!F)%Plh(UtfUJPPkyck4%t{B9g zW-$f^c2NGGBnB~fmKem~)nbs6YLgfw==VbT7sMDClo=QpZi_K6C^0ZF{1<~nm6A9_ zpCgp^5Qk(#e<(jx98wO%h(kPDC=N-Sz2XcE^`NqSr#Qq#d&MCJo)L$X)vv`NKH!jm z@HHeLLG3C5NnC*vkSNKQfP_%J1SHW;lz{kjC6vEk0^-5z5|EI1ApuDv-y|67!DTdv z02Pf=k`M(3k_-$X3=9l*l91Fs87jV45|a2%OF}HTFUi1Q#K6GtRTAP*4JnAvJ)|HO z_(?%RCIZTjmx3hXOeshd<w?~uFxWCMFie$#1kq(FNICFA3gV*=QV^FjNka@2hSIXq z5TB|`LsGT9G(=ydG{ggm(h&Xm(hvtUN<;F0hcqPWdZZZ`bQl;I*4Ilz;`)v>q(FEM zwcrDk{spC3WFS7~lYs=eiVURaHIZRpFlS(3NRnY-FkoO{m?Z;o@M#%HRNj$+<gVW` zkdV=mg*ePW7LvB=on#>{43&jwjFDwv&|qL-$d!dyFijR>!4X-Afq!Hn21?68vXhq_ zBrO!kL878h4idBn<skZB$UzdDm^=f6Ap--0lRU&DCGy}9uV?6zhgdvc9%9f2c?Je8 z1_p+6@{lt6r#!@^(h877sHXri*joYOuu27p!5bAIMeSn+NJz>nLV{dF5fU{zijd08 zL=j?+zaq#3(hLkaiVO^v3=9mD6d4$t85kJOC_)mQz+_9#3by>blEmba$qzV7Hm7sN YaC3Qs1hPvqQ;R157wy`-Sj?XX0IwF+N&o-= diff --git a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po index 8190419f..43b3fa34 100644 --- a/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po +++ b/ckanext/odsh/i18n/de/LC_MESSAGES/ckanext-odsh.po @@ -439,6 +439,15 @@ msgstr "Fertig" msgid "Data Proposal" msgstr "Datenvorschlag" +msgid "Create Data Proposal" +msgstr "Datensatz vorschlagen" + +msgid "Close Data Proposal" +msgstr "Datenvorschlag abschließen" + +msgid "Edit Data Proposal" +msgstr "Datenvorschlag bearbeiten" + msgid "No data proposal found" msgstr "Kein Datenvorschlag gefunden" diff --git a/ckanext/odsh/plugin.py b/ckanext/odsh/plugin.py index 7531b568..405f275b 100644 --- a/ckanext/odsh/plugin.py +++ b/ckanext/odsh/plugin.py @@ -367,6 +367,9 @@ class OdshPlugin(plugins.SingletonPlugin, DefaultTranslation, DefaultDatasetForm m.connect('user_datasets', '/user/{id:.*}', action='read', ckan_icon='sitemap') + map.connect('comment_datarequest', '/datarequest/new', + controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', + action='new', conditions=dict(method=['GET', 'POST']), ckan_icon='comment') map.connect('comment_datarequest', '/datarequest/{id}', controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='comment', conditions=dict(method=['GET', 'POST']), ckan_icon='comment') diff --git a/ckanext/odsh/public/odsh.css b/ckanext/odsh/public/odsh.css index ce861036..496f42b7 100644 --- a/ckanext/odsh/public/odsh.css +++ b/ckanext/odsh/public/odsh.css @@ -1959,16 +1959,15 @@ p.package-info-categorie background-color: #003064; } -.label.label-open +.label.label-closed { color: white; - background-color: #003064; + background-color: #DBDBDB; } -.label.label-closed +.datarequest .dataset-heading .label { - color: white; - background-color: #DBDBDB; + vertical-align: top; } .datarequest-subtitle @@ -2076,4 +2075,11 @@ p.package-info-categorie .datarequest .dataset-content .icon-comment { margin-top: 10px; -} \ No newline at end of file +} + +.datarequest .dataset-form{ + width: 715px; +} +.datarequest .dataset-form .row-fluid .span6 { + width: 715px; +} diff --git a/ckanext/odsh/templates/datarequests/close.html b/ckanext/odsh/templates/datarequests/close.html new file mode 100644 index 00000000..65d168a6 --- /dev/null +++ b/ckanext/odsh/templates/datarequests/close.html @@ -0,0 +1,16 @@ +{% extends "datarequests/base.html" %} + +{% block subtitle %}{{ _('Close Data Proposal') }}{% endblock %} + +{% block breadcrumb_content %} + <li>{% link_for _('Data Proposal'), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='index' %}</li> + <li>{% link_for c.datarequest.get('title')|truncate(30), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='show', id=c.datarequest.get('id') %}</li> + <li class="active"><a href="">{{ _('Close Data Proposal') }}</a></li> +{% endblock %} + +{% block primary_content_inner %} + <h1 class="{% block page_heading_class %}page-heading{% endblock %}">{% block page_heading %}{{ _('Close Data Proposal') }}{% endblock %}</h1> + {% snippet "datarequests/snippets/close_datarequest_form.html", datarequest=c.datarequest, datasets=c.datasets, errors=c.errors, errors_summary=c.errors_summary %} +{% endblock %} + +{% block page_header %}{% endblock %} \ No newline at end of file diff --git a/ckanext/odsh/templates/datarequests/comment.html b/ckanext/odsh/templates/datarequests/comment.html index 5b550518..25e9567b 100644 --- a/ckanext/odsh/templates/datarequests/comment.html +++ b/ckanext/odsh/templates/datarequests/comment.html @@ -57,7 +57,7 @@ <div class="dataset-details"> {% if c.datarequest.get('closed', False) %} <div class="label label-closed"> - {% trans %}Closed{% endtrans %} + {% trans %}Done{% endtrans %} </div> {% else %} <div class="label label-open"> diff --git a/ckanext/odsh/templates/datarequests/edit.html b/ckanext/odsh/templates/datarequests/edit.html new file mode 100644 index 00000000..6ca7fb66 --- /dev/null +++ b/ckanext/odsh/templates/datarequests/edit.html @@ -0,0 +1,16 @@ +{% extends "datarequests/base.html" %} + +{% block subtitle %}{{ _('Edit Data Proposal') }}{% endblock %} + +{% block breadcrumb_content %} + <li>{% link_for _('Data Proposal'), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='index' %}</li> + <li>{% link_for c.original_title|truncate(30), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='show', id=c.datarequest.get('id') %}</li> + <li class="active"><a href="">{{ _('Edit Data Proposal') }}</a></li> +{% endblock %} + +{% block primary_content_inner %} + <h1 class="{% block page_heading_class %}page-heading{% endblock %}">{% block page_heading %}{{ _('Edit Data Proposal') }}{% endblock %}</h1> + {% snippet "datarequests/snippets/edit_datarequest_form.html", data=c.datarequest, errors=c.errors, errors_summary=c.errors_summary, offering=c.offering %} +{% endblock %} + +{% block page_header %}{% endblock %} \ No newline at end of file diff --git a/ckanext/odsh/templates/datarequests/new.html b/ckanext/odsh/templates/datarequests/new.html index 46dd7b08..e8f5807d 100644 --- a/ckanext/odsh/templates/datarequests/new.html +++ b/ckanext/odsh/templates/datarequests/new.html @@ -3,8 +3,8 @@ {% block subtitle %}{{ _('Create Data Request') }}{% endblock %} {% block breadcrumb_content %} - <li>{% link_for _('Data Requests'), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='index' %}</li> - <li class="active"><a href="">{{ _('Create Data Request') }}</a></li> + <li>{% link_for _('Data Proposal'), controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='index' %}</li> + <li class="active"><a href="">{{ _('Create Data Proposal') }}</a></li> {% endblock %} {% block primary_content_inner %} @@ -12,9 +12,7 @@ {% snippet "datarequests/snippets/new_datarequest_form.html", data=c.datarequest, errors=c.errors, errors_summary=c.errors_summary, offering=c.offering %} {% endblock %} -{% block secondary_content_additional_info %} - <p>{% trans %}To create a data request, fill the form and specify a title and a description for your request. Please, be as clear as you can in order to ease the task of accomplishing your request. You can also specify an organization if your data request is closely related with it. {% endtrans %} - </p> +{% block secondary %} {% endblock %} {% block page_header %}{% endblock %} \ No newline at end of file diff --git a/ckanext/odsh/templates/datarequests/snippets/datarequest_form.html b/ckanext/odsh/templates/datarequests/snippets/datarequest_form.html index 54b823f0..9bebd010 100644 --- a/ckanext/odsh/templates/datarequests/snippets/datarequest_form.html +++ b/ckanext/odsh/templates/datarequests/snippets/datarequest_form.html @@ -4,22 +4,21 @@ {% set description = data.get('description', '') %} {% set organization_id = data.get('organization_id', h.get_request_param('organization')) %} {% set organizations_available = h.organizations_available('read') %} -{% set form_horizontal = 'form-horizontal' if h.ckan_version()[:3] <= '2.7' else '' %} {# This provides a full page that renders a form for publishing a dataset. It can then itself be extended to add/remove blocks of functionality. #} -<form class="dataset-form {{ form_horizontal }}" method="post" data-module="basic-form" action enctype="multipart/form-data"> +<form class="dataset-form" method="post" data-module="basic-form" action enctype="multipart/form-data"> <input type="hidden" id="id" name="id" value="{{ data.get('id', '') }}" /> {% block errors %}{{ form.errors(errors_summary) }}{% endblock %} {% block offering_title %} - {{ form.input('title', id='field-title', label=_('Title'), placeholder=_('eg. Data Request Name'), value=title, error=errors['Title'], classes=['control-full', 'control-large'], is_required=true) }} + {{ form.input('title', id='field-title', label=_('Title'), placeholder=_('eg. Data Request Name'), value=title, error=errors['Title'], classes=['control-full'], is_required=true) }} {% endblock %} {% block offering_description %} - {{ form.markdown('description', id='field-description', label=_('Description'), placeholder=_('eg. Data Request description'), value=description, error=errors['Description']) }} + {{ form.markdown('description', id='field-description', label=_('Description'), placeholder=_('eg. Data Request description'), value=description, error=errors['Description'], is_required=true) }} {% endblock %} @@ -31,7 +30,7 @@ then itself be extended to add/remove blocks of functionality. #} <a class="btn btn-danger pull-left" href="{% url_for controller='ckanext.datarequests.controllers.ui_controller:DataRequestsUI', action='delete', id=data.get('id') %}" data-module="confirm-action" data-module-i18n="{{ locale }}">{% block delete_button_text %}{{ _('Delete') }}{% endblock %}</a> {% endif %} {% endblock %} - <button class="btn btn-primary" type="submit" name="save">{% block save_button_text %}{{ _('Create Data Request') }}{% endblock %}</button> + <button class="btn btn-primary btn-arrow-right" type="submit" name="save">{% block save_button_text %}{{ _('Create Data Request') }}{% endblock %}</button> </div> {% endblock %} diff --git a/ckanext/odsh/tests/test_datarequest.py b/ckanext/odsh/tests/test_datarequest.py index d94695c3..a37c7e4e 100644 --- a/ckanext/odsh/tests/test_datarequest.py +++ b/ckanext/odsh/tests/test_datarequest.py @@ -38,8 +38,9 @@ class TestDatarequest: form['description'] = markdown final_response = self.app.submit_form(form) + id = re.search( - '/datarequest/comment/([a-zA-Z0-9\-]*)">', final_response.body).group(1) + '/datarequest/edit/([a-zA-Z0-9\-]*)">', final_response.body).group(1) return id def test_create_datarequest(self): @@ -50,6 +51,22 @@ class TestDatarequest: response = self.app.get('/datarequest') assert id in response + def test_edit_datarequest(self): + # Arrange + id = self._create_request() + + # Act + response = self.app.get('/datarequest/edit/'+id) + form = response.forms[0] + form['title'] = id+'edit_title' + form['description'] = id+'edit_desc' + final_response = self.app.submit_form(form) + + # Assert + response = self.app.get('/datarequest/'+id) + assert id+'edit_title' in response + assert id+'edit_desc' in response + def test_comment_datarequest(self): # Arrange id = self._create_request() @@ -64,6 +81,19 @@ class TestDatarequest: # Assert assert guid in final_response + def test_close_datarequest(self): + # Arrange + id = self._create_request() + + # Act + response = self.app.get('/datarequest/close/'+id) + form = response.forms[0] + final_response = self.app.submit_form(form) + + # Assert + response = self.app.get('/datarequest/'+id) + assert 'label-closed' in response + def _get_app(self): if not hasattr(self, 'app'): app = AppProxy() diff --git a/ckanext/odsh/tests/test_helpers.py b/ckanext/odsh/tests/test_helpers.py index 678af9b0..f033b573 100644 --- a/ckanext/odsh/tests/test_helpers.py +++ b/ckanext/odsh/tests/test_helpers.py @@ -5,6 +5,7 @@ from ckan.common import config import ckan.config.middleware import ckan.tests.helpers as helpers import sys +import pdb def odsh_test(): -- GitLab