def parse_madrid_international_filing_record():
     dbc = Db()
     mifr_elements = case.findall('madrid-international-filing-requests/madrid-international-filing-record')
     for child in mifr_elements:
         madrid_international_filing_record = {'serial_number': doc_id}
         madrid_international_filing_record_items = (
             'entry_number', 'reference_number', 'original_filing_date_uspto',
             'international_registration_number',
             'international_registration_date', 'international_status_code',
             'international_status_date', 'irregularity_reply_by_date', 'international_renewal_date')
         for hitem in madrid_international_filing_record_items:
             search_term = hitem.replace('_', '-') + '/text()'
             madrid_international_filing_record[hitem] = get_text_or_none(child, search_term)
         mifr_id = dbc.insert_dict(madrid_international_filing_record,
                                   'trademark_app_madrid_international_filing_record')
         mhe_elements = child.findall('madrid-history-events/madrid-history-event')
         lst = []
         for subchild in mhe_elements:
             madrid_history_events = {'serial_number': doc_id,
                                      'madrid_international_filing_record_id': mifr_id}
             madrid_history_events_items = (
                 'code', 'date', 'description_text', 'entry_number')
             for hitem in madrid_history_events_items:
                 search_term = hitem.replace('_', '-') + '/text()'
                 madrid_history_events[hitem] = get_text_or_none(subchild, search_term)
             lst.append(madrid_history_events)
         result = dbc.insert_listdict(lst, 'trademark_app_madrid_history_events')
 def parse_design_searches():
     dbc = Db()
     cfds_elements = case.findall('design-searches/design-search')
     lst = []
     for child in cfds_elements:
         case_file_design_searches = {'serial_number': doc_id,
                                      'code': get_text_or_none(child, 'code/text()')}
         lst.append(case_file_design_searches)
     result = dbc.insert_listdict(lst, 'trademark_app_design_searches')
 def parse_statements():
     dbc = Db()
     cfs_elements = case.findall('case-file-statements/case-file-statement')
     lst = []
     for child in cfs_elements:
         case_file_statements = {'serial_number': doc_id,
                                 'type_code': get_text_or_none(child, 'type-code/text()'),
                                 'text': get_text_or_none(child, 'text/text()')}
         lst.append(case_file_statements)
     result = dbc.insert_listdict(lst, 'trademark_app_case_file_statements')
 def parse_prior_registration_applications():
     dbc = Db()
     pra_elements = case.findall('prior-registration-applications/prior-registration-application')
     other_related_in = get_text_or_none(case, 'prior-registration-applications/other-related-in/text()')
     lst = []
     for child in pra_elements:
         prior_registration_applications = {'serial_number': doc_id,
                                            'other_related_in': other_related_in,
                                            'relationship_type': get_text_or_none(child,
                                                                                  'relationship-type/text()'),
                                            'number': get_text_or_none(child, 'number/text()')}
         lst.append(prior_registration_applications)
     result = dbc.insert_listdict(lst, 'trademark_app_prior_registration_applications')
 def parse_correspondents():
     dbc = Db()
     correspondent_elements = case.findall('correspondent')
     lst = []
     for child in correspondent_elements:
         case_file_correspondent = {'serial_number': doc_id}
         case_file_correspondent_items = (
             'address_1', 'address_2', 'address_3', 'address_4', 'address_5')
         for hitem in case_file_correspondent_items:
             search_term = hitem.replace('_', '-') + '/text()'
             case_file_correspondent[hitem] = get_text_or_none(child, search_term)
         lst.append(case_file_correspondent)
     result = dbc.insert_listdict(lst, 'trademark_app_correspondents')
 def parse_foreign_applications():
     dbc = Db()
     fa_elements = case.findall('foreign-applications/foreign-application')
     lst = []
     for child in fa_elements:
         foreign_applications = {'serial_number': doc_id}
         foreign_applications_items = (
             'filing_date', 'registration_date', 'registration_expiration_date', 'registration_renewal_date',
             'registration_renewal_expiration_date', 'entry_number', 'application_number', 'country',
             'other', 'registration_number', 'renewal_number', 'foreign_priority_claim_in')
         for hitem in foreign_applications_items:
             search_term = hitem.replace('_', '-') + '/text()'
             foreign_applications[hitem] = get_text_or_none(child, search_term)
         lst.append(foreign_applications)
     result = dbc.insert_listdict(lst, 'trademark_app_foreign_applications')
 def parse_international_registration():
     dbc = Db()
     cfir_elements = case.findall('international-registration')
     lst = []
     for child in cfir_elements:
         case_file_international_registration = {'serial_number': doc_id}
         case_file_international_registration_items = (
             'international_registration_number', 'international_registration_date',
             'international_publication_date', 'international_renewal_date', 'auto_protection_date',
             'international_death_date', 'international_status_code', 'international_status_date',
             'priority_claimed_in', 'priority_claimed_date', 'first_refusal_in')
         for hitem in case_file_international_registration_items:
             search_term = hitem.replace('_', '-') + '/text()'
             case_file_international_registration[hitem] = get_text_or_none(child, search_term)
         lst.append(case_file_international_registration)
     result = dbc.insert_listdict(lst, 'trademark_app_international_registration')
 def parse_owners():
     dbc = Db()
     cfo_elements = case.findall('case-file-owners/case-file-owner')
     lst = []
     for child in cfo_elements:
         case_file_owners = {'serial_number': doc_id}
         case_file_owners_items = (
             'entry_number', 'party_type', 'legal_entity_type_code', 'entity_statement', 'party_name',
             'address_1', 'address_2', 'city', 'state', 'country', 'other', 'postcode', 'dba_aka_text',
             'composed_of_statement', 'name_change_explanation')
         for hitem in case_file_owners_items:
             search_term = hitem.replace('_', '-') + '/text()'
             case_file_owners[hitem] = get_text_or_none(child, search_term)
         case_file_owners['nationality'] = get_text_or_none(child, 'nationality/country/text()')
         lst.append(case_file_owners)
     result = dbc.insert_listdict(lst, 'trademark_app_case_file_owners')
 def parse_classifications():
     dbc = Db()
     classification_elements = case.findall('classifications/classification')
     for child in classification_elements:
         classifications = {'serial_number': doc_id}
         classifications_items = (
             'international_code_total_no', 'us_code_total_no', 'international_code', 'status_code',
             'status_date', 'first_use_anywhere_date', 'first_use_in_commerce_date', 'primary_code')
         for hitem in classifications_items:
             search_term = hitem.replace('_', '-') + '/text()'
             classifications[hitem] = get_text_or_none(child, search_term)
         classification_id = dbc.insert_dict(classifications, 'trademark_app_classifications')
         code_elements = child.findall('us-code')
         lst = []
         for subchild in code_elements:
             case_file_us_codes = {'serial_number': doc_id,
                                   'classification_id': classification_id,
                                   'us_code': subchild.text}
             lst.append(case_file_us_codes)
         result = dbc.insert_listdict(lst, 'trademark_app_us_codes')