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
@@ -2,57 +2,53 @@
2
2
 
3
3
  {% call(header) match('DesignTransactionBody.TransactionContentDetails', Transaction) %}
4
4
 
5
- {% call(design) match('TransactionData.DesignApplicationDetails.DesignApplication', header) %}
5
+ {% set design = Transaction.DesignTransactionBody.TransactionContentDetails.TransactionData.DesignApplicationDetails.DesignApplication %}
6
6
  {% set design_count = design | get_designs_count(header) %}
7
7
  {% set design_pos = design | get_designs_pos(header) %}
8
8
  {% set kind = design | translate_kind(header) %}
9
- type: 'Open'
10
- designGrouping: 'Multiple'
9
+ type: 'DESIGN'
10
+ subtype: 'OPEN'
11
+ designGrouping: 'MULTIPLE'
11
12
  designsCount: {{ design_count }}
12
- designPos: {{ design_pos }}
13
- kind: {{kind}}
13
+ kind:
14
+ - {{kind}}
14
15
  registrationOfficeCode: {{ design.RegistrationOfficeCode }}
15
16
  designatedCountries:
17
+ {% if design.DesignatedCountryDetails %}
18
+ {% call(designations) match('DesignatedCountry', design.DesignatedCountryDetails) %}
19
+ - {{ designations.DesignatedCountryCode }}
20
+ {% endcall %}
21
+ {% else %}
16
22
  - {{ design.RegistrationOfficeCode }}
17
-
23
+ {% endif %}
18
24
  reference:
19
25
  {% if header | is_international %}
20
- office: WO
21
26
  registration:
22
27
  - number: {{ design.DesignApplicationNumber | get_ir_refnum }}
23
- {% endif %}
28
+ office: WO
29
+ {% endif %}
24
30
  {% if not kind == 'Industrial Design' %}
25
- office: {{ design.RegistrationNumber }}
31
+ registration:
32
+ - number: {{ design.RegistrationNumber }}
26
33
  {% endif %}
27
34
 
28
35
  {% set idstatus = design.DesignDetails.Design | translate_status %}
29
36
  {% set appdate = design.DesignApplicationDate | get_appdate(design.DesignApplicationNumber) %}
30
37
 
31
- st13: {{ design.DesignApplicationNumber | st13(design.RegistrationOfficeCode, design_pos, appdate=appdate) }}
38
+ st13: {{ design.DesignApplicationNumber | st13(None, design.RegistrationOfficeCode, design_pos, appdate=appdate, roffice=design.ReceivingOfficeCode) }}
32
39
 
33
40
  applicationNumber: {{ design.DesignApplicationNumber }}
34
41
  applicationDate: {{ design.DesignApplicationDate }}
35
42
  registrationNumber: {{ design.DesignDetails.Design | get_registration_nb(idstatus) | remove_trailing('-') }}
36
43
  registrationDate: {{ design.DesignDetails.Design | get_registration_date(idstatus) }}
37
- publicationDate: {{ (design.DesignDetails.Design.PublicationDetails.Publication | last).PublicationDate }}
38
- expiryDate: {{ design.DesignDetails.Design | get_expiry_date(idstatus) }}
39
44
 
40
- applicationLanguageCode: {{ design.DesignApplicationLanguageCode }}
45
+ publicationDates: {{ design.DesignDetails.Design | deduplicate_publication_dates }}
46
+ earliestPublicationDate: {{ design.DesignDetails.Design | select_earliest_date }}
41
47
 
42
- officeStatus: {{ design.DesignDetails.Design.DesignCurrentStatusCode | parseStatus }}
43
- gbdStatus: {{ idstatus }}
44
- statusDate: {{ design.DesignDetails.Design.DesignCurrentStatusDate }}
48
+ expiryDate: {{ design.DesignDetails.Design | get_expiry_date(idstatus) }}
45
49
 
46
- designDescription:
47
- - languageCode: {{ design.DesignDetails.Design.DesignDescription | guess_language(design.DesignApplicationLanguageCode) }}
48
- text: {{ design.DesignDetails.Design.DesignDescription }}
50
+ applicationLanguageCode: {{ design.DesignApplicationLanguageCode }}
49
51
 
