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)
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)
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)
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')
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)
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)
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')
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')
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')
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')
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()
def setUp(self): self.field = basic.alphanum(5, extended=True)
def setUp(self): self.field = basic.alphanum(480)
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')
def get_field(self, name=None, columns=None, values=None): field = basic.alphanum(columns, name, extended=False) return field
- 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
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
def get_field(self, name=None, columns=None, values=None): return basic.alphanum(columns, name, extended=True)
# 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
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')
# -*- 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')
""" 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
def setUp(self): self.field = basic.alphanum(5, compulsory=True)
# -*- 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')
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. """