Skip to content

Commit

Permalink
Merge pull request #56 from mattboehm/ssid
Browse files Browse the repository at this point in the history
Add field for whether dataset contains SSN
  • Loading branch information
tanderegg committed Jan 4, 2018
2 parents 112963c + a57e925 commit 0d7f021
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 4 deletions.
6 changes: 5 additions & 1 deletion ckanext/cfpb_extrafields/exportutils.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
("pra_omb_control_number", "PRA: OMB control number"),
("pra_omb_expiration_date", "PRA: OMB expiration date"),
("privacy_contains_pii", "Privacy: contains PII?"),
("privacy_contains_ssn", "Privacy: contains SSN?"),
("privacy_has_direct_identifiers", "Privacy: has direct identifiers?"),
("privacy_has_privacy_act_statement", "Privacy: has privacy act statement?"),
("privacy_pia_title", "Privacy: PIA title"),
Expand Down Expand Up @@ -107,5 +108,8 @@ def to_csv(data, fields, fieldmap=tuple(FIELDS)):
writer = csv.DictWriter(output, [f[0] for f in fields], extrasaction="ignore")
writer.writerow(dict(fieldmap))
for result in data:
writer.writerow(flatten(result))
row = flatten(result)
#If blank, default to "no"
row["privacy_contains_ssn"] = row.get("privacy_contains_ssn") or "no"
writer.writerow(row)
return output.getvalue()
11 changes: 8 additions & 3 deletions ckanext/cfpb_extrafields/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ def _delete_and_rebuild_datadict(self, resource):
# than the default notification that CKAN provides. It is not currently used.
def _email_on_change(self, context, resource, field):
# if specified fields have changed notify the relevant people
if self.changed[field]:
if hasattr(self, "changed") and self.changed[field]:
# print 'trigger email on change to '+field
# filter by dataset name?
followers = tk.get_action('dataset_follower_list')(context,{'id': resource['package_id']})
Expand Down Expand Up @@ -147,8 +147,9 @@ def after_update(self, context, resource):
# self._email_on_change(context,resource,'privacy_contains_pii')
self._redirect_to_edit_on_change(resource, 'resource_type')
# reset monitored keys
for key in self.changed:
self.changed[key] = False
if hasattr(self, "changed"):
for key in self.changed:
self.changed[key] = False

def before_delete(self, context, resource, resources):
return
Expand Down Expand Up @@ -282,6 +283,8 @@ def _modify_package_schema(self, schema):
tk.get_converter('convert_to_extras'),],
'privacy_contains_pii' : [tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras'),],
'privacy_contains_ssn' : [tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras'),],
'privacy_has_direct_identifiers' : [tk.get_validator('ignore_missing'),
tk.get_converter('convert_to_extras'),],
})
Expand Down Expand Up @@ -402,6 +405,8 @@ def show_package_schema(self):
tk.get_validator('ignore_missing'),],
'privacy_contains_pii' : [ tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing'),],
'privacy_contains_ssn' : [ tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing'),],
'privacy_has_direct_identifiers' : [ tk.get_converter('convert_from_extras'),
tk.get_validator('ignore_missing'),],
'cleansing_rules_used' : [tk.get_converter('convert_from_extras'),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,10 @@
<td class="dataset-details">{{ pkg_dict.privacy_contains_pii}} </td>
</tr>
{% endif %}
<tr>
<th scope="row" class="dataset-label">{{ _("privacy: contains SSN") }} </th>
<td class="dataset-details">{{ pkg_dict.privacy_contains_ssn|default('no')}} </td>
</tr>
{% if pkg_dict.privacy_has_direct_identifiers %}
<tr>
<th scope="row" class="dataset-label">{{ _("privacy: has direct identifiers") }}</th>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,12 @@ <h3>IV. Compliance</h3>
error=errors.privacy_contains_pii)}}
</div>

<div class='core-field'>
{{ form_custom.radio('privacy_contains_ssn',
label=_('privacy: contains SSN?'),
current_value=data.privacy_contains_ssn,
error=errors.privacy_contains_ssn)}}
</div>
{{ form_custom.radio('privacy_has_direct_identifiers',
label=_('privacy: has direct identifiers?'),
current_value=data.privacy_has_direct_identifiers)}}
Expand Down

0 comments on commit 0d7f021

Please sign in to comment.