text: """Filters used in parsing of CWR files.
  
  """
  
  from decimal import Decimal, ConversionSyntax, InvalidOperation
  
  from django import template
  
  from music_publisher import models
  from music_metadata.territories.territory import Territory
  
  register = template.Library()
  
  
  @register.filter(name='perc')
  def perc(value):
      """Display shares as human-readable string."""
      try:
          value = Decimal(value) / Decimal('100')
          return '{}%'.format(value)
      except (ConversionSyntax, InvalidOperation, TypeError):
          return 'Not convertible to percents.'
  
  
  @register.filter(name='soc_name')
  def soc_name(value):
      """Display society name"""
  
      value = value.strip().lstrip('0')
      return models.SOCIETY_DICT.get(value, '')
  
  
  @register.filter(name='capacity')
  def capacity(value):
      """Display writer capacity/role"""
  
      value = value[0:2]
      obj = models.WriterInWork(capacity=value)
      return obj.get_capacity_display()
  
  
  @register.filter(name='agreement_type')
  def agreement_type(value):
      """Display publishing agreement type"""
  
      value = value.strip()
      return {
          'OG': 'Original general',
          'OS': 'Original specific',
          'PG': 'Sub-Publishing general',
          'PS': 'Sub-Publishing specific',
      }.get(value, 'Unknown')
  
  
  @register.filter(name='status')
  def status(value):
      """Display acknowledgement status"""
  
      value = value.strip()
      obj = models.WorkAcknowledgement(status=value)
      return obj.get_status_display()
  
  
  @register.filter(name='flag')
  def flag(value):
      """Display flag value"""
  
      value = value.strip()
      return {
          'Y': 'Yes',
          'N': 'No',
          'U': 'Unknown',
      }.get(value, 'Not set')
  
  
  @register.filter(name='orimod')
  def orimod(value):
      """Display original or modification"""
  
      value = value.strip()
      return {
          'ORI': 'Original Work',
          'MOD': 'Modification',
      }.get(value, 'Not set')
  
  
  @register.filter(name='terr')
  def terr(value):
      """Display territory"""
  
      value = value.strip()
      territory = Territory.get(value)
      return str(territory)
  
  
  @register.filter(name='ie')
  def ie(value):
      """Display Included / Excluded"""
  
      value = value.strip()
      if value == 'E':
          return 'excluding '
      return ''
  
  
  @register.filter(name='role')
  def role(value):
      """Display publisher role/capacity"""
  
      return {
          'E ': 'Original Publisher',
          'AM': 'Administrator',
          'SE': 'Sub-publisher'
      }.get(value, 'Unknown publisher role')
  