code: def get_link_url(self, datum=None):
          
          if not self.url:
              raise NotImplementedError('A LinkAction class must have a '
                                        'url attribute or define its own '
                                        'get_link_url method.')
          if callable(self.url):
              return self.url(datum, **self.kwargs)
          try:
              if datum:
                  obj_id = self.table.get_object_id(datum)
                  return urls.reverse(self.url, args=(obj_id,))
              else:
                  return urls.reverse(self.url)
          except urls.NoReverseMatch as ex:
              LOG.info('No reverse found for "%(url)s": %(exception)s',
                       {'url': self.url, 'exception': ex})
              return self.url
docs: Returns the final URL based on the value of ``url``.
  
          If ``url`` is callable it will call the function.
          If not, it will then try to call ``reverse`` on ``url``.
          Failing that, it will simply return the value of ``url`` as-is.
  
          When called for a row action, the current row data object will be
          passed as the first parameter.