wipo-gbd-transformation 1.1.46__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 (139) 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 -11
  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/pgtm/filters.py +1 -0
  32. gbdtransformation/brands/phtm/schema +79 -50
  33. gbdtransformation/brands/phtm/schema.classic +50 -0
  34. gbdtransformation/brands/phtm/template.classic.yml +102 -0
  35. gbdtransformation/brands/phtm/template.yml +1 -102
  36. gbdtransformation/brands/qatm/__init__.py +5 -0
  37. gbdtransformation/brands/qatm/filters.py +81 -0
  38. gbdtransformation/brands/qatm/schema +87 -0
  39. gbdtransformation/brands/qatm/template.yml +1 -0
  40. gbdtransformation/brands/qatm/tests/__init__.py +0 -0
  41. gbdtransformation/brands/sgtm/filters.py +1 -0
  42. gbdtransformation/brands/sgtm/template.trademark.yml +2 -2
  43. gbdtransformation/brands/ustm/template.yml +1 -1
  44. gbdtransformation/brands/vctm/__init__.py +5 -0
  45. gbdtransformation/brands/vctm/filters.py +75 -0
  46. gbdtransformation/brands/vctm/schema +87 -0
  47. gbdtransformation/brands/vctm/template.yml +1 -0
  48. gbdtransformation/brands/vctm/tests/__init__.py +0 -0
  49. gbdtransformation/brands/vntm/filters.py +1 -3
  50. gbdtransformation/brands/xxxx/template.yml +1 -1
  51. gbdtransformation/designs/__init__.py +8 -0
  52. gbdtransformation/designs/alid/__init__.py +1 -1
  53. gbdtransformation/designs/alid/filters.py +14 -1
  54. gbdtransformation/designs/bnid/__init__.py +5 -0
  55. gbdtransformation/designs/bnid/filters.py +61 -0
  56. gbdtransformation/designs/bnid/schema +80 -0
  57. gbdtransformation/designs/bnid/template.yml +1 -0
  58. gbdtransformation/designs/bwid/__init__.py +6 -0
  59. gbdtransformation/designs/bwid/filters.py +64 -0
  60. gbdtransformation/designs/bwid/schema +101 -0
  61. gbdtransformation/designs/bwid/template.yml +1 -0
  62. gbdtransformation/designs/crid/__init__.py +5 -0
  63. gbdtransformation/designs/crid/filters.py +63 -0
  64. gbdtransformation/designs/crid/schema +94 -0
  65. gbdtransformation/designs/crid/template.yml +1 -0
  66. gbdtransformation/designs/cuid/__init__.py +5 -0
  67. gbdtransformation/designs/cuid/filters.py +60 -0
  68. gbdtransformation/designs/cuid/schema +98 -0
  69. gbdtransformation/designs/cuid/template.yml +1 -0
  70. gbdtransformation/designs/egid/__init__.py +5 -0
  71. gbdtransformation/designs/egid/filters.py +62 -0
  72. gbdtransformation/designs/egid/schema +82 -0
  73. gbdtransformation/designs/egid/template.yml +1 -0
  74. gbdtransformation/designs/filters.py +73 -0
  75. gbdtransformation/designs/idid/__init__.py +5 -0
  76. gbdtransformation/designs/idid/filters.py +67 -0
  77. gbdtransformation/designs/idid/schema +102 -0
  78. gbdtransformation/designs/idid/template.yml +1 -0
  79. gbdtransformation/designs/ipas/filters.py +84 -2
  80. gbdtransformation/designs/ipas/template.yml +90 -79
  81. gbdtransformation/designs/joid/__init__.py +6 -0
  82. gbdtransformation/designs/joid/filters.py +62 -0
  83. gbdtransformation/designs/joid/schema +97 -0
  84. gbdtransformation/designs/joid/template.yml +1 -0
  85. gbdtransformation/designs/keid/__init__.py +5 -0
  86. gbdtransformation/designs/keid/filters.py +62 -0
  87. gbdtransformation/designs/keid/schema +99 -0
  88. gbdtransformation/designs/keid/template.yml +1 -0
  89. gbdtransformation/designs/khid/__init__.py +5 -0
  90. gbdtransformation/designs/khid/filters.py +63 -0
  91. gbdtransformation/designs/khid/schema +100 -0
  92. gbdtransformation/designs/khid/template.yml +1 -0
  93. gbdtransformation/designs/laid/__init__.py +5 -0
  94. gbdtransformation/designs/laid/filters.py +61 -0
  95. gbdtransformation/designs/laid/schema +94 -0
  96. gbdtransformation/designs/laid/template.yml +1 -0
  97. gbdtransformation/designs/mnid/__init__.py +6 -0
  98. gbdtransformation/designs/mnid/filters.py +62 -0
  99. gbdtransformation/designs/mnid/schema +98 -0
  100. gbdtransformation/designs/mnid/template.yml +1 -0
  101. gbdtransformation/designs/myid/__init__.py +5 -0
  102. gbdtransformation/designs/myid/filters.py +60 -0
  103. gbdtransformation/designs/myid/schema +95 -0
  104. gbdtransformation/designs/myid/template.yml +1 -0
  105. gbdtransformation/designs/phid/__init__.py +5 -0
  106. gbdtransformation/designs/phid/filters.py +70 -0
  107. gbdtransformation/designs/phid/schema +95 -0
  108. gbdtransformation/designs/phid/template.yml +1 -0
  109. gbdtransformation/designs/sgid/__init__.py +6 -0
  110. gbdtransformation/designs/sgid/filters.py +66 -0
  111. gbdtransformation/designs/sgid/schema +115 -0
  112. gbdtransformation/designs/sgid/template.yml +1 -0
  113. gbdtransformation/designs/thid/__init__.py +4 -0
  114. gbdtransformation/designs/thid/filters.py +64 -0
  115. gbdtransformation/designs/thid/schema +98 -0
  116. gbdtransformation/designs/thid/template.yml +1 -0
  117. gbdtransformation/designs/tnid/__init__.py +5 -0
  118. gbdtransformation/designs/tnid/filters.py +66 -0
  119. gbdtransformation/designs/tnid/schema +96 -0
  120. gbdtransformation/designs/tnid/template.yml +1 -0
  121. gbdtransformation/designs/vnid/__init__.py +5 -0
  122. gbdtransformation/designs/vnid/filters.py +62 -0
  123. gbdtransformation/designs/vnid/schema +97 -0
  124. gbdtransformation/designs/vnid/template.yml +1 -0
  125. gbdtransformation/designs/woid/__init__.py +2 -0
  126. gbdtransformation/designs/woid/filters.py +372 -0
  127. gbdtransformation/designs/woid/schema +592 -0
  128. gbdtransformation/designs/woid/template.yml +516 -0
  129. gbdtransformation/designs/xxid/template.yml +331 -119
  130. gbdtransformation/execs-nico.py +709 -0
  131. gbdtransformation/execs.py +55 -4
  132. gbdtransformation/gbd-transform.exec.tgz +0 -0
  133. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/METADATA +4 -1
  134. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/RECORD +139 -39
  135. wipo_gbd_transformation-1.1.59.dist-info/SOURCES_Stefans-Mac-Studio.local_Sep-18-063455-2024_Conflict.txt +690 -0
  136. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/entry_points.txt +1 -0
  137. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/LICENSE.md +0 -0
  138. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/WHEEL +0 -0
  139. {wipo_gbd_transformation-1.1.46.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/top_level.txt +0 -0
@@ -1,130 +1,121 @@
1
1
  {% from 'navigation.tmpl' import match %}
2
2
 
3
- {% call(info) match('marinfo', transac) %}
4
- {% set kind = info | get_kind %}
5
- type: TRADEMARK
6
- kind: {{ kind }}
7
-
8
- markFeature: {{ info.martype | translate_feature(info.marart) }}
3
+ {% set trademark = Trademark %}
4
+ {% set status = trademark.MarkCurrentStatusCode | translate_status %}
5
+ {% set officeCode = trademark.RegistrationOfficeCode %}
9
6
 
10
- registrationOfficeCode: CH
11
- designatedCountries:
12
- - CH
7
+ {% if officeCode == 'CH' %}
13
8
 
14
- st13: {{ info.basappn | st13('CH', appdate=info.basannd) }}
9
+ st13: {{ trademark.ApplicationNumber.ApplicationNumberText | st13('CH', appdate=trademark.ApplicationDate) }}
10
+ gbdStatus: {{ status }}
11
+ registrationOfficeCode: {{ officeCode }}
12
+ type: TRADEMARK
15
13
 
16
- applicationNumber: {{ info.basappn }}
17
- applicationDate: {{ info.basannd }}
18
- registrationNumber: {{ info.basregn }}
19
- registrationDate: {{ info.basregd }}
14
+ {% if not status == 'Delete' %}
15
+ kind: {{ tradenark.MarkCategory | translate_kind }}
16
+ markFeature: {{ trademark.MarkRepresentation.MarkFeatureCategory | translate_feature }}
17
+ designatedCountries:
18
+ - {{ officeCode }}
20
19
 
21
- applicationLanguageCode: {{ info.origlan }}
20
+ applicationNumber: {{ trademark.ApplicationNumber.ApplicationNumberText }}
21
+ applicationDate: {{ trademark.ApplicationDate | convertdate('%Y-%m-%d') }}
22
+ registrationNumber: {{ trademark | get_registration_nb(trademark.MarkCurrentStatusCode) }}
23
+ registrationDate: {{ trademark.RegistrationDate }}
24
+ applicationLanguageCode:
25
+ officeStatus: {{ trademark.MarkCurrentStatusCode }}
26
+ statusDate:
27
+ expiryDate: {{ trademark.ExpiryDate }}
22
28
 
23
- expiryDate: {{ info.expirationdate }}
24
- terminationDate: {{ info.basdeld }}
29
+ markDisclaimerDetails:
25
30
 
26
- officeStatus: {{ info.basstate }}
27
- gbdStatus: {{ info.basstate | translate_status(info.basdeld) }}
28
- statusDate: {{ info.lastgazd }}
31
+ markDescriptionDetails:
29
32
 
30
- markDisclaimerDetails:
31
- - languageCode: {{ info.marrem | guess_language(info.origlan) }}
32
- text: {{ info.marrem }}
33
+ wordMarkSpecification:
34
+ markVerbalElement:
35
+ {% set verbalElement = trademark.MarkRepresentation.MarkReproduction.WordMarkSpecification.MarkSignificantVerbalElementText | clean_verbal_element %}
36
+ - text: {{ verbalElement }}
33
37
 
34
38
  markImageDetails:
35
- - name: {{ info.marpicd }}
36
- colourIndicator: {{ info.colclai | get_true_or_false }}
39
+ {% call(img) match('MarkImage', trademark.MarkRepresentation.MarkImageBag) %}
40
+ - name: {{ img.FileName }}
41
+ colourIndicator: {{ img.MarkImageColourClaimedText | get_true_or_false }}
37
42
  colourClaimed:
38
- - languageCode: {{ info.colclai | guess_language }}
39
- text: {{ info.colclai }}
40
-
41
- {% set verbal = info | get_verbal %}
42
- wordMarkSpecification:
43
- markVerbalElement:
44
- - languageCode: {{ verbal | guess_language(default=info.origlan) }}
45
- text: {{ verbal | trim }}
43
+ - text: {{ img.MarkImageColourClaimedText }}
44
+ languageCode: {{ img.MarkImageColourClaimedText | local_guess_language() }}
45
+ classification:
46
+ kind: Vienna
47
+ code:
48
+ -
49
+ {% endcall %}
46
50
 
47
- {% set persons = info | get_roles %}
48
- applicants:
49
- {% for applicant in persons.applicants %}
50
- - fullName:
51
- - languageCode: {{ info.origlan }}
52
- text: {{ applicant.name }}
53
- fullAddress:
54
- - languageCode: {{ info.origlan }}
55
- text: {{ applicant.addr }}
56
- countryCode: {{ applicant.nat }}
57
- {% endfor %}
51
+ markSoundDetails:
52
+ {% call(sound) match('MarkSoundDetails.MarkSound', trademark.MarkRepresentation.MarkSoundBag) %}
53
+ - filename: {{ sound.MarkSoundFilename }}
54
+ fileformat: {{ sound.MarkSoundFileFormat }}
55
+ {% endcall %}
58
56
 
59
- representatives:
60
- {% for representative in persons.representatives %}
61
- - fullName:
62
- - languageCode: {{ info.origlan }}
63
- text: {{ representative.name }}
64
- fullAddress:
65
- - languageCode: {{ info.origlan }}
66
- text: {{ representative.addr }}
67
- countryCode: {{ representative.nat }}
68
- {% endfor %}
69
-
70
- {% if persons.correspondence %}
71
- correspondence:
72
- fullName:
73
- - languageCode: {{ info.origlan }}
74
- text: {{ persons.correspondence.name }}
75
- fullAddress:
76
- - languageCode: {{ info.origlan }}
77
- text: {{ persons.correspondence.addr }}
78
- countryCode: {{ persons.correspondence.nat }}
79
- {% endif %}
57
+ markVideoDetails:
58
+ {% call(video) match('MarkVideoDetails.MarkVideo', trademark.MarkRepresentation) %}
59
+ - filename: {{ video.MarkVideoFilename }}
60
+ fileformat: {{ video.MarkVideoFileFormat }}
61
+ {% endcall %}
80
62
 
81
- priorities:
82
- {% call(prio) match('prigr.prio', info) %}
83
- - countryCode: {{ prio.prinat }}
84
- number: {{ prio.prinr }}
85
- date: {{ prio.priappd }}
86
- comment: {{ prigr.prirem }}
87
- {% endcall %}
88
-
89
- {% set (nc_gs, gs) = info.gsgr | structure_gs %}
90
- {% if nc_gs.keys() | length > 0 %}
91
63
  goodsServicesClassification:
92
64
  kind: Nice
93
65
  version: {{ ASK_THE_OFFICE }}
94
- class:
95
- {% for cls, terms in nc_gs.items() %}
96
- - code: {{ cls | int }}
97
- {% if terms | length > 0 %}
66
+ class:
67
+ {% call(ClassDescription) match('ClassDescription', trademark.GoodsServicesBag.GoodsServices.ClassDescriptionBag) %}
68
+ - code: {{ ClassDescription.ClassNumber| int }}
98
69
  terms:
99
- {{ terms | guess_language(default=info.origlan) | field_name }}:
100
- {% for term in terms %}
101
- - {{ term }}
102
- {% endfor %}
103
- {% endif %}
104
- {% endfor %}
105
- {% endif %}
70
+ {{ ClassDescription.GoodsServicesDescriptionText | local_guess_language() }}:
71
+ - {{ ClassDescription.GoodsServicesDescriptionText }}
72
+ {% endcall %}
106
73
 
107
- {% if gs | length > 0 %}
108
- goodsServicesUnclassified:
109
- {{ gs | guess_language(default=info.origlan) | field_name }}:
110
- {% for term in gs %}
111
- - {{ term }}
112
- {% endfor %}
113
- {% endif %}
74
+ priorities:
75
+ {% call(priority) match('PriorityBag.Priority', trademark) %}
76
+ - countryCode: {{ priority.PriorityCountryCode }}
77
+ number: {{ priority.PriorityRegistrationNumber }}
78
+ date: {{ select_priority_date }}
79
+ {% endcall %}
80
+
81
+ publications:
82
+ {% call(publication) match('PublicationBag.Publication', trademark) %}
83
+ - identifier: {{ publication.PublicationIdentifier }}
84
+ date: {{ publication.PublicationDate }}
85
+ section: {{ publication.PublicationPage }}
86
+ {% endcall %}
114
87
 
115
- # publications:
116
- # {% call(publ) match('marhist.histdata', transac) %}
117
- # - identifier: {{ publ.artnr }}
118
- # date: {{ publ.evdat }}
119
- # section: {{ publ.gaznum }}
120
- # {% endcall %}
121
-
122
- extra:
123
- {% call(opp) match('oppositiongr', info) %}
124
- opposition:
125
- state: {{ opp.oppositionstate }}
126
- date: {{ opp.oppositiondate }}
88
+ applicants:
89
+ {% call(Applicant) match('Applicant', trademark.ApplicantBag) %}
90
+ - identifier:
91
+ kind:
92
+ fullName:
93
+ - text: {{ Applicant.Contact.Name.PersonName.PersonFullName }}
94
+ languageCode:
95
+ {% call(postalAddress) match('PostalAddress', Applicant.Contact.PostalAddressBag) %}
96
+ fullAddress:
97
+ {% set addr = postalAddress.PostalStructuredAddress | get_full_address %}
98
+ - text: {{ addr }}
99
+ languageCode: {{ addr | local_guess_language() }}
100
+ countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
101
+ {% endcall %}
127
102
  {% endcall %}
128
103
 
129
- {% endcall %}
104
+ representatives:
105
+ {% call(Representative) match('Representative', trademark.RepresentativeBag) %}
106
+ - identifier:
107
+ kind:
108
+ fullName:
109
+ - text: {{ Representative.Contact.Name.PersonName.PersonFullName }}
110
+ languageCode:
111
+ {% call(postalAddress) match('PostalAddress', Representative.Contact.PostalAddressBag) %}
112
+ fullAddress:
113
+ {% set addr = postalAddress.PostalStructuredAddress | get_full_address %}
114
+ - text: {{ addr }}
115
+ languageCode: {{ addr | local_guess_language() }}
116
+ countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
117
+ {% endcall %}
118
+ {% endcall %}
130
119
 
120
+ {% endif %}
121
+ {% endif %}
@@ -6,9 +6,9 @@
6
6
  gbdStatus: {{ status }}
7
7
  st13: {{TradeMark.ApplicationNumber | st13('EE', appdate=appyear) }}
8
8
  registrationOfficeCode: EE
9
+ type: TRADEMARK
9
10
 
10
11
  {% if not status == 'Delete' %}
11
- type: TRADEMARK
12
12
  kind:
13
13
  - Individual
14
14
  markFeature: {{TradeMark.MarkType | translate_feature}}
@@ -11,9 +11,9 @@
11
11
  st13: {{ TradeMark.ApplicationNumber | st13('EM') }}
12
12
  gbdStatus: {{ status }}
13
13
  registrationOfficeCode: EM
14
+ type: TRADEMARK
14
15
 
15
16
  {% if not status == 'Delete' %}
16
- type: TRADEMARK
17
17
  kind: {{ TradeMark.KindMark | translate_kind }}
18
18
  markFeature: {{ TradeMark.MarkFeature | translate_feature }}
19
19
  designatedCountries:
@@ -6,9 +6,9 @@
6
6
  st13: {{ TradeMark.ApplicationNumber | st13('ES', appdate=TradeMark.ApplicationDate) }}
7
7
  gbdStatus: {{ status }}
8
8
  registrationOfficeCode: {{ TradeMark.RegistrationOfficeCode }}
9
+ type: TRADEMARK
9
10
 
10
11
  {% if not status == 'Delete' %}
11
- type: TRADEMARK
12
12
  kind: {{ TradeMark.KindMark | translate_kind }}
13
13
  markFeature: {{ TradeMark.MarkFeature | translate_feature }}
14
14
  designatedCountries:
@@ -11,9 +11,9 @@
11
11
  st13: {{ TradeMark.ApplicationNumber | st13('FR', appdate=TradeMark.ApplicationDate) }}
12
12
  gbdStatus: {{ status }}
13
13
  registrationOfficeCode: {{ TradeMark.RegistrationOfficeCode }}
14
+ type: TRADEMARK
14
15
 
15
16
  {% if not status == 'Delete' %}
16
- type: TRADEMARK
17
17
  kind: {{ TradeMark.KindMark | translate_kind }}
18
18
 
19
19
  designatedCountries:
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # AE/321890
5
+ appnum_mask = ['GD/T/(\\d{4})/(\\d*)', 'GD/T/(\\d*)/(\\d*)']
@@ -0,0 +1,61 @@
1
+ import gbdtransformation.brands.ipas.filters as ipas
2
+ import gbdtransformation.common.filters as commons
3
+
4
+ ignore_namespace = [
5
+ 'http://www.wipo.int/standards/XMLSchema/trademarks',
6
+ 'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
7
+
8
+ def get_appdate(appdate, appnum):
9
+ return ipas.get_appdate(appdate, appnum)
10
+
11
+ def translate_type(header):
12
+ code = header.TransactionCode
13
+ if code == 'Trademark': return 'TRADEMARK'
14
+
15
+ raise Exception('Type "%s" is not mapped.' % code)
16
+
17
+ def translate_kind(trademark, header):
18
+ subcode = header.TransactionSubCode
19
+ if subcode == 'Trademarks': return ['Individual']
20
+ # it is None for all
21
+ # kind = trademark.KindMark
22
+ raise Exception('Kind "%s" not mapped.' % subcode)
23
+
24
+ def translate_status(trademark):
25
+ status = trademark.MarkCurrentStatusCode
26
+
27
+ return ipas.translate_status(status)
28
+
29
+ def translate_feature(trademark):
30
+ feature = trademark.MarkFeature
31
+ if not feature: return 'Undefined'
32
+
33
+ return ipas.translate_feature(feature)
34
+
35
+ def translate_event(event):
36
+ if not event: return 'Unknown'
37
+
38
+ return ipas.translate_event(event)
39
+
40
+ def verbal_lang_map(markVerbalElements, applang=None):
41
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
42
+
43
+ def get_registration_nb(trademark, tmstatus):
44
+ if trademark.RegistrationNumber:
45
+ return trademark.RegistrationNumber
46
+ return None
47
+
48
+ def get_expiry_date(trademark, tmstatus):
49
+ return ipas.get_expiry_date(trademark, tmstatus)
50
+
51
+ def get_registration_date(trademark, tmstatus):
52
+ return ipas.get_registration_date(trademark, tmstatus)
53
+
54
+ def is_international(header):
55
+ return False
56
+
57
+ def get_ir_refnum(appnum):
58
+ return
59
+
60
+ def get_goods_services(goods_services):
61
+ return ipas.get_goods_services(goods_services)
@@ -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
@@ -10,23 +10,33 @@ def get_full_address(applicant):
10
10
 
11
11
  def translate_status(status, status_is):
12
12
  # office did not map to english -> we do it
13
- if not status:
14
- if status_is == 'Áfrýjun': return 'Pending' # Appeal
15
- if status_is == 'Afturkallað': return 'Ended' # Revoked
16
- if status_is == 'Birt': return 'Pending' # Published
17
- if status_is == 'Andmæli': return 'Registered' # Published
18
- if status_is == 'Krafa um niðurfellingu': return 'Ended' # Request for cancellation
19
- if status_is == 'Tilbúið til birtingar': return 'Pending' # Ready for publishing
20
- if status_is == 'Í rannsókn': return 'Registered' # Investigating ..
21
- if status_is == 'Krafa um ógildingu': return 'Registered' # Claim for annulment ..
22
- if status_is == 'Rannsóknarhæft': return 'Pending' #Researchable or in their office Application
13
+ if 'Áfrýjun' in status_is: return 'Pending' # Appeal
14
+ if status_is == 'Afturkallað': return 'Ended' # Revoked
15
+ if status_is == 'Birt': return 'Pending' # Published
16
+ if status_is == 'Andmæli': return 'Registered' # Published
17
+ if status_is == 'Krafa um niðurfellingu': return 'Ended' # Request for cancellation
18
+ if status_is == 'Tilbúið til birtingar': return 'Pending' # Ready for publishing
19
+ if status_is == 'Í rannsókn': return 'Registered' # Investigating ..
20
+ if status_is == 'Krafa um ógildingu': return 'Registered' # Claim for annulment ..
21
+ if status_is == 'Rannsóknarhæft': return 'Pending' #Researchable or in their office Application
22
+ if status_is == 'Fyrsta höfnun': return 'Pending' #First rejection or in their office Application
23
+ if status_is == 'Hafna': return 'Ended' #Rejection or in their office Application
24
+ if status_is == 'Vafamál': return 'Registered' #Investigating or in their office Application
25
+ if status_is == 'Endurupptökufrestur': return 'Pending' #Re-admission deadline (Trad)
26
+ if 'Í bi' in status_is: return 'Pending' #On hold
27
+ if 'nari sko' in status_is: return 'Pending'
28
+ if 'Rökstu' in status_is: return 'Pending'
29
+ if status_is == 'Rökstuningur': return 'Pending'
30
+ if status_is == 'Synja': return 'Ended'
31
+ if status_is == 'Umsögn hjá NS': return 'Pending'
32
+
23
33
 
24
34
  if status == 'Filed': return 'Pending'
25
35
  if status == 'Expired': return 'Expired'
26
36
  if status == 'Ended': return 'Ended'
27
37
  if status == 'Registered': return 'Registered'
38
+ return 'Unknown'
28
39
 
29
- raise Exception('Status "%s/%s" unmapped' % (status, status_is))
30
40
 
31
41
 
32
42
  def translate_feature(feature, is3D):
@@ -3,6 +3,7 @@
3
3
  {% set appdate = mark.applicationDate | convertdate('%d.%m.%Y %H:%M:%S') %}
4
4
  st13: {{ mark.vmid | st13('IS', appdate=appdate) }}
5
5
  registrationOfficeCode: IS
6
+ type: TRADEMARK
6
7
 
7
8
  {% if mark.deleted | get_true_or_false %}
8
9
  gbdStatus: Delete
@@ -10,7 +11,6 @@ gbdStatus: Delete
10
11
 
11
12
  {% set status = mark.statusEN | translate_status(mark.status) %}
12
13
 
13
- type: TRADEMARK
14
14
  kind:
15
15
  - Individual
16
16
 
@@ -9,9 +9,9 @@
9
9
  gbdStatus: {{ status }}
10
10
  st13: {{ header.ApplicationNumber.ApplicationNumberText | st13('KR', appdate=appyear) }}
11
11
  registrationOfficeCode: KR # division marks donot have RegistrationOfficeCode
12
+ type: TRADEMARK
12
13
 
13
14
  {% if not status == 'Delete' %}
14
- type: TRADEMARK
15
15
  kind: {{ kind }}
16
16
 
17
17
  designatedCountries:
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # AE/321890
5
+ appnum_mask = 'LK/T/1/(\\d*)'
@@ -0,0 +1,83 @@
1
+ import gbdtransformation.brands.ipas.filters as ipas
2
+ import gbdtransformation.common.filters as commons
3
+
4
+ ignore_namespace = [
5
+ 'http://www.wipo.int/standards/XMLSchema/trademarks',
6
+ 'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
7
+
8
+ def get_appdate(appdate, appnum):
9
+ return ipas.get_appdate(appdate, appnum)
10
+
11
+ def translate_type(header):
12
+ code = header.TransactionCode
13
+ if code == 'Trademark': return 'TRADEMARK'
14
+ if code == 'Certification Trademark': return 'TRADEMARK'
15
+ return 'TRADEMARK'
16
+
17
+ def translate_kind(trademark, header):
18
+ subcode = header.TransactionSubCode
19
+ if subcode == 'Individual Trademark': return ['Individual']
20
+ if subcode == 'Company/Partnership Trademark': return ['Individual']
21
+ if subcode == 'Collective Trademark': return ['Collective']
22
+ if subcode == 'Certification Trademark': return ['Individual']
23
+
24
+
25
+ # it is None for all
26
+ # kind = trademark.KindMark
27
+
28
+ raise Exception('Kind "%s" not mapped.' % subcode)
29
+ return ['Individual']
30
+
31
+ def translate_status(trademark):
32
+ status = trademark.MarkCurrentStatusCode
33
+
34
+ if status == 'Converted': return 'Registered'
35
+
36
+ return ipas.translate_status(status)
37
+
38
+ def translate_feature(trademark):
39
+ feature = trademark.MarkFeature
40
+
41
+ if not feature: return 'Undefined'
42
+
43
+ return ipas.translate_feature(feature)
44
+
45
+ def translate_event(event):
46
+ if not event: return 'Unknown'
47
+
48
+ return ipas.translate_event(event)
49
+
50
+ # ---------------------------------------
51
+ # # language code is not accurate for markVerbalElement
52
+ # def guess_language(text, lang, default):
53
+ # if commons.is_latin(text):
54
+ # return 'en'
55
+ # else:
56
+ # return commons.guess_language(text, lang, default)
57
+
58
+ # TODO: separate values like
59
+ # {'ar': ['BITUTAPE - بيتوتيب']}
60
+ # {'ar': ['ديمه كابيتال Dimah Capital']}
61
+ def verbal_lang_map(markVerbalElements, applang=None):
62
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
63
+
64
+ def get_registration_nb(trademark, tmstatus):
65
+ if trademark.RegistrationNumber:
66
+ return trademark.RegistrationNumber
67
+
68
+ return None
69
+
70
+ def get_expiry_date(trademark, tmstatus):
71
+ return ipas.get_expiry_date(trademark, tmstatus)
72
+
73
+ def get_registration_date(trademark, tmstatus):
74
+ return ipas.get_registration_date(trademark, tmstatus)
75
+
76
+ def is_international(header):
77
+ return False
78
+
79
+ def get_ir_refnum(appnum):
80
+ return
81
+
82
+ def get_goods_services(goods_services):
83
+ return ipas.get_goods_services(goods_services)