Skip to content

Commit

Permalink
[2211] Fixing publisher_dataset_form to show viable groups on the edi…
Browse files Browse the repository at this point in the history
…t form
  • Loading branch information
rossjones committed Mar 6, 2012
1 parent 0db27b1 commit 6ef3618
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 30 deletions.
8 changes: 1 addition & 7 deletions ckanext/publisher_form/forms.py
Expand Up @@ -120,14 +120,8 @@ def setup_template_variables(self, context, data_dict):

if 'group' in context:
group = context['group']
possible_parents = model.Session.query(model.Group).\
filter(model.Group.state == 'active').\
filter(model.Group.type == 'publisher').\
filter(model.Group.id != group.id ).order_by(model.Group.title).all()

# Only show possible groups where the current user is a member
user_groups = c.userobj.get_groups('publisher')
c.possible_parents =[p for p in possible_parents if p in user_groups]
c.possible_parents = c.userobj.get_groups('publisher', 'admin')

c.parent = None
grps = group.get_groups('publisher')
Expand Down
69 changes: 46 additions & 23 deletions ckanext/publisher_form/templates/dataset_form.html
@@ -1,4 +1,4 @@
<form id="dataset-edit" method="post"
<form id="dataset-edit" method="post"
py:attrs="{'class':'has-errors'} if errors else {}"
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:py="http://genshi.edgewall.org/"
Expand Down Expand Up @@ -41,13 +41,28 @@ <h2>Errors in form</h2>

<dt class="name-label"><label class="field_req" for="name">Url</label></dt>
<dd class="name-field">
<span class="js-url-text url-text">${url(controller='package', action='index')+'/'}<span class="js-url-viewmode js-url-suffix">&nbsp;</span><a href="#" style="display: none;" class="url-edit js-url-editlink js-url-viewmode">(edit)</a></span>
<span class="js-url-text url-text">${h.url(controller='package', action='search')+'/'}<span class="js-url-viewmode js-url-suffix">&nbsp;</span><a href="#" style="display: none;" class="url-edit js-url-editlink js-url-viewmode">(edit)</a></span>
<input style="display: none;" id="name" maxlength="100" name="name" type="text" class="url-input js-url-editmode js-url-input" value="${data.get('name', '')}" />
<p class="js-url-is-valid">&nbsp;</p>
</dd>
<dd style="display: none;" class="js-url-editmode name-instructions basic">2+ characters, lowercase, using only 'a-z0-9' and '-_'</dd>
<dd class="js-url-editmode name-instructions field_error" py:if="errors.get('name', '')">${errors.get('name', '')}</dd>


<dt class="parent-label">
<label class="field_opt" for="parent">Publisher</label>
</dt>

<dd class="parent-field">
<select id="parent" name="parent" class="chzn-select" data-placeholder="Please choose a publisher">
<option value=""></option>
<py:for each="pg in c.groups_available">
<option py:attrs="{'selected': 'selected' if c.parent and pg.id == c.parent.id else None}" value="${pg.id}">${pg.title}</option>
</py:for>
</select>
</dd>


<dt class="homepage-label"><label class="field_opt" for="url">Home Page</label></dt>
<dd class="homepage-field"><input id="url" name="url" type="text" value="${data.get('url', '')}"/></dd>
<dd class="homepage-instructions instructions basic">The URL for the web page describing the data (not the data itself).</dd>
Expand All @@ -56,8 +71,7 @@ <h2>Errors in form</h2>

<dt class="license-label"><label class="field_opt" for="license_id">License</label></dt>
<dd class="license-field">
<select id="license_id" name="license_id" class="chzn-select" data-placeholder="Please choose a license...">

<select id="license_id" name="license_id">
<py:for each="licence_desc, licence_id in c.licences">
<option value="${licence_id}" py:attrs="{'selected': 'selected' if data.get('license_id', '') == licence_id else None}" >${licence_desc}</option>
</py:for>
Expand Down Expand Up @@ -107,7 +121,7 @@ <h2>Errors in form</h2>
</fieldset>

<fieldset id="groups">
<h3>Publishers</h3>
<h3>Groups</h3>
<dl>
<py:for each="num, group in enumerate(data.get('groups', []))">
<?python
Expand All @@ -118,29 +132,29 @@ <h3>Publishers</h3>
<dt py:if="'id' in group">
<input type="${'checkbox' if authorized_group else 'hidden'}" name="groups__${num}__id" checked="checked" value="${group['id']}" />
<input type="hidden" name="groups__${num}__name" value="${group.get('name', authorized_group['name'] if authorized_group else '')}" />
</dt>
</dt>
<dd py:if="'id' in group"><label for="groups__${num}__checked">${group.get('name', authorized_group['name'] if authorized_group else '')}</label></dd>
</py:for>

