wipo-gbd-transformation 1.1.47__py3-none-any.whl → 1.1.59__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wipo-gbd-transformation might be problematic. Click here for more details.

Files changed (138) hide show
  1. gbdtransformation/brands/attm/template.yml +1 -2
  2. gbdtransformation/brands/bgtm/template.yml +1 -1
  3. gbdtransformation/brands/catm/filters.py +2 -1
  4. gbdtransformation/brands/catm/template.yml +10 -6
  5. gbdtransformation/brands/chtm/filters.py +159 -181
  6. gbdtransformation/brands/chtm/schema +79 -91
  7. gbdtransformation/brands/chtm/template.yml +97 -106
  8. gbdtransformation/brands/eetm/template.yml +1 -1
  9. gbdtransformation/brands/emtm/template.yml +1 -1
  10. gbdtransformation/brands/estm/template.yml +1 -1
  11. gbdtransformation/brands/frtm/template.yml +1 -1
  12. gbdtransformation/brands/gdtm/__init__.py +5 -0
  13. gbdtransformation/brands/gdtm/filters.py +61 -0
  14. gbdtransformation/brands/gdtm/schema +87 -0
  15. gbdtransformation/brands/gdtm/template.yml +1 -0
  16. gbdtransformation/brands/gdtm/tests/__init__.py +0 -0
  17. gbdtransformation/brands/istm/filters.py +21 -14
  18. gbdtransformation/brands/istm/template.yml +1 -1
  19. gbdtransformation/brands/krtm/template.yml +1 -1
  20. gbdtransformation/brands/lktm/__init__.py +5 -0
  21. gbdtransformation/brands/lktm/filters.py +83 -0
  22. gbdtransformation/brands/lktm/schema +87 -0
  23. gbdtransformation/brands/lktm/template.yml +1 -0
  24. gbdtransformation/brands/lktm/tests/__init__.py +0 -0
  25. gbdtransformation/brands/natm/__init__.py +2 -3
  26. gbdtransformation/brands/natm/filters.py +8 -2
  27. gbdtransformation/brands/notm/__init__.py +5 -0
  28. gbdtransformation/brands/notm/filters.py +113 -0
  29. gbdtransformation/brands/notm/template.yml +152 -0
  30. gbdtransformation/brands/nztm/template.yml +1 -1
  31. gbdtransformation/brands/phtm/schema +79 -50
  32. gbdtransformation/brands/phtm/schema.classic +50 -0
  33. gbdtransformation/brands/phtm/template.classic.yml +102 -0
  34. gbdtransformation/brands/phtm/template.yml +1 -102
  35. gbdtransformation/brands/qatm/__init__.py +5 -0
  36. gbdtransformation/brands/qatm/filters.py +81 -0
  37. gbdtransformation/brands/qatm/schema +87 -0
  38. gbdtransformation/brands/qatm/template.yml +1 -0
  39. gbdtransformation/brands/qatm/tests/__init__.py +0 -0
  40. gbdtransformation/brands/sgtm/filters.py +1 -1
  41. gbdtransformation/brands/sgtm/template.trademark.yml +2 -2
  42. gbdtransformation/brands/ustm/template.yml +1 -1
  43. gbdtransformation/brands/vctm/__init__.py +5 -0
  44. gbdtransformation/brands/vctm/filters.py +75 -0
  45. gbdtransformation/brands/vctm/schema +87 -0
  46. gbdtransformation/brands/vctm/template.yml +1 -0
  47. gbdtransformation/brands/vctm/tests/__init__.py +0 -0
  48. gbdtransformation/brands/vntm/filters.py +1 -3
  49. gbdtransformation/brands/xxxx/template.yml +1 -1
  50. gbdtransformation/designs/__init__.py +8 -0
  51. gbdtransformation/designs/alid/__init__.py +1 -1
  52. gbdtransformation/designs/alid/filters.py +14 -1
  53. gbdtransformation/designs/bnid/__init__.py +5 -0
  54. gbdtransformation/designs/bnid/filters.py +61 -0
  55. gbdtransformation/designs/bnid/schema +80 -0
  56. gbdtransformation/designs/bnid/template.yml +1 -0
  57. gbdtransformation/designs/bwid/__init__.py +6 -0
  58. gbdtransformation/designs/bwid/filters.py +64 -0
  59. gbdtransformation/designs/bwid/schema +101 -0
  60. gbdtransformation/designs/bwid/template.yml +1 -0
  61. gbdtransformation/designs/crid/__init__.py +5 -0
  62. gbdtransformation/designs/crid/filters.py +63 -0
  63. gbdtransformation/designs/crid/schema +94 -0
  64. gbdtransformation/designs/crid/template.yml +1 -0
  65. gbdtransformation/designs/cuid/__init__.py +5 -0
  66. gbdtransformation/designs/cuid/filters.py +60 -0
  67. gbdtransformation/designs/cuid/schema +98 -0
  68. gbdtransformation/designs/cuid/template.yml +1 -0
  69. gbdtransformation/designs/egid/__init__.py +5 -0
  70. gbdtransformation/designs/egid/filters.py +62 -0
  71. gbdtransformation/designs/egid/schema +82 -0
  72. gbdtransformation/designs/egid/template.yml +1 -0
  73. gbdtransformation/designs/filters.py +73 -0
  74. gbdtransformation/designs/idid/__init__.py +5 -0
  75. gbdtransformation/designs/idid/filters.py +67 -0
  76. gbdtransformation/designs/idid/schema +102 -0
  77. gbdtransformation/designs/idid/template.yml +1 -0
  78. gbdtransformation/designs/ipas/filters.py +84 -2
  79. gbdtransformation/designs/ipas/template.yml +90 -79
  80. gbdtransformation/designs/joid/__init__.py +6 -0
  81. gbdtransformation/designs/joid/filters.py +62 -0
  82. gbdtransformation/designs/joid/schema +97 -0
  83. gbdtransformation/designs/joid/template.yml +1 -0
  84. gbdtransformation/designs/keid/__init__.py +5 -0
  85. gbdtransformation/designs/keid/filters.py +62 -0
  86. gbdtransformation/designs/keid/schema +99 -0
  87. gbdtransformation/designs/keid/template.yml +1 -0
  88. gbdtransformation/designs/khid/__init__.py +5 -0
  89. gbdtransformation/designs/khid/filters.py +63 -0
  90. gbdtransformation/designs/khid/schema +100 -0
  91. gbdtransformation/designs/khid/template.yml +1 -0
  92. gbdtransformation/designs/laid/__init__.py +5 -0
  93. gbdtransformation/designs/laid/filters.py +61 -0
  94. gbdtransformation/designs/laid/schema +94 -0
  95. gbdtransformation/designs/laid/template.yml +1 -0
  96. gbdtransformation/designs/mnid/__init__.py +6 -0
  97. gbdtransformation/designs/mnid/filters.py +62 -0
  98. gbdtransformation/designs/mnid/schema +98 -0
  99. gbdtransformation/designs/mnid/template.yml +1 -0
  100. gbdtransformation/designs/myid/__init__.py +5 -0
  101. gbdtransformation/designs/myid/filters.py +60 -0
  102. gbdtransformation/designs/myid/schema +95 -0
  103. gbdtransformation/designs/myid/template.yml +1 -0
  104. gbdtransformation/designs/phid/__init__.py +5 -0
  105. gbdtransformation/designs/phid/filters.py +70 -0
  106. gbdtransformation/designs/phid/schema +95 -0
  107. gbdtransformation/designs/phid/template.yml +1 -0
  108. gbdtransformation/designs/sgid/__init__.py +6 -0
  109. gbdtransformation/designs/sgid/filters.py +66 -0
  110. gbdtransformation/designs/sgid/schema +115 -0
  111. gbdtransformation/designs/sgid/template.yml +1 -0
  112. gbdtransformation/designs/thid/__init__.py +4 -0
  113. gbdtransformation/designs/thid/filters.py +64 -0
  114. gbdtransformation/designs/thid/schema +98 -0
  115. gbdtransformation/designs/thid/template.yml +1 -0
  116. gbdtransformation/designs/tnid/__init__.py +5 -0
  117. gbdtransformation/designs/tnid/filters.py +66 -0
  118. gbdtransformation/designs/tnid/schema +96 -0
  119. gbdtransformation/designs/tnid/template.yml +1 -0
  120. gbdtransformation/designs/vnid/__init__.py +5 -0
  121. gbdtransformation/designs/vnid/filters.py +62 -0
  122. gbdtransformation/designs/vnid/schema +97 -0
  123. gbdtransformation/designs/vnid/template.yml +1 -0
  124. gbdtransformation/designs/woid/__init__.py +2 -0
  125. gbdtransformation/designs/woid/filters.py +372 -0
  126. gbdtransformation/designs/woid/schema +592 -0
  127. gbdtransformation/designs/woid/template.yml +516 -0
  128. gbdtransformation/designs/xxid/template.yml +331 -119
  129. gbdtransformation/execs-nico.py +709 -0
  130. gbdtransformation/execs.py +55 -4
  131. gbdtransformation/gbd-transform.exec.tgz +0 -0
  132. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/METADATA +4 -1
  133. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/RECORD +138 -38
  134. wipo_gbd_transformation-1.1.59.dist-info/SOURCES_Stefans-Mac-Studio.local_Sep-18-063455-2024_Conflict.txt +690 -0
  135. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/entry_points.txt +1 -0
  136. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/LICENSE.md +0 -0
  137. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/WHEEL +0 -0
  138. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,87 @@
