'Returns the final value for the column\'s ``link`` property.
If ``allowed_data_types`` of this column  is not empty and the datum
has an assigned type, check if the datum\'s type is in the
``allowed_data_types`` list. If not, the datum won\'t be displayed
as a link.
If ``link`` is a callable, it will be passed the current data object
and should return a URL. Otherwise ``get_link_url`` will attempt to
call ``reverse`` on ``link`` with the object\'s id as a parameter.
Failing that, it will simply return the value of ``link``.'

def get_link_url(self, datum):

    if self.allowed_data_types:
        data_type_name = self.table._meta.data_type_name
        data_type = getattr(datum, data_type_name, None)
        if (data_type and (data_type not in self.allowed_data_types)):
            return None
    obj_id = self.table.get_object_id(datum)
    if callable(self.link):
        return self.link(datum)
    try:
        return urlresolvers.reverse(self.link, args=(obj_id,))
    except urlresolvers.NoReverseMatch:
        return self.link
