Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.

Commit

Permalink
Merge pull request #852 from open-apparel-registry/ki/add-claim-data-…
Browse files Browse the repository at this point in the history
…to-facility-history

Add claim data to history response

Connects #818
  • Loading branch information
Kelly Innes committed Oct 3, 2019
2 parents 2d75478 + 05a7d63 commit a453ab7
Show file tree
Hide file tree
Showing 5 changed files with 371 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

### Changed
- Include match association records in facility history list [#851](https://github.com/open-apparel-registry/open-apparel-registry/pull/851)
- Include facility claim data in facility history list [#852](https://github.com/open-apparel-registry/open-apparel-registry/pull/852)

### Deprecated

Expand Down
3 changes: 3 additions & 0 deletions src/django/api/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ class FacilityHistoryActions:
OTHER = 'OTHER'
ASSOCIATE = 'ASSOCIATE'
DISSOCIATE = 'DISSOCIATE'
CLAIM = 'CLAIM'
CLAIM_UPDATE = 'CLAIM_UPDATE'
CLAIM_REVOKE = 'CLAIM_REVOKE'


class Affiliations:
Expand Down
76 changes: 74 additions & 2 deletions src/django/api/facility_history.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.db.models import F

from api.constants import ProcessingAction, FacilityHistoryActions
from api.models import FacilityMatch
from api.models import FacilityMatch, FacilityClaim


def create_associate_match_string(facility_str, contributor_str, list_str):
Expand Down Expand Up @@ -162,6 +162,65 @@ def processing_results_has_split_action_for_oar_id(list_item, facility_id):
]


def create_facility_claim_entry(claim):
if claim.status == FacilityClaim.REVOKED:
return {
'updated_at': str(claim.updated_at),
'action': FacilityHistoryActions.CLAIM_REVOKE,
'detail': 'Claim on facility {} by {} was revoked'.format(
claim.facility.id,
claim.contributor.name,
),
}

if claim.status == FacilityClaim.APPROVED \
and claim.prev_record.status == FacilityClaim.PENDING:
return {
'updated_at': str(claim.updated_at),
'action': FacilityHistoryActions.CLAIM,
'detail': 'Facility {} was claimed by {}'.format(
claim.facility.id,
claim.contributor.name,
),
}

if claim.status == FacilityClaim.APPROVED:
public_claim_data_keys = [
'facility_description',
'facility_name_english',
'facility_name_native_language',
'facility_minimum_order',
'facility_average_lead_time',
'facility_workers_count',
'facility_female_workers_percentage',
'facility_type',
'other_facility_type',
'facility_affiliations',
'facility_product_types',
'facility_production_types',
'facility_parent_company',
]

public_changes = {
k: v
for k, v
in get_change_diff_for_history_entry(claim).items()
if k in public_claim_data_keys
}

if any(public_changes):
return {
'updated_at': str(claim.updated_at),
'action': FacilityHistoryActions.CLAIM_UPDATE,
'detail': 'Facility {} claim public data was updated'.format(
claim.facility.id,
),
'changes': public_changes,
}

return None


def create_facility_history_list(entries, facility_id):
facility_split_entries = [
{
Expand Down Expand Up @@ -208,12 +267,25 @@ def create_facility_history_list(entries, facility_id):
.filter(facility_id=facility_id)
]

facility_claim_entries = [
create_facility_claim_entry(c)
for c
in FacilityClaim
.history
.filter(status__in=[
FacilityClaim.APPROVED,
FacilityClaim.REVOKED,
])
if c.facility.id == facility_id
if create_facility_claim_entry(c) is not None
]

history_entries = [
create_facility_history_dictionary(entry)
for entry
in entries
]

return sorted(history_entries + facility_split_entries +
facility_match_entries,
facility_match_entries + facility_claim_entries,
key=lambda entry: entry['updated_at'], reverse=True)
Loading

0 comments on commit a453ab7

Please sign in to comment.