def collection_delete(self): association_in = schema_association.objectify(self.request.validated) association = self._load(association_in) if association is None: # also accept {parent_document_id: y, child_document_id: x} when # for an association {parent_document_id: x, child_document_id: x} association_in = Association( parent_document_id=association_in.child_document_id, child_document_id=association_in.parent_document_id) association = self._load(association_in) if association is None: raise HTTPBadRequest('association does not exist') if is_main_waypoint_association(association): raise HTTPBadRequest( 'as the main waypoint of the route, this waypoint can not ' 'be disassociated') log = association.get_log( self.request.authenticated_userid, is_creation=False) DBSession.delete(association) DBSession.add(log) return {}
def collection_delete(self): association_in = schema_association.objectify(self.request.validated) association = self._load(association_in) if association is None: # also accept {parent_document_id: y, child_document_id: x} when # for an association {parent_document_id: x, child_document_id: x} association_in = Association( parent_document_id=association_in.child_document_id, child_document_id=association_in.parent_document_id) association = self._load(association_in) if association is None: raise HTTPBadRequest('association does not exist') if is_main_waypoint_association(association): raise HTTPBadRequest( 'as the main waypoint of the route, this waypoint can not ' 'be disassociated') log = association.get_log(self.request.authenticated_userid, is_creation=False) DBSession.delete(association) DBSession.add(log) return {}
def collection_delete(self): association_in = schema_association.objectify(self.request.validated) association = self._load(association_in) if association is None: # also accept {parent_document_id: y, child_document_id: x} when # for an association {parent_document_id: x, child_document_id: x} association_in = Association( parent_document_id=association_in.child_document_id, child_document_id=association_in.parent_document_id) association = self._load(association_in) if association is None: raise HTTPBadRequest('association does not exist') _check_required_associations(association) check_permission_for_association_removal(self.request, association) log = association.get_log(self.request.authenticated_userid, is_creation=False) DBSession.delete(association) DBSession.add(log) update_cache_version_associations( [], [{ 'parent_id': association.parent_document_id, 'parent_type': association.parent_document_type, 'child_id': association.child_document_id, 'child_type': association.child_document_type }]) notify_es_syncer_if_needed(association, self.request) update_feed_association_update(association.parent_document_id, association.parent_document_type, association.child_document_id, association.child_document_type, self.request.authenticated_userid) return {}
def collection_delete(self): association_in = schema_association.objectify(self.request.validated) association = self._load(association_in) if association is None: # also accept {parent_document_id: y, child_document_id: x} when # for an association {parent_document_id: x, child_document_id: x} association_in = Association( parent_document_id=association_in.child_document_id, child_document_id=association_in.parent_document_id) association = self._load(association_in) if association is None: raise HTTPBadRequest('association does not exist') _check_required_associations(association) check_permission_for_association_removal(self.request, association) log = association.get_log( self.request.authenticated_userid, is_creation=False) DBSession.delete(association) DBSession.add(log) update_cache_version_associations( [], [{'parent_id': association.parent_document_id, 'parent_type': association.parent_document_type, 'child_id': association.child_document_id, 'child_type': association.child_document_type}]) notify_es_syncer_if_needed(association, self.request) update_feed_association_update( association.parent_document_id, association.parent_document_type, association.child_document_id, association.child_document_type, self.request.authenticated_userid) return {}
def _remove_image_from_feed(document_id): # If removed doc is an image, it might be needed to remove # any reference to this image in feed items items = DBSession.query(DocumentChange). \ filter(or_( DocumentChange.image1_id == document_id, DocumentChange.image2_id == document_id, DocumentChange.image3_id == document_id )).all() for item in items: if item.change_type == 'added_photos' and \ item.image1_id == document_id and \ not item.image2_id: # Remove feed item if no other image was added DBSession.delete(item) else: # Shift image references in the feed item if item.image1_id == document_id: item.image1_id = item.image2_id item.image2_id = item.image3_id elif item.image2_id == document_id: item.image2_id = item.image3_id item.image3_id = None item.more_images = False