50
- designImageDetails:
51
- {% call(sheet) match('DesignRepresentationSheetDetails.DesignRepresentationSheet', design.DesignDetails.Design) %}
52
- {% call(img) match('RepresentationSheetFilename',sheet) %}
53
- - name: {{ img }}
54
- {% endcall %}
55
- {% endcall %}
56
52
  applicants:
57
53
  {% call(applicant) match('ApplicantDetails.Applicant', design.DesignDetails.Design) %}
58
54
  {% call(details) match('ApplicantAddressBook.FormattedNameAddress.Name.FreeFormatName', applicant) %}
@@ -99,65 +95,80 @@ representatives:
99
95
  {% endcall %}
100
96
  {% endcall %}
101
97
 
102
- designer:
103
- {% call(designer) match('DesignerDetails.Designer', design.DesignDetails.Design) %}
104
- {% call(details) match('DesignerAddressBook.FormattedNameAddress.Name.FreeFormatName', designer) %}
105
- - identifier: {{ details.DesignerIdentifier }}
106
- fullName:
107
- {% call(nameline) match('FreeFormatNameDetails.FreeFormatNameLine', details) %}
108
- - text: {{ nameline }}
109
- languageCode: {{ nameline.__value | guess_language(nameline._languageCode, design.DesignApplicationLanguageCode) }}
110
- {% endcall %}
98
+ designs:
99
+ - designPos: {{ design_pos }}
100
+ officeStatus: {{ design.DesignDetails.Design.DesignCurrentStatusCode | parseStatus }}
101
+ gbdStatus: {{ idstatus }}
102
+ statusDate: {{ design.DesignDetails.Design.DesignCurrentStatusDate }}
103
+
104
+ productIndication:
105
+ {% call(indic) match('DesignTitle', design.DesignDetails.Design) %}
106
+ - languageCode: {{ indic | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
107
+ text: {{ indic }}
111
108
  {% endcall %}
112
- {% call(address) match('DesignerAddressBook.FormattedNameAddress.Address', designer) %}
113
- fullAddress:
114
- {% call(adrline) match('FreeFormatAddress.FreeFormatAddressLine', address) %}
115
- {% if not adrline == '-' %}
116
- - text: {{ adrline }}
117
- languageCode: {{ adrline | guess_language(adrline._languageCode, design.DesignApplicationLanguageCode) }}
118
- {% endif %}
109
+
110
+ designDescription:
111
+ - languageCode: {{ design.DesignDetails.Design.DesignDescription | guess_language(design.DesignApplicationLanguageCode) }}
112
+ text: {{ design.DesignDetails.Design.DesignDescription }}
113
+
114
+ designImageDetails:
115
+ {% call(sheet) match('DesignRepresentationSheetDetails.DesignRepresentationSheet', design.DesignDetails.Design) %}
116
+ {% call(img) match('RepresentationSheetFilename',sheet) %}
117
+ - name: {{ img }}
118
+ {% endcall %}
119
+ {% endcall %}
120
+
121
+
122
+ designer:
123
+ {% call(designer) match('DesignerDetails.Designer', design.DesignDetails.Design) %}
124
+ {% call(details) match('DesignerAddressBook.FormattedNameAddress.Name.FreeFormatName', designer) %}
125
+ - identifier: {{ details.DesignerIdentifier }}
126
+ fullName:
127
+ {% call(nameline) match('FreeFormatNameDetails.FreeFormatNameLine', details) %}
128
+ - text: {{ nameline }}
129
+ languageCode: {{ nameline.__value | guess_language(nameline._languageCode, design.DesignApplicationLanguageCode) }}
130
+ {% endcall %}
119
131
  {% endcall %}
120
- countryCode: {{ address.AddressCountryCode | remove_trailing('-', '.') | remove_numerics }}
121
- {% endcall %}
132
+ {% call(address) match('DesignerAddressBook.FormattedNameAddress.Address', designer) %}
133
+ fullAddress:
134
+ {% call(adrline) match('FreeFormatAddress.FreeFormatAddressLine', address) %}
135
+ {% if not adrline == '-' %}
136
+ - text: {{ adrline }}
137
+ languageCode: {{ adrline | guess_language(adrline._languageCode, design.DesignApplicationLanguageCode) }}
138
+ {% endif %}
139
+ {% endcall %}
140
+ countryCode: {{ address.AddressCountryCode | remove_trailing('-', '.') | remove_numerics }}
141
+ {% endcall %}
142
+ {% endcall %}
143
+
144
+ productIndicationClasses:
145
+ {% call(indicationProducts) match('IndicationProductDetails.IndicationProduct', design.DesignDetails.Design) %}
146
+ - kind: {{ indicationProducts.ClassificationKindCode | lower }}
147
+ version: {{ indicationProducts.ClassificationVersion}}
148
+ classes:
149
+ - {{ indicationProducts.ClassDescriptionDetails.ClassDescription | deduplicate_classes }}
122
150
  {% endcall %}
123
151
 
124
- productIndicationClasses:
125
- {% call(indicationProducts) match('IndicationProductDetails.IndicationProduct', design.DesignDetails.Design) %}
126
- - kind: {{ indicationProducts.ClassificationKindCode}}
127
- version: {{ indicationProducts.ClassificationVersion}}
128
- classes:
129
- {% call(code) match('ClassDescriptionDetails.ClassDescription', indicationProducts) %}
130
- - code: {{ code.ClassNumber }}
131
- description: {{ code.ProductDescription}}
152
+ priorities:
153
+ {% call(priority) match('PriorityDetails.Priority', design.DesignDetails.Design) %}
154
+ - countryCode: {{ priority.PriorityCountryCode }}
155
+ number: {{ priority.PriorityNumber }}
156
+ date: {{ priority.PriorityDate }}
157
+ {% endcall %}
158
+
159
+ noveltyStatement:
160
+ {% call(indic) match('NoveltyStatement', design.DesignDetails.Design) %}
161
+ - languageCode: {{ indic | remove_trailing('-', '.') | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
162
+ text: {{ indic | remove_trailing('-', '.') }}
132
163
  {% endcall %}
133
- {% endcall %}
134
164
 
135
- productIndication:
136
- {% call(indic) match('DesignTitle', design.DesignDetails.Design) %}
137
- - languageCode: {{ indic | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
138
- text: {{ indic }}
139
- {% endcall %}
140
-
141
- noveltyStatement:
142
- {% call(indic) match('NoveltyStatement', design.DesignDetails.Design) %}
143
- - languageCode: {{ indic | remove_trailing('-', '.') | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
144
- text: {{ indic | remove_trailing('-', '.') }}
145
- {% endcall %}
146
-
147
-
148
- priorities:
149
- {% call(priority) match('PriorityDetails.Priority', design.DesignDetails.Design) %}
150
- - countryCode: {{ priority.PriorityCountryCode }}
151
- number: {{ priority.PriorityNumber }}
152
- date: {{ priority.PriorityDate }}
153
- {% endcall %}
154
-
155
- publications:
156
- {% call(pub) match('PublicationDetails.Publication', design.DesignDetails.Design) %}
157
- - identifier: {{ pub.PublicationIdentifier}}
158
- date: {{ pub.PublicationDate}}
159
- section:
160
- {% endcall %}
165
+ {% set earliestDesignPub = design.DesignDetails.Design.PublicationDetails.Publication | select_earliest_date %}
166
+ earliestPublications:
167
+ identifier: {{ earliestDesignPub.PublicationIdentifier}}
168
+ date: {{ earliestDesignPub.PublicationDate}}
169
+ section:
170
+
171
+ publications:
172
+ - {{ design.DesignDetails.Design.PublicationDetails.Publication | deduplicate_publications }}
161
173
 
162
- {% endcall %}
163
174
  {% endcall %}
@@ -0,0 +1,6 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ #JO/D/1996/0625
5
+ appnum_mask = ['(JO)/D/\\d*/(\\d*)',
6
+ '(\\d*)/D/\\d*/(\\d*)']
@@ -0,0 +1,62 @@
1
+ # standard gbd definitions
2
+ import gbdtransformation.designs.ipas.filters as ipas
3
+
4
+
5
+ # namespaces defined in XML and to be ignored in procecssing
6
+ ignore_namespace = [
7
+ 'http://www.wipo.int/standards/XMLSchema/designs',
8
+ 'http://www.wipo.int/standards/XMLSchema/wo-designs'
9
+ ]
10
+ def get_appdate(appdate, appnum):
11
+ return appnum.split('/')[-2]
12
+
13
+ def get_designs_count(design, header):
14
+ return '1'
15
+
16
+ def get_designs_pos(design, header):
17
+ return '1'
18
+
19
+ def translate_kind(desgin, header):
20
+ code = header.TransactionCode.lower()
21
+ subcode = header.TransactionSubCode.lower()
22
+ if code == 'نموذج صناعي':
23
+ return 'Industrial Design'
24
+ raise Exception('Type "%s" "%s" is not mapped.' % (code, subcode))
25
+
26
+ def translate_status(design):
27
+ status = design.DesignCurrentStatusCode
28
+
29
+ return ipas.translate_status(status)
30
+
31
+
32
+ def get_registration_nb(design, idstatus):
33
+ if design.RegistrationNumber:
34
+ return design.RegistrationNumber
35
+
36
+ return None
37
+
38
+
39
+ def get_expiry_date(design, idstatus):
40
+ return ipas.get_expiry_date(design, idstatus)
41
+
42
+ def get_registration_date(design, idstatus):
43
+ return ipas.get_registration_date(design, idstatus)
44
+
45
+ def is_international(header):
46
+ return False
47
+
48
+ def get_ir_refnum(appnum):
49
+ return appnum
50
+
51
+ def select_earliest_date(publications):
52
+ return ipas.select_earliest_date(publications)
53
+
54
+ def deduplicate_publication_dates(publications):
55
+ return ipas.deduplicate_publication_dates(publications)
56
+
57
+ def deduplicate_classes(classes):
58
+ return ipas.deduplicate_classes(classes)
59
+
60
+ def deduplicate_publications(publications):
61
+ return ipas.deduplicate_publications(publications)
62
+
@@ -0,0 +1,97 @@
1
+ /Transaction
2
+ __/DesignTransactionBody
3
+ ____/TransactionContentDetails
4
+ ______/TransactionCode
5
+ ______/TransactionData
6
+ ________/DesignApplicationDetails
7
+ __________/DesignApplication
8
+ ____________/ApplicantDetails
9
+ ______________/ApplicantKey
10
+ ____________/DesignApplicationDate
11
+ ____________/DesignApplicationLanguageCode
12
+ ____________/DesignApplicationNumber
13
+ ____________/DesignDetails
14
+ ______________/Design
15
+ ________________/ApplicantDetails
16
+ __________________/Applicant
17
+ ____________________/ApplicantAddressBook
18
+ ______________________/FormattedNameAddress
19
+ ________________________/Address
20
+ __________________________/AddressCountryCode
21
+ __________________________/FreeFormatAddress
22
+ ____________________________/FreeFormatAddressLine
23
+ ________________________/Name
24
+ __________________________/FreeFormatName
25
+ ____________________________/FreeFormatNameDetails
26
+ ______________________________/FreeFormatNameLine
27
+ ______________________________/FreeFormatNameLine[@languageCode=ar]
28
+ ________________/DesignCurrentStatusCode
29
+ ________________/DesignCurrentStatusDate
30
+ ________________/DesignDescription
31
+ ________________/DesignEventDetails
32
+ __________________/DesignEvent
33
+ ____________________/DesignEventCode
34
+ ____________________/DesignEventDate
35
+ ________________/DesignIdentifier
36
+ ________________/DesignRepresentationSheetDetails
37
+ __________________/DesignRepresentationSheet
38
+ ____________________/RepresentationSheetFilename
39
+ ________________/DesignSpecimenDetails
40
+ __________________/DesignSpecimen
41
+ ____________________/SpecimenDescription
42
+ ____________________/SpecimenDescription[@languageCode=ar]
43
+ ____________________/SpecimenIdentifier
44
+ ________________/DesignTitle
45
+ ________________/DesignTitle[@languageCode=ar]
46
+ ________________/DesignTitle[@sequenceNumber=1]
47
+ ________________/DesignerDetails
48
+ __________________/Designer
49
+ ____________________/DesignerAddressBook
50
+ ______________________/FormattedNameAddress
51
+ ________________________/Address
52
+ __________________________/AddressCountryCode
53
+ __________________________/FreeFormatAddress
54
+ ____________________________/FreeFormatAddressLine
55
+ ________________________/Name
56
+ __________________________/FreeFormatName
57
+ ____________________________/FreeFormatNameDetails
58
+ ______________________________/FreeFormatNameLine
59
+ ______________________________/FreeFormatNameLine[@languageCode=ar]
60
+ ________________/IndicationProductDetails
61
+ __________________/IndicationProduct
62
+ ____________________/ClassDescriptionDetails
63
+ ______________________/ClassDescription
64
+ ________________________/ClassNumber
65
+ ________________________/ProductDescription
66
+ ____________________/ClassificationKindCode
67
+ ____________________/ClassificationVersion
68
+ ________________/NoveltyStatement
69
+ ________________/NoveltyStatement[@languageCode=ar]
70
+ ________________/NoveltyStatement[@languageCode=en]
71
+ ________________/PriorityDetails
72
+ __________________/Priority
73
+ ____________________/PriorityCountryCode
74
+ ____________________/PriorityDate
75
+ ____________________/PriorityNumber
76
+ ________________/PublicationDetails
77
+ __________________/Publication
78
+ ____________________/PublicationDate
79
+ ____________________/PublicationIdentifier
80
+ ________________/RegistrationDate
81
+ ________________/RegistrationNumber
82
+ ________________/RepresentativeDetails
83
+ __________________/Representative
84
+ ____________________/RepresentativeAddressBook
85
+ ______________________/FormattedNameAddress
86
+ ________________________/Address
87
+ __________________________/AddressCountryCode
88
+ __________________________/FreeFormatAddress
89
+ ____________________________/FreeFormatAddressLine
90
+ ________________________/Name
91
+ __________________________/FreeFormatName
92
+ ____________________________/FreeFormatNameDetails
93
+ ______________________________/FreeFormatNameLine
94
+ ______________________________/FreeFormatNameLine[@languageCode=ar]
95
+ ____________/RegistrationOfficeCode
96
+ ______/TransactionIdentifier
97
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # KEKED20141478, KEAPD2012574
5
+ appnum_mask = ['KEKED\\d{4}(\\d*)', 'KEAPD\\d{4}(\\d*)']
@@ -0,0 +1,62 @@
1
+ # standard gbd definitions
2
+ import gbdtransformation.designs.ipas.filters as ipas
3
+
4
+
5
+ # namespaces defined in XML and to be ignored in procecssing
6
+ ignore_namespace = [
7
+ 'http://www.wipo.int/standards/XMLSchema/designs',
8
+ 'http://www.wipo.int/standards/XMLSchema/wo-designs'
9
+ ]
10
+ def get_appdate(appdate, appnum):
11
+ return appdate
12
+
13
+ def get_designs_count(design, header):
14
+ return '1'
15
+
16
+ def get_designs_pos(design, header):
17
+ return '1'
18
+
19
+ def translate_kind(desgin, header):
20
+ code = header.TransactionCode.lower()
21
+ subcode = header.TransactionSubCode.lower()
22
+ if code in ['aripo industrial design', 'national design']:
23
+ return 'Industrial Design'
24
+ raise Exception('Type "%s" "%s" is not mapped.' % (code, subcode))
25
+
26
+ def translate_status(design):
27
+ status = design.DesignCurrentStatusCode
28
+
29
+ return ipas.translate_status(status)
30
+
31
+
32
+ def get_registration_nb(design, idstatus):
33
+ if design.RegistrationNumber:
34
+ return design.RegistrationNumber
35
+
36
+ return None
37
+
38
+
39
+ def get_expiry_date(design, idstatus):
40
+ return ipas.get_expiry_date(design, idstatus)
41
+
42
+ def get_registration_date(design, idstatus):
43
+ return ipas.get_registration_date(design, idstatus)
44
+
45
+ def is_international(header):
46
+ return False
47
+
48
+ def get_ir_refnum(appnum):
49
+ return appnum
50
+
51
+ def select_earliest_date(publications):
52
+ return ipas.select_earliest_date(publications)
53
+
54
+ def deduplicate_publication_dates(publications):
55
+ return ipas.deduplicate_publication_dates(publications)
56
+
57
+ def deduplicate_classes(classes):
58
+ return ipas.deduplicate_classes(classes)
59
+
60
+ def deduplicate_publications(publications):
61
+ return ipas.deduplicate_publications(publications)
62
+
@@ -0,0 +1,99 @@
1
+ /Transaction
2
+ __/DesignTransactionBody
3
+ ____/TransactionContentDetails
4
+ ______/TransactionCode
5
+ ______/TransactionData
6
+ ________/DesignApplicationDetails
7
+ __________/DesignApplication
8
+ ____________/ApplicantDetails
9
+ ______________/ApplicantKey
10
+ ____________/DesignApplicationDate
11
+ ____________/DesignApplicationLanguageCode
12
+ ____________/DesignApplicationNumber
13
+ ____________/DesignDetails
14
+ ______________/Design
15
+ ________________/ApplicantDetails
16
+ __________________/Applicant
17
+ ____________________/ApplicantAddressBook
18
+ ______________________/FormattedNameAddress
19
+ ________________________/Address
20
+ __________________________/AddressCountryCode
21
+ __________________________/FreeFormatAddress
22
+ ____________________________/FreeFormatAddressLine
23
+ ________________________/Name
24
+ __________________________/FreeFormatName
25
+ ____________________________/FreeFormatNameDetails
26
+ ______________________________/FreeFormatNameLine
27
+ ______________________________/FreeFormatNameLine[@languageCode=en]
28
+ ________________/DesignCurrentStatusCode
29
+ ________________/DesignCurrentStatusDate
30
+ ________________/DesignDescription
31
+ ________________/DesignEventDetails
32
+ __________________/DesignEvent
33
+ ____________________/DesignEventCode
34
+ ____________________/DesignEventDate
35
+ ____________________/OfficeSpecificDesignEventName
36
+ ________________/DesignIdentifier
37
+ ________________/DesignRepresentationSheetDetails
38
+ __________________/DesignRepresentationSheet
39
+ ____________________/RepresentationSheetFilename
40
+ ________________/DesignSpecimenDetails
41
+ __________________/DesignSpecimen
42
+ ____________________/SpecimenDescription
43
+ ____________________/SpecimenDescription[@languageCode=]
44
+ ____________________/SpecimenDescription[@languageCode=en]
45
+ ____________________/SpecimenIdentifier
46
+ ________________/DesignTitle
47
+ ________________/DesignTitle[@languageCode=en]
48
+ ________________/DesignTitle[@sequenceNumber=1]
49
+ ________________/DesignerDetails
50
+ __________________/Designer
51
+ ____________________/DesignerAddressBook
52
+ ______________________/FormattedNameAddress
53
+ ________________________/Address
54
+ __________________________/AddressCountryCode
55
+ __________________________/FreeFormatAddress
56
+ ____________________________/FreeFormatAddressLine
57
+ ________________________/Name
58
+ __________________________/FreeFormatName
59
+ ____________________________/FreeFormatNameDetails
60
+ ______________________________/FreeFormatNameLine
61
+ ______________________________/FreeFormatNameLine[@languageCode=en]
62
+ ________________/ExpiryDate
63
+ ________________/IndicationProductDetails
64
+ __________________/IndicationProduct
65
+ ____________________/ClassDescriptionDetails
66
+ ______________________/ClassDescription
67
+ ________________________/ClassNumber
68
+ ________________________/ProductDescription
69
+ ____________________/ClassificationKindCode
70
+ ____________________/ClassificationVersion
71
+ ________________/NoveltyStatement
72
+ ________________/NoveltyStatement[@languageCode=en]
73
+ ________________/PriorityDetails
74
+ __________________/Priority
75
+ ____________________/PriorityCountryCode
76
+ ____________________/PriorityDate
77
+ ____________________/PriorityNumber
78
+ ________________/PublicationDetails
79
+ __________________/Publication
80
+ ____________________/PublicationDate
81
+ ____________________/PublicationIdentifier
82
+ ________________/RegistrationDate
83
+ ________________/RegistrationNumber
84
+ ________________/RepresentativeDetails
85
+ __________________/Representative
86
+ ____________________/RepresentativeAddressBook
87
+ ______________________/FormattedNameAddress
88
+ ________________________/Address
89
+ __________________________/AddressCountryCode
90
+ __________________________/FreeFormatAddress
91
+ ____________________________/FreeFormatAddressLine
92
+ ________________________/Name
93
+ __________________________/FreeFormatName
94
+ ____________________________/FreeFormatNameDetails
95
+ ______________________________/FreeFormatNameLine
96
+ ______________________________/FreeFormatNameLine[@languageCode=en]
97
+ ____________/RegistrationOfficeCode
98
+ ______/TransactionIdentifier
99
+ ______/TransactionSubCode
@@ -0,0 +1 @@
1
+ {% include "ipas/template.yml" %}
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ #KH/D/2019/00125
5
+ appnum_mask = 'KH/D/\\d*/(\\d*)'
@@ -0,0 +1,63 @@
1
+ # standard gbd definitions
2
+ import gbdtransformation.designs.ipas.filters as ipas
3
+
4
+
5
+ # namespaces defined in XML and to be ignored in procecssing
6
+ ignore_namespace = [
7
+ 'http://www.wipo.int/standards/XMLSchema/designs',
8
+ 'http://www.wipo.int/standards/XMLSchema/wo-designs'
9
+ ]
10
+ def get_appdate(appdate, appnum):
11
+ return appnum.split('/')[-2]
12
+
13
+ def get_designs_count(design, header):
14
+ return '1'
15
+
16
+ def get_designs_pos(design, header):
17
+ return '1'
18
+
19
+ def translate_kind(desgin, header):
20
+ code = header.TransactionCode.lower()
21
+ subcode = header.TransactionSubCode.lower()
22
+ if code == 'industrial design':
23
+ return 'Industrial Design'
24
+ raise Exception('Type "%s" "%s" is not mapped.' % (code, subcode))
25
+
26
+ def translate_status(design):
27
+ status = design.DesignCurrentStatusCode
28
+
29
+
30
+ return ipas.translate_status(status)
31
+
32
+
33
+ def get_registration_nb(design, idstatus):
34
+ if design.RegistrationNumber:
35
+ return design.RegistrationNumber
36
+
37
+ return None
38
+
39
+
40
+ def get_expiry_date(design, idstatus):
41
+ return ipas.get_expiry_date(design, idstatus)
42
+
43
+ def get_registration_date(design, idstatus):
44
+ return ipas.get_registration_date(design, idstatus)
45
+
46
+ def is_international(header):
47
+ return False
48
+
49
+ def get_ir_refnum(appnum):
50
+ return appnum
51
+
52
+ def select_earliest_date(publications):
53
+ return ipas.select_earliest_date(publications)
54
+
55
+ def deduplicate_publication_dates(publications):
56
+ return ipas.deduplicate_publication_dates(publications)
57
+
58
+ def deduplicate_classes(classes):
59
+ return ipas.deduplicate_classes(classes)
60
+
61
+ def deduplicate_publications(publications):
62
+ return ipas.deduplicate_publications(publications)
63
+