<dt>Publisher</dt>
<dd py:if="c.groups_available">
<select id="groups__${len(data.get('groups', []))}__id" name="groups__${len(data.get('groups', []))}__id" class="chzn-select" data-placeholder="Please choose a publisher ...">
<option selected="selected" value=""></option>
<dt>Group</dt>
<dd py:if="c.groups_available">
<select id="groups__${len(data.get('groups', []))}__id" name="groups__${len(data.get('groups', []))}__id">
<option selected="selected" value="">(None)</option>
<py:for each="group in c.groups_available">
<option value="${group['id']}" >${group['name']}</option>
<option value="${group['id']}" >${group['name']}</option>
</py:for>
</select>
</dd>
</dd>
<dd py:if="not c.groups_available"><em>Cannot add any groups.</em></dd>
</dl>
<h3>Tags</h3>
<dl>
<dt class="tags-label"><label class="field_opt" for="tags">Tags</label></dt>
<dd class="tags-field">
<input class="long autocomplete-tag" id="tag_string" name="tag_string" size="60" type="text"
value="${data.get('tag_string') or ', '.join([tag['name'] for tag in data.get('tags', [])])}" />
<input class="long autocomplete-tag" id="tag_string" name="tag_string" size="60" type="text"
value="${data.get('tag_string') or ', '.join([tag['name'] for tag in data.get('tags', []) if not tag.get('vocabulary_id')])}" />
</dd>
<dd class="tags-instructions instructions basic" i18n:msg="">Comma-separated terms that may link this dataset to similar ones. For more information on conventions, see <a href="http://wiki.okfn.org/ckan/doc/faq#TagConventions">this wiki page</a>.</dd>
<dd class="tags-instructions instructions basic" i18n:msg="">Comma-separated terms that may link this dataset to similar ones. For more information on conventions, see <a href="http://wiki.ckan.org/Managing_Datasets#Tag_Conventions">this wiki page</a>.</dd>
<dd class="tags-instructions hints">e.g. pollution, rivers, water quality</dd>
<dd class="tags-instructions field_error" py:if="errors.get('tag_string', '')">${errors.get('tag_string', '')}</dd>
</dl>
Expand All @@ -166,14 +180,6 @@ <h3>Tags</h3>
<dd class="instructions basic">A number representing the version (if applicable)</dd>
<dd class="hints">e.g. 1.2.0</dd>

<dt py:if="c.is_sysadmin or c.auth_for_change_state"><label class="field_opt" for="state">State</label></dt>
<dd py:if="c.is_sysadmin or c.auth_for_change_state">
<select id="state" name="state" class="chzn-select">
<option py:attrs="{'selected': 'selected' if data.get('state') == 'active' else None}" value="active">active</option>
<option py:attrs="{'selected': 'selected' if data.get('state') == 'deleted' else None}" value="deleted">deleted</option>
</select>
</dd>

</dl>
</fieldset>

Expand All @@ -200,6 +206,23 @@ <h3>Tags</h3>
</py:with>
</dl>
</fieldset>
<fieldset id='delete' py:if="c.is_sysadmin or c.auth_for_change_state">
<dl>
<dt>Delete</dt>
<dd>
<p>Do you really want to change the state of this dataset? &nbsp;&nbsp;<button class="dataset-delete pretty-button">Yes!</button></p>
<span>
This dataset is&nbsp;&nbsp;
<select id="state" class="dataset-delete" name="state" style="display:inline;">
<option py:attrs="{'selected': 'selected' if data.get('state') == 'active' else None}" value="active">active</option>
<option py:attrs="{'selected': 'selected' if data.get('state') == 'deleted' else None}" value="deleted">deleted</option>
</select>
</span>
</dd>
</dl>
</fieldset>

<div id="unsaved-warning"></div>

<label for="log_message" class="edit-summary">Edit summary (briefly describe the changes you have made)</label>
<textarea id="log_message" name="log_message" class="edit-summary short wide">${data.get('log_message', '')}</textarea>
Expand Down

0 comments on commit 6ef3618

Please sign in to comment.