1
+ /Transaction
2
+ __/TradeMarkTransactionBody
3
+ ____/TransactionContentDetails
4
+ ______/TransactionCode
5
+ ______/TransactionData
6
+ ________/TradeMarkApplication
7
+ __________/TradeMarkDetails
8
+ ____________/TradeMark
9
+ ______________/ApplicantDetails
10
+ ________________/Applicant
11
+ __________________/ApplicantAddressBook
12
+ ____________________/FormattedNameAddress
13
+ ______________________/Address
14
+ ________________________/AddressCountryCode
15
+ ________________________/FreeFormatAddress
16
+ __________________________/FreeFormatAddressLine
17
+ ______________________/Name
18
+ ________________________/FreeFormatName
19
+ __________________________/FreeFormatNameDetails
20
+ ____________________________/FreeFormatNameLine
21
+ ____________________________/FreeFormatNameLine[@languageCode=en]
22
+ ______________/ApplicationDate
23
+ ______________/ApplicationLanguageCode
24
+ ______________/ApplicationNumber
25
+ ______________/ExpiryDate
26
+ ______________/GoodsServicesDetails
27
+ ________________/GoodsServices
28
+ __________________/ClassDescriptionDetails
29
+ ____________________/ClassDescription
30
+ ______________________/ClassNumber
31
+ ______________________/GoodsServicesDescription
32
+ ______________________/GoodsServicesDescription[@languageCode=en]
33
+ ______________/KindMark
34
+ ______________/MarkCurrentStatusCode
35
+ ______________/MarkCurrentStatusDate
36
+ ______________/MarkDisclaimerDetails
37
+ ________________/MarkDisclaimer
38
+ ________________/MarkDisclaimer[@languageCode=en]
39
+ ______________/MarkEventDetails
40
+ ________________/MarkEvent
41
+ __________________/MarkEventCode
42
+ __________________/MarkEventDate
43
+ __________________/OfficeSpecificMarkEventCode
44
+ __________________/OfficeSpecificMarkEventDescription
45
+ __________________/OfficeSpecificMarkEventDescription[@languageCode=en]
46
+ ______________/MarkFeature
47
+ ______________/MarkImageDetails
48
+ ________________/MarkImage
49
+ __________________/MarkImageCategory
50
+ ____________________/CategoryCodeDetails
51
+ ______________________/CategoryCode
52
+ ____________________/CategoryKind
53
+ ____________________/CategoryVersion
54
+ __________________/MarkImageColourClaimedText
55
+ __________________/MarkImageColourClaimedText[@languageCode=en]
56
+ __________________/MarkImageFileFormat
57
+ __________________/MarkImageFilename
58
+ ______________/PriorityDetails
59
+ ________________/Priority
60
+ __________________/PriorityCountryCode
61
+ __________________/PriorityDate
62
+ __________________/PriorityNumber
63
+ ______________/PublicationDetails
64
+ ________________/Publication
65
+ __________________/PublicationDate
66
+ __________________/PublicationIdentifier
67
+ ______________/RegistrationDate
68
+ ______________/RegistrationNumber
69
+ ______________/RegistrationOfficeCode
70
+ ______________/RepresentativeDetails
71
+ ________________/Representative
72
+ __________________/RepresentativeAddressBook
73
+ ____________________/FormattedNameAddress
74
+ ______________________/Address
75
+ ________________________/AddressCountryCode
76
+ ________________________/FreeFormatAddress
77
+ __________________________/FreeFormatAddressLine
78
+ ______________________/Name
79
+ ________________________/FreeFormatName
80
+ __________________________/FreeFormatNameDetails
81
+ ____________________________/FreeFormatNameLine
82
+ ____________________________/FreeFormatNameLine[@languageCode=en]
83
+ ______________/WordMarkSpecification
84
+ ________________/MarkVerbalElementText
85
+ ________________/MarkVerbalElementText[@languageCode=en]
86
+ ______/TransactionIdentifier
87
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
File without changes
@@ -6,7 +6,6 @@ source = 'national'
6
6
  # NA/T/197/593
7
7
  # AP/M/2006/413
8
8
  # A/D/1/825028
9
- appnum_mask = [ '[A-Z]{2}/([A-Z])/\\d{4}/(\\d*)',
10
- '[A-Z]{2}/([A-Z])/\\d{3}/(\\d*)',
11
- '([A-Z])/D/1/(\\d*)' ]
9
+ appnum_mask = [ '([A-Z]{2})/([A-Z])/\\d*/(\\d*)',
10
+ '([A-Z])/[A-Z]/1/(\\d*)' ]
12
11
 
@@ -11,27 +11,33 @@ def translate_type(header):
11
11
  code = header.TransactionCode
12
12
 
13
13
  # extraction missing info.
14
- if code == 'Do Not Use':
14
+ if 'do not use' in code.lower():
15
15
  raise Exception('Code "%s" encountered. Skipping.' % code)
16
16
 
17
17
  if code == 'National Trademarks': return 'TRADEMARK'
18
+ if code == 'National Marks Act 2012': return 'TRADEMARK'
18
19
  if code == 'Madrid Marks': return 'TRADEMARK'
19
20
  if code == 'Banjul Trademark': return 'TRADEMARK'
21
+ if code == 'Banjul Protocol Marks': return 'TRADEMARK'
20
22
  if code == 'DEFENSIVE MARK': return 'TRADEMARK'
23
+ if code == 'CERTIFICATION MARK': return 'TRADEMARK'
21
24
 
22
25
  raise Exception('Type "%s" is not mapped.' % code)
23
26
 
24
27
  def translate_kind(trademark, header):
25
28
  subcode = header.TransactionSubCode
26
29
 
30
+ if subcode == 'Trade Mark': return ['Individual']
27
31
  if subcode == 'PART A': return ['Individual']
28
32
  if subcode == 'PART B': return ['Individual']
29
33
  if subcode == 'Banjul Trademark': return ['Individual']
34
+ if subcode == 'Banjul Protocol Marks': return ['Individual']
30
35
  if subcode == 'Madrid Protocol': return ['Individual']
31
36
  if subcode == 'Madrid Agreement': return ['Individual']
32
37
  if subcode == 'DEFENSIVE MARK': return ['Defensive']
38
+ if subcode == 'CERTIFICATION MARK': return ['Collective']
33
39
 
34
- raise Exception('Kind "%s" not mapped.' % code)
40
+ raise Exception('Kind "%s" not mapped.' % subcode)
35
41
 
36
42
  def translate_status(trademark):
37
43
  status = trademark.MarkCurrentStatusCode
@@ -0,0 +1,5 @@
1
+ # instruction to render the output to JSON format
2
+ render = 'JSON'
3
+ source = 'national'
4
+
5
+
@@ -0,0 +1,113 @@
1
+ import re
2
+
3
+ def translate_kind(kind):
4
+ if not kind: return ['Individual']
5
+
6
+ if kind == 'Individual mark': return ['Individual']
7
+ if kind == 'Collective mark': return ['Collective']
8
+
9
+ raise Exception('kind "%s" is not mapped.' % kind)
10
+
11
+ def translate_status(status):
12
+ if not status: return 'Ended'
13
+
14
+ if status in ['Registered',
15
+ 'Granted']:
16
+ return 'Registered'
17
+
18
+ if status in ['Pending']:
19
+ return 'Pending'
20
+
21
+ if status in ['Refused',
22
+ 'Shelved',
23
+ 'Finally shelved',
24
+ 'Ceased',
25
+ 'Ceased/cancelled',
26
+ 'Withdrawn',
27
+ 'Rejected']:
28
+ return 'Ended'
29
+
30
+ return 'Unknown'
31
+ #raise Exception('Status "%s" unmapped' % status)
32
+
33
+ def translate_feature(feature):
34
+ """translation of mark feature"""
35
+ if not feature: return 'Undefined'
36
+ feature = feature.upper()
37
+ if feature == 'COMBINED/FIGURATIVE MARK': return 'Combined'
38
+ if feature == 'FIGURATIVE MARK': return 'Figurative'
39
+ if feature == 'WORD MARK': return 'Word'
40
+ if feature == '3D-MARK': return "Three dimensional"
41
+ if feature == '3D MARK': return "Three dimensional"
42
+ if feature == 'SOUND MARK': return 'Sound'
43
+ if feature == 'COLOR MARK': return 'Colour'
44
+ if feature == 'MOTION MARK': return 'Motion'
45
+ if feature == 'MULTIMEDIA MARK': return 'Multimedia'
46
+ if feature == 'POSITION MARK': return 'Position'
47
+ if feature == 'PATTERN MARK': return 'Pattern'
48
+ if feature == 'HOLOGRAM MARK': return 'Hologram'
49
+ if feature == 'TRACER MARK': return 'Tracer'
50
+ if feature == 'OLFACTORY MARK': return 'Olfactory'
51
+ if feature == 'OLFACTIVE MARK': return 'Olfactory'
52
+ if feature == 'STYLIZED CHARACTERS': return 'Stylized characters'
53
+ if feature == 'STYLIZED CHARACTERS MARK': return 'Stylized characters'
54
+
55
+ return 'Unknown'
56
+
57
+ # raise Exception to recognize unmapped values
58
+ #raise Exception('Feature "%s" unmapped' % feature)
59
+
60
+ def get_local_text(node):
61
+ if "$" in node:
62
+ return node["$"]
63
+
64
+ def get_local_texts(nodes):
65
+ text = ""
66
+ start = True
67
+ for node in nodes:
68
+ if "$" in node:
69
+ if start:
70
+ start = False
71
+ else:
72
+ text += ", "
73
+ text += node["$"]
74
+ return text
75
+
76
+ def get_full_address(postalStructuredAddress):
77
+ result = ""
78
+ if "addressLineText" in postalStructuredAddress:
79
+ for addressLineText in postalStructuredAddress["addressLineText"]:
80
+ # always empty, which is good
81
+ """
82
+ if hasattr(addressLineText, '__value'):
83
+ if len(result) > 0:
84
+ result += ", "
85
+ result += addressLineText.__value
86
+ """
87
+ if "cityName" in postalStructuredAddress:
88
+ if len(result) > 0:
89
+ result += ", "
90
+ result += postalStructuredAddress["cityName"]
91
+ if "countryCode" in postalStructuredAddress:
92
+ result += ", " + postalStructuredAddress["countryCode"]
93
+ if "postalCode" in postalStructuredAddress:
94
+ result += " " + postalStructuredAddress["postalCode"]
95
+ if len(result) == 0:
96
+ return
97
+ else:
98
+ return result.strip()
99
+
100
+ def local_guess_language(content):
101
+ if content == None:
102
+ return None
103
+ from lingua import Language, LanguageDetectorBuilder
104
+ detector = LanguageDetectorBuilder.from_all_spoken_languages().build()
105
+ language = detector.detect_language_of(content)
106
+ if language:
107
+ lang = language.iso_code_639_1.name.lower()
108
+ # we merge Norwegian flavors, Norwegian Bokmål and Norwegian Nynorsk
109
+ if lang == "nn" or lang =="nb":
110
+ lang = "no"
111
+ return lang
112
+ else:
113
+ return "en"
@@ -0,0 +1,152 @@
1
+ {% from 'navigation.tmpl' import match %}
2
+ {% from 'navigation.tmpl' import enumerate %}
3
+
4
+ {% call(trademark) match('trademark', trademarkBag) %}
5
+
6
+ {% call(applicationNumber) match('applicationNumber', trademark.trademarkTypeChoice1) %}
7
+ st13: {{ applicationNumber.applicationNumberText | st13('NO', appdate=trademark.trademarkTypeChoice2.applicationDate) }}
8
+ applicationNumber: {{ applicationNumber.applicationNumberText }}
9
+ {% endcall %}
10
+ applicationDate: {{ trademark.trademarkTypeChoice2.applicationDate | convertdate('%Y-%m-%d') }}
11
+
12
+ registrationNumber: {{ trademark.trademarkTypeChoice1.registrationNumber }}
13
+ registrationDate: {{ trademark.registrationDate }}
14
+
15
+ expiryDate: {{ trademark.expiryDate }}
16
+
17
+ {% set status = trademark.markCurrentStatusCode | translate_status %}
18
+ gbdStatus: {{ status }}
19
+ officeStatus: {{ trademark.markCurrentStatusCode }}
20
+ statusDate: {{ trademark.markCurrentStatusDate }}
21
+
22
+ registrationOfficeCode: "NO"
23
+ designatedCountries:
24
+ - "NO"
25
+
26
+ type: TRADEMARK
27
+
28
+ kind:
29
+ - Individual
30
+
31
+ markFeature: {{ trademark.markFeatureDescription | translate_feature() }}
32
+ # (Word|Stylized characters|Figurative|Combined|Three dimensional|Colour|Sound|Hologram|Olfactory|Motion|Municipal|Chimney|Other|Undefined)
33
+
34
+ kind:
35
+ - Individual
36
+ # (Individual|Collective|Certificate|Defensive|Other|Membership)
37
+
38
+ markDisclaimerDetails:
39
+ {% call(markDisclaimerText) match('markDisclaimerText', trademark.markDisclaimerBag) %}
40
+ - languageCode:
41
+ text: {{ markDisclaimerText | get_local_text() }}
42
+ {% endcall %}
43
+
44
+ markDescriptionDetails:
45
+ - languageCode:
46
+ text:
47
+
48
+ wordMarkSpecification:
49
+ markVerbalElement:
50
+ - languageCode:
51
+ text: {{ trademark.markRepresentation.markReproduction.wordMarkSpecification.markVerbalElementText | get_local_text() }}
52
+ markSignificantVerbalElement:
53
+ - languageCode:
54
+ text: {{ trademark.markRepresentation.markReproduction.wordMarkSpecification.markSignificantVerbalElementText | get_local_text() }}
55
+ markTranslation:
56
+ - languageCode:
57
+ text:
58
+ markTransliteration:
59
+
60
+ markImageDetails:
61
+ {% call(markImage) match('markImage', trademark.markRepresentation.markReproduction.markImageBag) %}
62
+ - name: {{ markImage.fileName }}
63
+ colourIndicator: {{ markImage.colourModeCategory }}
64
+ colourClaimed:
65
+ - languageCode:
66
+ text:
67
+ description:
68
+ {% call(markDescriptionText) match('markDescriptionText', trademark.markRepresentation.markDescriptionBag.markDescriptionBagTypeChoiceSequence) %}
69
+ - languageCode:
70
+ text: {{ markDescriptionText | get_local_text() }}
71
+ {% endcall %}
72
+ {% endcall %}
73
+
74
+ markSoundDetails:
75
+ - filename:
76
+ fileformat:
77
+
78
+ markVideoDetails:
79
+ - filename:
80
+ fileformat:
81
+
82
+ goodsServicesClassification:
83
+ kind: Nice
84
+ version:
85
+ class:
86
+ {% call(goodsServices) match('goodsServices', trademark.goodsServicesBag) %}
87
+ {% call(classDescription) match('classDescription', goodsServices.classDescriptionBag) %}
88
+ - code: {{ classDescription.classNumber }}
89
+ terms:
90
+ {% call(goodsServicesDescriptionText) match('goodsServicesDescriptionText', classDescription) %}
91
+ {{ goodsServicesDescriptionText.localizedTextType | get_local_text | local_guess_language() }}:
92
+ - {{ goodsServicesDescriptionText.localizedTextType | get_local_text }}
93
+ {% endcall %}
94
+ {% endcall %}
95
+ {% endcall %}
96
+
97
+ priorities:
98
+ {% call(priority) match('priority', trademark.priorityBag) %}
99
+ - countryCode: {{ priority.priorityCountryCode }}
100
+ number: {{ priority.applicationNumber.applicationNumberText }}
101
+ date: {{ priority.priorityApplicationFilingDate }}
102
+ comment:
103
+ {% endcall %}
104
+
105
+ publications:
106
+ - identifier:
107
+ date:
108
+ section:
109
+
110
+ representatives:
111
+ {% call(representative) match('representative', trademark.representativeBag) %}
112
+ - identifier: {{ representative.partyIdentifier }}
113
+ kind:
114
+ fullName:
115
+ - languageCode:
116
+ text: {{ representative.contact.contactTypeChoiceSequence.name.entityName.transliterationName | get_local_texts() }}
117
+ fullAddress:
118
+ {% call(postalAddress) match('postalAddress', representative.contact.contactTypeChoiceSequence.postalAddressBag) %}
119
+ - languageCode:
120
+ text: {{ postalAddress.postalStructuredAddress | get_full_address() }}
121
+ {% endcall %}
122
+ countryCode:
123
+ {% endcall %}
124
+
125
+ correspondence:
126
+ fullName:
127
+ - languageCode:
128
+ text:
129
+ fullAddress:
130
+ - languageCode:
131
+ text:
132
+ countryCode:
133
+
134
+ applicants:
135
+ {% call(applicant) match('applicant', trademark.applicantBag) %}
136
+ - identifier: {{ applicant.partyIdentifier }}
137
+ kind:
138
+ fullName:
139
+ - languageCode:
140
+ text: {{ applicant.contact.contactTypeChoiceSequence.name.entityName.transliterationName | get_local_texts() }}
141
+ fullAddress:
142
+ {% call(postalAddress) match('postalAddress', applicant.contact.contactTypeChoiceSequence.postalAddressBag) %}
143
+ - languageCode:
144
+ text: {{ postalAddress.postalStructuredAddress | get_full_address() }}
145
+ {% endcall %}
146
+ countryCode:
147
+ {% endcall %}
148
+
149
+ {% endcall %}
150
+
151
+ # here goes extra information that is office specific and that is pertinent for us to retain.
152
+ extra:
@@ -10,9 +10,9 @@
10
10
  st13: {{ TradeMark.ApplicationNumber | st13(TradeMark.RegistrationOfficeCode, appdate=TradeMark.ApplicationDate) }}
11
11
  gbdStatus: {{ status }}
12
12
  registrationOfficeCode: {{ TradeMark.RegistrationOfficeCode }}
13
+ type: TRADEMARK
13
14
 
14
15
  {% if not status == 'Delete' %}
15
- type: TRADEMARK
16
16
  kind: {{ TradeMark.KindMark | translate_kind(TradeMark.InternationalRegistrationNumber) }}
17
17
 
18
18
  markFeature: {{ TradeMark.MarkFeatureDetails.MarkFeature | translate_feature}}
@@ -1,50 +1,79 @@
1
- /RECORD
2
- __/AGENT
3
- ____/ADDR_STREET
4
- ____/AGENT_CODE
5
- ____/CITY_NAME
6
- ____/PERSON_NAME
7
- ____/PROVINCE_NAME
8
- __/APPL_SUBTYP
9
- __/APPL_TYP
10
- __/APPNO
11
- __/EXPIRATION_DATE
12
- __/FILE_NBR
13
- __/FILE_SEQ
14
- __/FILE_SER
15
- __/FILE_TYP
16
- __/FILING_DATE
17
- __/LAW_CODE
18
- __/LOGO
19
- ____/LOGO
20
- __/NICE_CLASS
21
- ____/NICE_CLASS_CODE
22
- ____/NICE_CLASS_DESCRIPTION
23
- __/OWNER
24
- ____/ADDR_STREET
25
- ____/CITY_NAME
26
- ____/NATIONALITY_COUNTRY_CODE
27
- ____/PERSON_NAME
28
- ____/PROVINCE_NAME
29
- ____/RESIDENCE_COUNTRY_CODE
30
- ____/STATE_CODE
31
- ____/STATE_NAME
32
- __/PRIORITIES
33
- ____/COUNTRY_CODE
34
- ____/PRIORITY_APPL_ID
35
- ____/PRIORITY_DATE
36
- __/PUBLICATION_DATE
37
- __/REGISTRATION_DATE
38
- __/REGISTRATION_NBR
39
- __/SIGN_TYPE
40
- __/STATUS_CATEGORY
41
- __/STATUS_DATE
42
- __/STATUS_NAME
43
- __/TITLE
44
- __/VIENNA
45
- ____/VIENNA_CLASS_CODE
46
- ____/VIENNA_ELEM_CODE
47
- ____/VIENNA_GROUP_CODE
48
- ____/VIENNA_NAME
49
- ____/VIENNA_TEXT
50
- __/sign_type
1
+ /Transaction
2
+ __/TradeMarkTransactionBody
3
+ ____/TransactionContentDetails
4
+ ______/TransactionCode
5
+ ______/TransactionData
6
+ ________/TradeMarkApplication
7
+ __________/TradeMarkDetails
8
+ ____________/TradeMark
9
+ ______________/ApplicantDetails
10
+ ________________/Applicant
11
+ __________________/ApplicantAddressBook
12
+ ____________________/FormattedNameAddress
13
+ ______________________/Address
14
+ ________________________/AddressCountryCode
15
+ ______________________/Name
16
+ ________________________/FreeFormatName
17
+ __________________________/FreeFormatNameDetails
18
+ ____________________________/FreeFormatNameLine
19
+ ____________________________/FreeFormatNameLine[@languageCode=en]
20
+ ______________/ApplicationDate
21
+ ______________/ApplicationLanguageCode
22
+ ______________/ApplicationNumber
23
+ ______________/ExpiryDate
24
+ ______________/GoodsServicesDetails
25
+ ________________/GoodsServices
26
+ __________________/ClassDescriptionDetails
27
+ ____________________/ClassDescription
28
+ ______________________/ClassNumber
29
+ ______________________/GoodsServicesDescription
30
+ ______________________/GoodsServicesDescription[@languageCode=en]
31
+ ______________/MarkCurrentStatusCode
32
+ ______________/MarkCurrentStatusDate
33
+ ______________/MarkDisclaimerDetails
34
+ ________________/MarkDisclaimer
35
+ ________________/MarkDisclaimer[@languageCode=en]
36
+ ______________/MarkEventDetails
37
+ ________________/MarkEvent
38
+ __________________/MarkEventCode
39
+ __________________/MarkEventDate
40
+ __________________/OfficeSpecificMarkEventName
41
+ ______________/MarkFeature
42
+ ______________/MarkImageDetails
43
+ ________________/MarkImage
44
+ __________________/MarkImageCategory
45
+ ____________________/CategoryCodeDetails
46
+ ______________________/CategoryCode
47
+ ____________________/CategoryKind
48
+ ____________________/CategoryVersion
49
+ __________________/MarkImageFileFormat
50
+ __________________/MarkImageFilename
51
+ ______________/PriorityDetails
52
+ ________________/Priority
53
+ __________________/PriorityCountryCode
54
+ __________________/PriorityDate
55
+ __________________/PriorityNumber
56
+ ______________/PublicationDetails
57
+ ________________/Publication
58
+ __________________/PublicationDate
59
+ __________________/PublicationIdentifier
60
+ __________________/PublicationSection
61
+ ______________/RegistrationDate
62
+ ______________/RegistrationNumber
63
+ ______________/RegistrationOfficeCode
64
+ ______________/RepresentativeDetails
65
+ ________________/Representative
66
+ __________________/RepresentativeAddressBook
67
+ ____________________/FormattedNameAddress
68
+ ______________________/Address
69
+ ________________________/AddressCountryCode
70
+ ______________________/Name
71
+ ________________________/FreeFormatName
72
+ __________________________/FreeFormatNameDetails
73
+ ____________________________/FreeFormatNameLine
74
+ ____________________________/FreeFormatNameLine[@languageCode=en]
75
+ ______________/WordMarkSpecification
76
+ ________________/MarkVerbalElementText
77
+ ________________/MarkVerbalElementText[@languageCode=en]
78
+ ______/TransactionIdentifier
79
+ ______/TransactionSubCode
@@ -0,0 +1,50 @@
1
+ /RECORD
2
+ __/AGENT
3
+ ____/ADDR_STREET
4
+ ____/AGENT_CODE
5
+ ____/CITY_NAME
6
+ ____/PERSON_NAME
7
+ ____/PROVINCE_NAME
8
+ __/APPL_SUBTYP
9
+ __/APPL_TYP
10
+ __/APPNO
11
+ __/EXPIRATION_DATE
12
+ __/FILE_NBR
13
+ __/FILE_SEQ
14
+ __/FILE_SER
15
+ __/FILE_TYP
16
+ __/FILING_DATE
17
+ __/LAW_CODE
18
+ __/LOGO
19
+ ____/LOGO
20
+ __/NICE_CLASS
21
+ ____/NICE_CLASS_CODE
22
+ ____/NICE_CLASS_DESCRIPTION
23
+ __/OWNER
24
+ ____/ADDR_STREET
25
+ ____/CITY_NAME
26
+ ____/NATIONALITY_COUNTRY_CODE
27
+ ____/PERSON_NAME
28
+ ____/PROVINCE_NAME
29
+ ____/RESIDENCE_COUNTRY_CODE
30
+ ____/STATE_CODE
31
+ ____/STATE_NAME
32
+ __/PRIORITIES
33
+ ____/COUNTRY_CODE
34
+ ____/PRIORITY_APPL_ID
35
+ ____/PRIORITY_DATE
36
+ __/PUBLICATION_DATE
37
+ __/REGISTRATION_DATE
38
+ __/REGISTRATION_NBR
39
+ __/SIGN_TYPE
40
+ __/STATUS_CATEGORY
41
+ __/STATUS_DATE
42
+ __/STATUS_NAME
43
+ __/TITLE
44
+ __/VIENNA
45
+ ____/VIENNA_CLASS_CODE
46
+ ____/VIENNA_ELEM_CODE
47
+ ____/VIENNA_GROUP_CODE
48
+ ____/VIENNA_NAME
49
+ ____/VIENNA_TEXT
50
+ __/sign_type