Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def postSave(self, parsed):
- extra_columns = {}
- for org in self.data.mentor_for:
- for column in org.proposal_extra:
- extra_columns.setdefault(org.key.id(), []).append(column)
- for _, properties in parsed.iteritems():
- if 'org_key' not in properties or 'full_proposal_key' not in properties:
- logging.warning("Missing key in '%s'", properties)
- continue
- org_key_name = properties.pop('org_key')
- proposal_key = properties.pop('full_proposal_key')
- valid_columns = set(extra_columns.get(org_key_name, []))
- remove_properties = []
- for key, value in properties.iteritems():
- if key not in valid_columns:
- logging.warning("Invalid property '%s'", key)
- remove_properties.append(key)
- try:
- cleaning.sanitize_html_string(value)
- except Exception:
- remove_properties.append(key)
- for prop in remove_properties:
- properties.pop(prop)
- def update_proposal_txn():
- proposal = db.get(db.Key(proposal_key))
- if not proposal:
- logging.warning("Invalid proposal_key '%s'", proposal_key)
- return
- data = {}
- if proposal.extra:
- # we have to loads in the txn, should be fast enough
- data = json.loads(proposal.extra)
- data.update(properties)
- proposal.extra = json.dumps(data)
- proposal.put()
- db.run_in_transaction(update_proposal_txn)
- return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement