Exemplo n.º 1
0
    def test_name_set_no_changes(self):
        """
        Tests that the field name does not change for creating a new one
        """
        field1 = basic.alphanum(5, name='field1')
        field2 = basic.alphanum(5, name='field2')

        self.assertEqual('field1', field1.name)
        self.assertEqual('field2', field2.name)
Exemplo n.º 2
0
    def test_name_set_no_changes(self):
        """
        Tests that the field name does not change for creating a new one
        """
        field1 = basic.alphanum(5, name='field1')
        field2 = basic.alphanum(5, name='field2')

        self.assertEqual('field1', field1.name)
        self.assertEqual('field2', field2.name)
Exemplo n.º 3
0
    def test_name_default_compulsory(self):
        """
        Tests that the default field name is correct for compulsory fields.
        """
        field = basic.alphanum(5, compulsory=True)

        self.assertEqual('Alphanumeric Field', field.name)
Exemplo n.º 4
0
    def test_name_default(self):
        """
        Tests that the default field name is correct for optional fields.
        """
        field = basic.alphanum(5)

        self.assertEqual('Alphanumeric Field', field.name)
Exemplo n.º 5
0
def audio_visual_key(name=None):
    """
    Creates the grammar for an Audio Visual Key code.

    This is a variation on the ISAN (International Standard Audiovisual Number)

    :param name: name for the field
    :return: grammar for an ISRC field
    """

    if name is None:
        name = 'AVI Field'

    society_code = basic.numeric(3)
    society_code = society_code.setName('Society Code') \
        .setResultsName('society_code')

    av_number = basic.alphanum(15)
    field_empty = pp.Regex('[ ]{15}')
    field_empty.setParseAction(pp.replaceWith(''))
    av_number = av_number | field_empty
    av_number = av_number.setName('Audio-Visual Number') \
        .setResultsName('av_number')

    field = pp.Group(society_code + av_number)

    field.setParseAction(lambda v: _to_avi(v[0]))

    field = field.setName(name)

    return field.setResultsName('audio_visual_key')
Exemplo n.º 6
0
    def test_name_default(self):
        """
        Tests that the default field name is correct for optional fields.
        """
        field = basic.alphanum(5)

        self.assertEqual('Alphanumeric Field', field.name)
Exemplo n.º 7
0
def audio_visual_key(name=None):
    """
    Creates the grammar for an Audio Visual Key code.

    This is a variation on the ISAN (International Standard Audiovisual Number)

    :param name: name for the field
    :return: grammar for an ISRC field
    """

    if name is None:
        name = 'AVI Field'

    society_code = basic.numeric(3)
    society_code = society_code.setName('Society Code') \
        .setResultsName('society_code')

    av_number = basic.alphanum(15)
    field_empty = pp.Regex('[ ]{15}')
    field_empty.setParseAction(pp.replaceWith(''))
    av_number = av_number | field_empty
    av_number = av_number.setName('Audio-Visual Number') \
        .setResultsName('av_number')

    field = pp.Group(society_code + av_number)

    field.setParseAction(lambda v: _to_avi(v[0]))

    field = field.setName(name)

    return field.setResultsName('audio_visual_key')
Exemplo n.º 8
0
    def test_name_set(self):
        """
        Tests that the given field name is set correctly for optional fields.
        """
        name = "Field Name"
        field = basic.alphanum(5, name=name)

        self.assertEqual(name, field.name)
Exemplo n.º 9
0
    def test_name_set(self):
        """
        Tests that the given field name is set correctly for optional fields.
        """
        name = "Field Name"
        field = basic.alphanum(5, name=name)

        self.assertEqual(name, field.name)
Exemplo n.º 10
0
    def test_name_set_compulsory(self):
        """
        Tests that the given field name is set correctly for compulsory fields.
        """
        name = "Field Name"
        field = basic.alphanum(5, name=name, compulsory=True)

        self.assertEqual(name, field.name)
Exemplo n.º 11
0
def isrc(name=None, compulsory=False):
    """
    Creates the grammar for an ISRC code.

    ISRC stands for International Standard Recording Code, which is the standard ISO 3901. This stores information
    identifying a particular recording.

    :param name: name for the field
    :param compulsory: indicates if the empty string is disallowed
    :return: grammar for an ISRC field
    """

    if name is None:
        name = 'ISRC Field'

    separator = pp.Literal('-')
    country = basic.alphanum(2)
    registrant = basic.alphanum(3)
    year = pp.Regex('[0-9]{2}')
    work_id = pp.Regex('[0-9]{2}')

    field = pp.Combine(country + separator + registrant + separator + year + separator + work_id)

    field.setName(name)

    if not compulsory:
        # If it is not compulsory then it can be set as empty
        empty = pp.Regex('[ ]{12}')
        empty.setParseAction(pp.replaceWith(None))
        empty.setName(name)
        empty.leaveWhitespace()

        field = empty | field
        # Name
        field.setName(name)

    # TODO: Fix this field
    field = basic.alphanum(12, compulsory=compulsory)
    field = field.setName(name)

    return field.setResultsName('isrc')
Exemplo n.º 12
0
def ip_n(name=None, compulsory=False):
    """
    IP Number field.

    On the CWR standard an Interested Party can have an alphanumeric ID of up to 9 digits.

    :param name: name for the field
    :param compulsory: indicates if empty strings are disallowed
    :return: a parser for the IP Number field
    """

    if name is None:
        name = 'Interested Party Number Field'

    field = basic.alphanum(_config.field_size('special', 'ip_n'), compulsory=compulsory)
    field.setName(name)

    return field.setResultsName('ip_n')
Exemplo n.º 13
0
def _isrc_short(name=None):
    """
    Creates the grammar for a short ISRC code.

    ISRC stands for International Standard Recording Code, which is the
    standard ISO 3901. This stores information identifying a particular
    recording.

    This variant contains separator for the parts, and follows the pattern:
    CC-XXX-YY-NN

    Where each code means:
    - CC: country code
    - XXX: registrant
    - YY: year
    - NN: work id

    :param name: name for the field
    :return: grammar for an ISRC field
    """

    config = CWRTables()

    if name is None:
        name = 'ISRC Field'

    separator = pp.Literal('-')
    country = basic.lookup(config.get_data('isrc_country_code'))
    registrant = basic.alphanum(3)
    year = pp.Regex('[0-9]{2}')
    work_id = pp.Regex('[0-9]{2}')

    field = pp.Combine(country + separator + registrant + separator + year +
                       separator + work_id)

    country.setName('ISO-2 Country Code')
    registrant.setName('Registrant')
    year.setName('Year')
    work_id.setName('Work ID')

    field.setName(name)

    return field.setResultsName('isrc')
Exemplo n.º 14
0
def audio_visual_key(name=None, compulsory=False):
    """
    Creates the grammar for an Audio Visual Key code.

    This is a variation on the ISAN (International Standard Audiovisual Number)

    :param name: name for the field
    :param compulsory: indicates if the empty string is disallowed
    :return: grammar for an ISRC field
    """

    if name is None:
        name = 'AVI Field'

    society_code = basic.numeric(3)
    society_code = society_code.setName('Society Code').setResultsName('society_code')

    av_number = basic.alphanum(15)
    av_number = av_number.setName('Audio-Visual Number').setResultsName('av_number')

    field = pp.Group(society_code + av_number)

    field.setParseAction(lambda v: _to_avi(v[0]))

    field = field.setName(name)

    if not compulsory:
        # If it is not compulsory then it can be set as empty
        empty = pp.Regex('[ ]{18}')
        empty.setParseAction(pp.replaceWith(None))
        empty.setName(name)

        field = empty | field
        # Name
        field.setName(name)

    return field.setResultsName('audio_visual_key')
Exemplo n.º 15
0
batch_request_id = basic.numeric(_config.field_size('group_header', 'batch_request_id'))
batch_request_id = batch_request_id.setName('Batch Request ID').setResultsName('batch_request_id')

"""
Unused fields.

These are fields which exist in the standard but are unused and ignored.

They are:
- SD Type
- Currency Indicator
- Total Monetary Value
"""

# SD Type
sd_type = basic.alphanum(_config.field_size('group_header', 'sd_type'))
sd_type = sd_type.setName('SD Type').setResultsName('sd_type')
sd_type.leaveWhitespace()

# Currency Indicator
currency_indicator = pp.Word(pp.alphanums + ' ',
                             exact=_config.field_size('group_trailer', 'currency_indicator'))
currency_indicator = currency_indicator.setName('Currency Indicator').setResultsName('currency_indicator')
currency_indicator.leaveWhitespace()

# Total Monetary Value
total_monetary_value = pp.Word(pp.alphanums + ' ',
                               exact=_config.field_size('group_trailer', 'total_monetary_value'))
total_monetary_value = total_monetary_value.setName('Total Monetary Value').setResultsName('total_monetary_value')
total_monetary_value.leaveWhitespace()
Exemplo n.º 16
0
 def setUp(self):
     self.field = basic.alphanum(5, extended=True)
Exemplo n.º 17
0
 def setUp(self):
     self.field = basic.alphanum(480)
Exemplo n.º 18
0
CWR Message record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

# Publisher Sequence #
publisher_sequence_n = basic.numeric(_config.field_size('publisher', 'sequence_n'), compulsory=True)
publisher_sequence_n = publisher_sequence_n.setName('Publisher Sequence #').setResultsName('publisher_sequence_n')

# Publisher name
name = basic.alphanum(_config.field_size('publisher', 'name'))
name = name.setName('Publisher name').setResultsName('name')

# Publisher Unknown Indicator
unknown = basic.flag()
unknown = unknown.setName('Publisher Unknown Indicator').setResultsName('publisher_unknown')

# Tax ID #
tax_id = basic.numeric(_config.field_size('publisher', 'tax_id'))
tax_id = tax_id.setName('Tax ID #').setResultsName('tax_id')

# Submitter Agreement Number
submitter_agreement_n = basic.alphanum(_config.field_size('publisher', 'submitter_agreement_id'))
submitter_agreement_n = submitter_agreement_n.setName('Submitter Agreement Number').setResultsName(
    'submitter_agreement_id')
Exemplo n.º 19
0
 def get_field(self, name=None, columns=None, values=None):
     field = basic.alphanum(columns, name, extended=False)
     return field
Exemplo n.º 20
0
- Sender Type. Alphanumeric.
- Sender ID. Alphanumeric.
- Sender Name. Alphanumeric.
- EDI Version. Must be a predefined string.
- Creation Date. Date.
- Creation Time. Time.
- Transmission Date. Date.
- Character Set. Alphanumeric.
"""

# Sender ID
sender_id = basic.numeric(_config.field_size('transmission_header', 'sender_id'), compulsory=True)
sender_id = sender_id.setName('Sender ID').setResultsName('sender_id')

# Sender Name
sender_name = basic.alphanum(_config.field_size('transmission_header', 'sender_name'), compulsory=True)
sender_name = sender_name.setName('Sender Name').setResultsName('sender_name')

# EDI Version
edi_version = pp.Literal(_config.field_value('transmission_header', 'edi_version'))
edi_version = edi_version.setName('EDI Version').setResultsName('edi_version')

# Creation Date
creation_date = basic.date(compulsory=True)
creation_date = creation_date.setName('Creation Date').setResultsName('creation_date')

# Creation Time
creation_time = basic.time()
creation_time = creation_time.setName('Creation Time').setResultsName('creation_time')

# Transmission Date
Exemplo n.º 21
0
from cwr.grammar.field import special, basic


"""
CWR Work record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

# Work Title
work_title = basic.alphanum(_config.field_size('work', 'work_title'), compulsory=True)
work_title = work_title.setName('Work Title').setResultsName('title')

# Submitter Work Number
submitter_work_n = basic.alphanum(_config.field_size('work', 'work_id'), compulsory=True)
submitter_work_n = submitter_work_n.setName('Submitter Work Number').setResultsName('submitter_work_n')

# ISWC
iswc = special.iswc()
iswc = iswc.setResultsName('iswc')

# Copyright Date
copyright_date = basic.date()
copyright_date = copyright_date.setName('Copyright Date').setResultsName('copyright_date')

# Copyright Number
Exemplo n.º 22
0
 def setUp(self):
     self.field = basic.alphanum(5, extended=True)
Exemplo n.º 23
0
 def get_field(self, name=None, columns=None, values=None):
     return basic.alphanum(columns, name, extended=True)
Exemplo n.º 24
0
# Creation Time
creation_time = basic.time(compulsory=True)
creation_time = creation_time.setName('Creation Time').setResultsName('creation_time')

# Original Group ID
original_group_id = group.group_id
original_group_id = original_group_id.setName('Original Group ID')

# Original Transaction Sequence #
original_transaction_sequence_n = basic.numeric(_config.field_size('acknowledgement', 'transaction_n'), compulsory=True)
original_transaction_sequence_n = original_transaction_sequence_n.setName(
    'Original Transaction Sequence #').setResultsName(
    'original_transaction_sequence_n')

# Creation Title
creation_title = basic.alphanum(_config.field_size('acknowledgement', 'title'))
creation_title = creation_title.setName('Creation Title').setResultsName('creation_title')

# Submitter Creation #
submitter_creation_n = basic.alphanum(_config.field_size('acknowledgement', 'submitter_id'))
submitter_creation_n = submitter_creation_n.setName('Submitter Creation #').setResultsName('submitter_creation_n')

# Recipient Creation #
recipient_creation_n = basic.alphanum(_config.field_size('acknowledgement', 'recipient_id'))
recipient_creation_n = recipient_creation_n.setName('Recipient Creation #').setResultsName('recipient_creation_n')

# Processing Date
processing_date = basic.date(compulsory=True)
processing_date = processing_date.setName('Processing Date').setResultsName('processing_date')

# Creation date and time pattern
Exemplo n.º 25
0
 def get_field(self, name=None, columns=None, values=None):
     field = basic.alphanum(columns, name, extended=False)
     return field
Exemplo n.º 26
0
from data.accessor import CWRConfiguration
from cwr.grammar.field import table, record, basic


"""
CWR Message record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

# Validation Number
validation = basic.numeric(_config.field_size('message', 'validation'))
validation = validation.setName('Validation Number').setResultsName('validation')

# Message Record Type
record_message = table.record_types()
record_message = record_message.setName('Message Record Type').setResultsName('message_record_type')

# Message Text
message_text = basic.alphanum(_config.field_size('message', 'text'))
message_text = message_text.setName('Message Text').setResultsName('message_text')

# Original Record Sequence #
sequence_n = record.record_seq_n(compulsory=True)
sequence_n = sequence_n.setName('Original Record Sequence #').setResultsName('sequence_n')
Exemplo n.º 27
0
# -*- coding: utf-8 -*-

from data.accessor import CWRConfiguration
from cwr.grammar.field import special, basic


"""
CWR Message record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

# Publisher IP #
publisher_ip_number = special.ip_n()
publisher_ip_number = publisher_ip_number.setName('Publisher IP #').setResultsName('publisher_ip_number')

# Publisher Name
publisher_name = basic.alphanum(_config.field_size('writer_publisher', 'publisher_name'))
publisher_name = publisher_name.setName('Publisher Name').setResultsName('publisher_name')

# Writer IP #
writer_ip_n = special.ip_n()
writer_ip_n = writer_ip_n.setName('Writer IP #').setResultsName('writer_ip_n')
Exemplo n.º 28
0

"""
CWR Message record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()


# Writer Last Name
writer_last_name = basic.alphanum(_config.field_size('writer', 'last_name'))
writer_last_name = writer_last_name.setName('Writer Last Name').setResultsName('writer_last_name')

# Writer First Name
writer_first_name = basic.alphanum(_config.field_size('writer', 'first_name'))
writer_first_name = writer_first_name.setName('Writer First Name').setResultsName('writer_first_name')

# Writer Unknown Indicator
unknown = basic.flag()
unknown = unknown.setName('Writer Unknown Indicator').setResultsName('writer_unknown')

# Reversionary Indicator
reversionary = basic.flag()
reversionary = reversionary.setName('Reversionary Indicator').setResultsName('reversionary')

# First Recording Refusal Indicator
Exemplo n.º 29
0
 def setUp(self):
     self.field = basic.alphanum(5, compulsory=True)
Exemplo n.º 30
0
# -*- coding: utf-8 -*-

from data.accessor import CWRConfiguration
from cwr.grammar.field import basic


"""
CWR Message record fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

# Interested Party Last Name
ip_last_name = basic.alphanum(_config.field_size('ipa', 'ip_last_name'), compulsory=True)
ip_last_name = ip_last_name.setName('Interested Party Last Name').setResultsName('ip_last_name')

# Interested Party Writer First Name
ip_writer_first_name = basic.alphanum(_config.field_size('ipa', 'ip_name'))
ip_writer_first_name = ip_writer_first_name.setName('Interested Party Writer First Name').setResultsName(
    'ip_writer_first_name')
Exemplo n.º 31
0
 def setUp(self):
     self.field = basic.alphanum(480)
Exemplo n.º 32
0
CWR Work detail records fields grammar.
"""

__author__ = 'Bernardo Martínez Garrido'
__license__ = 'MIT'
__status__ = 'Development'

# Acquires data sources
_config = CWRConfiguration()

"""
ALT fields.
"""

# Alternate Title
alternate_title = basic.alphanum(_config.field_size('alternate_title', 'alternate_title'), extended=True)
alternate_title = alternate_title.setName('Alternate Title').setResultsName(
    'title')

"""
EWT fields.
"""

# Entire Work Title
entire_work_title = basic.alphanum(_config.field_size('entire_work_title', 'entire_work_title'))
entire_work_title = entire_work_title.setName('Entire Work Title').setResultsName(
    'title')

"""
VER fields.
"""
Exemplo n.º 33
0
 def get_field(self, name=None, columns=None, values=None):
     return basic.alphanum(columns, name, extended=True)