change pub_date to DateField, fix optional shelf code