I wonder if it would be better to ask for forgiveness here. E.g.

```python
try:
    if not presentation.level and presentation.category:
        presentation.level = presentation.category
except AttributeError:
    pass
```

This would be faster if you expect the property to be there most of the time. Also notice how I'm checking for empty and non-empty strings. (From our style guides, "For sequences (strings, lists, tuples), use the fact that empty sequences are false".)