Hello!
I'm new to this group and I have a question.
This is my model:
class Node(db.Model):
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.String(20))
name = db.Column(db.String(30), nullable=False)
date_added = db.Column(db.DateTime, default=datetime.now())
parent_id = db.Column(db.Integer, db.ForeignKey('node.id'),
nullable=True)
path = db.Column(db.String(200), default='')
__mapper_args__ = {'polymorphic_on': type}
class Directory(Node):
is_root = db.Column(db.Boolean, default=False)
children = db.relationship(Node, cascade='all, delete, delete-orphan',
cascade_backrefs=False,
backref=db.backref('parent',
remote_side=[Node.id]))
class Image(Node):
basename = db.Column(db.String(36))
extension = db.Column(db.String(5))
checksum = db.Column(db.String(32))
__mapper_args__ = {'polymorphic_identity': 'image'}
def remove_file(mapper, connection, target):
directory = current_app.config['UPLOAD_FOLDER']
os.remove(os.path.join(directory, target.basename))
event.listen(Image, 'after_delete', remove_file)
When I delete a Directory I want all the children Images to be deleted as
well.
After deleting the Image, the event listener should also delete the correct
file from the hdd.
When I'm deleting Images one by one the even listener works just fine but
when I delete a directory with children Images I get this error:
ObjectDeletedError: Instance '<Image at 0x1020c5c90>' has been deleted, or
its row is otherwise not present.
I realised that it happens only when in the listener I access the
attributes that are on the Image (like "basename") and not when I access
the attributes on Node ("name").
I would be very grateful for any help.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.