wipo-gbd-transformation 1.1.49__py3-none-any.whl → 1.1.51__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.
- gbdtransformation/brands/istm/filters.py +22 -14
- gbdtransformation/brands/sgtm/filters.py +1 -1
- gbdtransformation/brands/sgtm/template.trademark.yml +1 -1
- gbdtransformation/designs/__init__.py +2 -3
- gbdtransformation/designs/bnid/__init__.py +5 -0
- gbdtransformation/designs/bnid/filters.py +49 -0
- gbdtransformation/designs/bnid/schema +80 -0
- gbdtransformation/designs/bnid/template.yml +1 -0
- gbdtransformation/designs/bwid/__init__.py +6 -0
- gbdtransformation/designs/bwid/filters.py +52 -0
- gbdtransformation/designs/bwid/schema +101 -0
- gbdtransformation/designs/bwid/template.yml +1 -0
- gbdtransformation/designs/crid/__init__.py +5 -0
- gbdtransformation/designs/crid/filters.py +50 -0
- gbdtransformation/designs/crid/schema +94 -0
- gbdtransformation/designs/crid/template.yml +1 -0
- gbdtransformation/designs/cuid/__init__.py +5 -0
- gbdtransformation/designs/cuid/filters.py +47 -0
- gbdtransformation/designs/cuid/schema +98 -0
- gbdtransformation/designs/cuid/template.yml +1 -0
- gbdtransformation/designs/egid/__init__.py +5 -0
- gbdtransformation/designs/egid/filters.py +49 -0
- gbdtransformation/designs/egid/schema +82 -0
- gbdtransformation/designs/egid/template.yml +1 -0
- gbdtransformation/designs/filters.py +13 -1
- gbdtransformation/designs/idid/__init__.py +5 -0
- gbdtransformation/designs/idid/filters.py +54 -0
- gbdtransformation/designs/idid/schema +102 -0
- gbdtransformation/designs/idid/template.yml +1 -0
- gbdtransformation/designs/ipas/filters.py +1 -1
- gbdtransformation/designs/ipas/template.yml +85 -76
- gbdtransformation/designs/joid/__init__.py +6 -0
- gbdtransformation/designs/joid/filters.py +49 -0
- gbdtransformation/designs/joid/schema +97 -0
- gbdtransformation/designs/joid/template.yml +1 -0
- gbdtransformation/designs/keid/__init__.py +5 -0
- gbdtransformation/designs/keid/filters.py +49 -0
- gbdtransformation/designs/keid/schema +99 -0
- gbdtransformation/designs/keid/template.yml +1 -0
- gbdtransformation/designs/khid/__init__.py +5 -0
- gbdtransformation/designs/khid/filters.py +50 -0
- gbdtransformation/designs/khid/schema +100 -0
- gbdtransformation/designs/khid/template.yml +1 -0
- gbdtransformation/designs/laid/__init__.py +5 -0
- gbdtransformation/designs/laid/filters.py +49 -0
- gbdtransformation/designs/laid/schema +94 -0
- gbdtransformation/designs/laid/template.yml +1 -0
- gbdtransformation/designs/mnid/__init__.py +6 -0
- gbdtransformation/designs/mnid/filters.py +49 -0
- gbdtransformation/designs/mnid/schema +98 -0
- gbdtransformation/designs/mnid/template.yml +1 -0
- gbdtransformation/designs/myid/__init__.py +5 -0
- gbdtransformation/designs/myid/filters.py +48 -0
- gbdtransformation/designs/myid/schema +95 -0
- gbdtransformation/designs/myid/template.yml +1 -0
- gbdtransformation/designs/phid/__init__.py +5 -0
- gbdtransformation/designs/phid/filters.py +58 -0
- gbdtransformation/designs/phid/schema +95 -0
- gbdtransformation/designs/phid/template.yml +1 -0
- gbdtransformation/designs/sgid/__init__.py +6 -0
- gbdtransformation/designs/sgid/filters.py +53 -0
- gbdtransformation/designs/sgid/schema +115 -0
- gbdtransformation/designs/sgid/template.yml +1 -0
- gbdtransformation/designs/thid/__init__.py +4 -0
- gbdtransformation/designs/thid/filters.py +52 -0
- gbdtransformation/designs/thid/schema +98 -0
- gbdtransformation/designs/thid/template.yml +1 -0
- gbdtransformation/designs/tnid/__init__.py +5 -0
- gbdtransformation/designs/tnid/filters.py +54 -0
- gbdtransformation/designs/tnid/schema +96 -0
- gbdtransformation/designs/tnid/template.yml +1 -0
- gbdtransformation/designs/woid/__init__.py +2 -0
- gbdtransformation/designs/woid/filters.py +342 -0
- gbdtransformation/designs/woid/schema +592 -0
- gbdtransformation/designs/woid/template.yml +342 -0
- gbdtransformation/designs/xxid/template.yml +211 -123
- gbdtransformation/execs.py +9 -3
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/METADATA +6 -2
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/RECORD +83 -16
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/WHEEL +1 -1
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/entry_points.txt +1 -0
- gbdtransformation/.DS_Store +0 -0
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/LICENSE.md +0 -0
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.51.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
{% from 'navigation.tmpl' import match %}
|
|
2
|
+
|
|
3
|
+
type: 'DESIGN'
|
|
4
|
+
subtype: {{ HagueExpressTransaction | detectSealedDepositIndicator }}
|
|
5
|
+
designGrouping: 'MULTIPLE'
|
|
6
|
+
designsCount: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignTotalQuantity }}
|
|
7
|
+
kind:
|
|
8
|
+
- 'Industrial Design'
|
|
9
|
+
registrationOfficeCode: 'WO'
|
|
10
|
+
designatedCountries:
|
|
11
|
+
{% call(designation) match('DesignatedCountry', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignatedCountryBag) %}
|
|
12
|
+
- {{ designation.DesignatedCountryCode }}
|
|
13
|
+
{% endcall %}
|
|
14
|
+
|
|
15
|
+
{% set ApplicationNumber = HagueExpressTransaction.HagueCurrent.HagueRegistration.ApplicationNumber.ApplicationNumberText %}
|
|
16
|
+
|
|
17
|
+
# in Hague records, there is no application date, sometimes an international filing date, otherwise just the internatioal registration date
|
|
18
|
+
{% set filingDate = HagueExpressTransaction.HagueCurrent.HagueRegistration.InternationalFilingDate %}
|
|
19
|
+
{% set registrationDate = HagueExpressTransaction.HagueCurrent.HagueRegistration.InternationalRegistrationDate %}
|
|
20
|
+
{% set appdate = filingDate if filingDate else registrationDate %}
|
|
21
|
+
|
|
22
|
+
# can be deduced from appnum given office cc and (optional) appdate
|
|
23
|
+
# note: we pass registration date when we don't have application or filing date, not rare with with Hague records
|
|
24
|
+
st13: {{ ApplicationNumber | st13('WO', 0, appdate=appdate) }}
|
|
25
|
+
|
|
26
|
+
applicationNumber: {{ ApplicationNumber }}
|
|
27
|
+
|
|
28
|
+
# assuming application date is the same as filing date (valid with Hague data)
|
|
29
|
+
applicationDate: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.InternationalFilingDate }}
|
|
30
|
+
|
|
31
|
+
# some collections have registration number
|
|
32
|
+
# equals application number when registered
|
|
33
|
+
registrationNumber: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.InternationalRegistrationNumber }}
|
|
34
|
+
# some collections we can guess registration date
|
|
35
|
+
# from event list
|
|
36
|
+
registrationDate: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.InternationalRegistrationDate }}
|
|
37
|
+
publicationDate: {{ HagueExpressTransaction.HagueHistory[0].PublicationDate }}
|
|
38
|
+
|
|
39
|
+
# In Hague, default deferment period is 30 months after priority date or application date,
|
|
40
|
+
# but it can be lower for some Hague contracting parties, so deferment expiry date is a good
|
|
41
|
+
# way to give this information, rather than period
|
|
42
|
+
defermentExpiryDate: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DefermentExpiryDate }}
|
|
43
|
+
|
|
44
|
+
# a safety fix for expiry date not propagate to current
|
|
45
|
+
{% set hagueHistories = HagueExpressTransaction.HagueHistory %}
|
|
46
|
+
|
|
47
|
+
applicationLanguageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
48
|
+
|
|
49
|
+
# include fix of expiry date not updated in the current
|
|
50
|
+
# expiry dates should normally be at the level of design, not whole application, because
|
|
51
|
+
# renewals are applied to affected designs, but at current level it would mean the latest expiry date of
|
|
52
|
+
# at least one design of the application
|
|
53
|
+
expiryDate: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.ExpiryDate | getExpiryDate(hagueHistories) }}
|
|
54
|
+
|
|
55
|
+
reference:
|
|
56
|
+
# officeReferenceIdentifier in Hague ST96 schema
|
|
57
|
+
office: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.OfficeReferenceIdentifier }}
|
|
58
|
+
|
|
59
|
+
applicants:
|
|
60
|
+
{% call(holder) match('Holder', HagueExpressTransaction.HagueCurrent.HagueRegistration.HolderBag) %}
|
|
61
|
+
- identifier:
|
|
62
|
+
|
|
63
|
+
{% if holder.Contact.Name.PersonName %}
|
|
64
|
+
kind: 'person'
|
|
65
|
+
fullName:
|
|
66
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
67
|
+
text: {{ holder.Contact.Name.PersonName.PersonStructuredName | build_person_name() }}
|
|
68
|
+
firstName:
|
|
69
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(holder.Contact.Name.PersonName.PersonStructuredName.FirstName) }}
|
|
70
|
+
text: {{ holder.Contact.Name.PersonName.PersonStructuredName.FirstName }}
|
|
71
|
+
lastName:
|
|
72
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(holder.Contact.Name.PersonName.PersonStructuredName.LastName) }}
|
|
73
|
+
text: {{ holder.Contact.Name.PersonName.PersonStructuredName.LastName }}
|
|
74
|
+
middleName:
|
|
75
|
+
- languageCode:
|
|
76
|
+
text:
|
|
77
|
+
{% endif %}
|
|
78
|
+
|
|
79
|
+
{% if holder.Contact.Name.OrganizationName %}
|
|
80
|
+
kind: 'organization'
|
|
81
|
+
fullName:
|
|
82
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
83
|
+
text: {{ holder.Contact.Name.OrganizationName.OrganizationStandardName }}
|
|
84
|
+
{% endif %}
|
|
85
|
+
fullAddress:
|
|
86
|
+
{% call(postalAddress) match('PostalAddress', holder.Contact.PostalAddressBag) %}
|
|
87
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
88
|
+
text: {{ postalAddress.PostalStructuredAddress | format_complete_address }}
|
|
89
|
+
addressLines: {{ postalAddress.PostalStructuredAddress.AddressLineText | format_address }}
|
|
90
|
+
cityName: {{ postalAddress.PostalStructuredAddress.CityName }}
|
|
91
|
+
geographicRegionName: {{ postalAddress.PostalStructuredAddress.GeographicRegionName }}
|
|
92
|
+
postalCode: {{ postalAddress.PostalStructuredAddress.PostalCode }}
|
|
93
|
+
countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
|
|
94
|
+
{% endcall %}
|
|
95
|
+
# new, addition
|
|
96
|
+
entitlement:
|
|
97
|
+
entitlementNationalityCode: {{ holder.Entitlement.EntitlementNationalityCode }}
|
|
98
|
+
entitlementEstablishment: {{ holder.Entitlement.EntitlementEstablishment.EntitlementEstablishmentCode }}
|
|
99
|
+
entitlementDomiciled: {{ holder.Entitlement.EntitlementDomiciled.EntitlementDomiciledCode }}
|
|
100
|
+
{% endcall %}
|
|
101
|
+
|
|
102
|
+
representatives:
|
|
103
|
+
{% call(representative) match('Representative', HagueExpressTransaction.HagueCurrent.HagueRegistration.RepresentativeBag) %}
|
|
104
|
+
- identifier:
|
|
105
|
+
{% if representative.Contact.Name.PersonName %}
|
|
106
|
+
kind: 'person'
|
|
107
|
+
fullName:
|
|
108
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
109
|
+
text: {{ representative.Contact.Name.PersonName.PersonStructuredName | build_person_name() }}
|
|
110
|
+
firstName:
|
|
111
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(representative.Contact.Name.PersonName.PersonStructuredName.FirstName) }}
|
|
112
|
+
text: {{ representative.Contact.Name.PersonName.PersonStructuredName.FirstName }}
|
|
113
|
+
lastName:
|
|
114
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(representative.Contact.Name.PersonName.PersonStructuredName.LastName) }}
|
|
115
|
+
text: {{ representative.Contact.Name.PersonName.PersonStructuredName.LastName }}
|
|
116
|
+
middleName:
|
|
117
|
+
- languageCode:
|
|
118
|
+
text:
|
|
119
|
+
{% endif %}
|
|
120
|
+
|
|
121
|
+
{% if representative.Contact.Name.OrganizationName %}
|
|
122
|
+
kind: 'organization'
|
|
123
|
+
fullName:
|
|
124
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
125
|
+
text: {{ representative.Contact.Name.OrganizationName.OrganizationStandardName }}
|
|
126
|
+
{% endif %}
|
|
127
|
+
fullAddress:
|
|
128
|
+
{% call(postalAddress) match('PostalAddress', representative.Contact.PostalAddressBag) %}
|
|
129
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
130
|
+
text: {{ postalAddress.PostalStructuredAddress | format_complete_address }}
|
|
131
|
+
addressLines: {{ postalAddress.PostalStructuredAddress.AddressLineText | format_address }}
|
|
132
|
+
cityName: {{ postalAddress.PostalStructuredAddress.CityName }}
|
|
133
|
+
geographicRegionName: {{ postalAddress.PostalStructuredAddress.GeographicRegionName }}
|
|
134
|
+
countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
|
|
135
|
+
postalCode: {{ postalAddress.PostalStructuredAddress.PostalCode }}
|
|
136
|
+
{% endcall %}
|
|
137
|
+
{% endcall %}
|
|
138
|
+
|
|
139
|
+
designClaim:
|
|
140
|
+
# updated for supporting Hague data
|
|
141
|
+
{% if HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignClaim.DesignClaimTextBag %}
|
|
142
|
+
claims:
|
|
143
|
+
{% call(designClaimText) match('DesignClaimText', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignClaim.DesignClaimTextBag) %}
|
|
144
|
+
- languageCode: {{ designClaimText._languageCode }}
|
|
145
|
+
claim: {{ designClaimText.__value }}
|
|
146
|
+
{% endcall %}
|
|
147
|
+
designatedCountries:
|
|
148
|
+
{% call(claimDesignation) match('DesignatedCountry', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignClaim.DesignatedCountryBag) %}
|
|
149
|
+
- {{ claimDesignation.DesignatedCountryCode }}
|
|
150
|
+
{% endcall %}
|
|
151
|
+
- {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignClaim.DesignatedCountryCode }}
|
|
152
|
+
affectedDesigns:
|
|
153
|
+
allDesignsIndicator: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignClaim.AffectedDesign.AllDesignsIndicator }}
|
|
154
|
+
{% else %}
|
|
155
|
+
claims:
|
|
156
|
+
{% call(designClaim) match('DesignClaim', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag) %}
|
|
157
|
+
- languageCode: {{ designClaim._languageCode }}
|
|
158
|
+
claim: {{ designClaim.__value }}
|
|
159
|
+
{% endcall %}
|
|
160
|
+
designatedCountries:
|
|
161
|
+
{% call(claimDesignation) match('DesignatedCountry', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignatedCountryBag) %}
|
|
162
|
+
- {{ claimDesignation.DesignatedCountryCode }}
|
|
163
|
+
{% endcall %}
|
|
164
|
+
- {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.DesignatedCountryCode }}
|
|
165
|
+
# Although affectedDesigns is present under DesignClaim, it is always applied to all the designs in our data (always AllDesignsIndicator=True)
|
|
166
|
+
# so designClaim can stay at the level of the application, and not under design
|
|
167
|
+
affectedDesigns:
|
|
168
|
+
allDesignsIndicator: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignClaimBag.AffectedDesign.AllDesignsIndicator }}
|
|
169
|
+
{% endif %}
|
|
170
|
+
|
|
171
|
+
businessEntityStatusClaim:
|
|
172
|
+
{% if HagueExpressTransaction.HagueCurrent.HagueRegistration.BusinessEntityStatusCategory %}
|
|
173
|
+
- BusinessEntityStatusCategory: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.BusinessEntityStatusCategory }}
|
|
174
|
+
{% endif %}
|
|
175
|
+
{% if HagueExpressTransaction.HagueHistory[0].HagueRegistration.BusinessEntityStatusClaimBag %}
|
|
176
|
+
{% call(businessEntity) match('BusinessEntityStatusClaim', HagueExpressTransaction.HagueHistory[0].HagueRegistration.BusinessEntityStatusClaimBag) %}
|
|
177
|
+
- BusinessEntityStatusCategory: {{ businessEntity.BusinessEntityStatusCategory }}
|
|
178
|
+
DesignatedCountryCode: {{ businessEntity.DesignatedCountryCode }}
|
|
179
|
+
{% endcall %}
|
|
180
|
+
{% endif %}
|
|
181
|
+
|
|
182
|
+
designs:
|
|
183
|
+
{% call(design) match('HagueDesign', HagueExpressTransaction.HagueCurrent.HagueRegistration.HagueDesignBag) %}
|
|
184
|
+
|
|
185
|
+
- designPos: {{ design.DesignIdentifier }}
|
|
186
|
+
|
|
187
|
+
# status as is in the document
|
|
188
|
+
officeStatus: # afaik Hague data do not provide an explicit status
|
|
189
|
+
# status as translated to gbdFormat
|
|
190
|
+
gbdStatus: {{ registrationDate | getGbdStatus(expiryDate, hagueHistories, design.DesignIdentifier) }}
|
|
191
|
+
#(Ended|Expired|Pending|Registered|Unknown)
|
|
192
|
+
# in the case of Hague, it would be the latest of registration date or renewal dates
|
|
193
|
+
statusDate: {{ registrationDate | getOfficeStatusDate(expiryDate, hagueHistories, design.DesignIdentifier) }}
|
|
194
|
+
|
|
195
|
+
productIndication:
|
|
196
|
+
{% call(productText) match('ProductDescriptionText', design.ProductDescriptionTextBag) %}
|
|
197
|
+
- languageCode: {{ productText._languageCode }}
|
|
198
|
+
text: {{ productText.__value }}
|
|
199
|
+
{% endcall %}
|
|
200
|
+
|
|
201
|
+
designDescription:
|
|
202
|
+
{% call(designText) match('DesignDescriptionText', design.DesignDescriptionTextBag) %}
|
|
203
|
+
- languageCode: {{ designText._languageCode }}
|
|
204
|
+
text: {{ designText.__value }}
|
|
205
|
+
{% endcall %}
|
|
206
|
+
|
|
207
|
+
designImageDetails:
|
|
208
|
+
# Hague image substructures are not sorted, ViewIdentifier must be used to get the image rank
|
|
209
|
+
{% call(view) match('View', design.ViewBag) %}
|
|
210
|
+
- name: {{ view.FileName }}
|
|
211
|
+
rank: {{ view.ViewIdentifier }}
|
|
212
|
+
# type is a useful information to normalise the kind of view corresponding to this picture
|
|
213
|
+
type: {{ view.ViewTypeCategory }}
|
|
214
|
+
# new, more than one legend per picture, in 3 different languages
|
|
215
|
+
legends:
|
|
216
|
+
{% call(viewTypeText) match('ViewTypeText', view.ViewTypeTextBag) %}
|
|
217
|
+
- languageCode: {{ viewTypeText._languageCode }}
|
|
218
|
+
legend: {{ viewTypeText.__value }}
|
|
219
|
+
{% endcall %}
|
|
220
|
+
{% endcall %}
|
|
221
|
+
|
|
222
|
+
designer:
|
|
223
|
+
{% call(designer) match('Designer', design.DesignerBag) %}
|
|
224
|
+
- identifier:
|
|
225
|
+
{% if designer.Contact.Name.PersonName %}
|
|
226
|
+
kind: 'person'
|
|
227
|
+
fullName:
|
|
228
|
+
- languageCode:
|
|
229
|
+
text: {{ designer.Contact.Name.PersonName.PersonStructuredName | build_person_name() }}
|
|
230
|
+
firstName:
|
|
231
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(designer.Contact.Name.PersonName.PersonStructuredName.FirstName) }}
|
|
232
|
+
text: {{ designer.Contact.Name.PersonName.PersonStructuredName.FirstName }}
|
|
233
|
+
lastName:
|
|
234
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode | should_display_language(designer.Contact.Name.PersonName.PersonStructuredName.LastName) }}
|
|
235
|
+
text: {{ designer.Contact.Name.PersonName.PersonStructuredName.LastName }}
|
|
236
|
+
middleName:
|
|
237
|
+
- languageCode:
|
|
238
|
+
text:
|
|
239
|
+
{% endif %}
|
|
240
|
+
{% if designer.Contact.Name.OrganizationName %}
|
|
241
|
+
kind: 'organization'
|
|
242
|
+
fullName:
|
|
243
|
+
- languageCode:
|
|
244
|
+
text: {{ designer.Contact.Name.OrganizationName.OrganizationStandardName }}
|
|
245
|
+
{% endif %}
|
|
246
|
+
fullAddress:
|
|
247
|
+
{% call(postalAddress) match('PostalAddress', designer.Contact.PostalAddressBag) %}
|
|
248
|
+
- languageCode: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FilingLanguageCode }}
|
|
249
|
+
text: {{ postalAddress.PostalStructuredAddress | format_complete_address }}
|
|
250
|
+
addressLines: {{ postalAddress.PostalStructuredAddress.AddressLineText | format_address }}
|
|
251
|
+
cityName: {{ postalAddress.PostalStructuredAddress.CityName }}
|
|
252
|
+
geographicRegionName: {{ postalAddress.PostalStructuredAddress.GeographicRegionName }}
|
|
253
|
+
countryCode: {{ postalAddress.PostalStructuredAddress.CountryCode }}
|
|
254
|
+
postalCode: {{ postalAddress.PostalStructuredAddress.PostalCode }}
|
|
255
|
+
{% endcall %}
|
|
256
|
+
{% endcall %}
|
|
257
|
+
|
|
258
|
+
productIndicationClasses:
|
|
259
|
+
kind: "Locarno"
|
|
260
|
+
version: {{ design.LocarnoClassificationBag.LocarnoClassificationEdition }}
|
|
261
|
+
classes:
|
|
262
|
+
{% call(classification) match('LocarnoClassification', design.LocarnoClassificationBag) %}
|
|
263
|
+
{% call(subClassification) match('LocarnoSubclass', classification.LocarnoSubclassBag) %}
|
|
264
|
+
- code: {{ (classification.LocarnoClass ~ '-' ~ subClassification) | pad_locarno}}
|
|
265
|
+
{% endcall %}
|
|
266
|
+
{% endcall %}
|
|
267
|
+
|
|
268
|
+
# unfortunately, ExhibitionPriorityBag present in the registratioon history event is not propagated to the current,
|
|
269
|
+
# so we need a fix
|
|
270
|
+
{% call(design2) match('HagueDesign', HagueExpressTransaction.HagueHistory[0].HagueRegistration.HagueDesignBag) %}
|
|
271
|
+
{% if design.DesignIdentifier == design2.DesignIdentifier %}
|
|
272
|
+
exhibition:
|
|
273
|
+
{% call(exhibition) match('ExhibitionPriority', design2.ExhibitionPriorityBag) %}
|
|
274
|
+
- date: {{ exhibition.ExhibitionDate }}
|
|
275
|
+
name: {{ exhibition.ExhibitionName | replace_quotes() }}
|
|
276
|
+
location: {{ exhibition.ExhibitionCityName }}
|
|
277
|
+
{% endcall %}
|
|
278
|
+
{% endif%}
|
|
279
|
+
{% endcall %}
|
|
280
|
+
|
|
281
|
+
priorities:
|
|
282
|
+
{% call(priority) match('Priority', design.PriorityBag) %}
|
|
283
|
+
- countryCode: {{ priority.PriorityCountryCode }}
|
|
284
|
+
number: {{ priority.ApplicationNumber.ApplicationNumberText }}
|
|
285
|
+
date: {{ priority.PriorityApplicationFilingDate }}
|
|
286
|
+
# the following seems Hague specific
|
|
287
|
+
DASAccessCode: {{ priority.DASAccessCode }}
|
|
288
|
+
{% endcall %}
|
|
289
|
+
|
|
290
|
+
# only Hague, but attached to individual design
|
|
291
|
+
exceptionLackNoveltyDeclaration:
|
|
292
|
+
{% call(lackNoveltyDeclaration) match('ExceptionLackNoveltyDeclaration', design.ExceptionLackNoveltyDeclarationBag) %}
|
|
293
|
+
{% call(designation) match('DesignatedCountry', lackNoveltyDeclaration.DesignatedCountryBag) %}
|
|
294
|
+
- country: {{ designation.DesignatedCountryCode }}
|
|
295
|
+
legalBasis: {{ designation.HagueAgreementActCategory | cleanHagueAgreementActCategory() }}
|
|
296
|
+
{% endcall %}
|
|
297
|
+
{% endcall %}
|
|
298
|
+
|
|
299
|
+
# only Hague, but attached to individual design
|
|
300
|
+
principalDesignRelations:
|
|
301
|
+
{% call(principalDesignRelation) match('PrincipalDesignRelation', design.PrincipalDesignRelationBag) %}
|
|
302
|
+
|
|
303
|
+
- principalDesignCategory: {{ principalDesignRelation.PrincipalDesignCategory }}
|
|
304
|
+
documentIdentifier: {{ principalDesignRelation.DocumentIdentifier }}
|
|
305
|
+
principalDesignReference: {{ principalDesignRelation.PrincipalDesignReference }}
|
|
306
|
+
designatedCountries:
|
|
307
|
+
{% call(designation) match('DesignatedCountry', principalDesignRelation.DesignatedCountryBag) %}
|
|
308
|
+
- country: {{ designation.DesignatedCountryCode }}
|
|
309
|
+
legalBasis: {{ designation.HagueAgreementActCategory | cleanHagueAgreementActCategory() }}
|
|
310
|
+
{% endcall %}
|
|
311
|
+
|
|
312
|
+
{% endcall %}
|
|
313
|
+
|
|
314
|
+
{% endcall %}
|
|
315
|
+
|
|
316
|
+
# here goes extra information that is office specific and that is pertinent for us to retain.
|
|
317
|
+
extra:
|
|
318
|
+
feeCalculationDate: {{ HagueExpressTransaction.HagueCurrent.HagueRegistration.FeeCalculationDate }}
|
|
319
|
+
|
|
320
|
+
fullyDesignatedCountries:
|
|
321
|
+
{% call(designation) match('DesignatedCountry', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignatedCountryBag) %}
|
|
322
|
+
# new, replace simple country field
|
|
323
|
+
- country: {{ designation.DesignatedCountryCode }}
|
|
324
|
+
legalBasis: {{ designation.HagueAgreementActCategory | cleanHagueAgreementActCategory() }}
|
|
325
|
+
{% endcall %}
|
|
326
|
+
|
|
327
|
+
statusByCountry:
|
|
328
|
+
# list the status for designated country when known, for each design
|
|
329
|
+
designs:
|
|
330
|
+
{% call(design) match('HagueDesign', HagueExpressTransaction.HagueCurrent.HagueRegistration.HagueDesignBag) %}
|
|
331
|
+
|
|
332
|
+
- designPos: {{ design.DesignIdentifier }}
|
|
333
|
+
status:
|
|
334
|
+
{% call(designation) match('DesignatedCountry', HagueExpressTransaction.HagueCurrent.HagueRegistration.DesignatedCountryBag) %}
|
|
335
|
+
- country: {{ designation.DesignatedCountryCode }}
|
|
336
|
+
# status as translated to gbdFormat (Ended|Expired|Pending|Registered|Unknown)
|
|
337
|
+
gbdStatus: {{ registrationDate | getGbdStatus(expiryDate, hagueHistories, design.DesignIdentifier, designation.DesignatedCountryCode) }}
|
|
338
|
+
statusDate: {{ registrationDate | getOfficeStatusDate(expiryDate, hagueHistories, design.DesignIdentifier, designation.DesignatedCountryCode) }}
|
|
339
|
+
{% endcall %}
|
|
340
|
+
|
|
341
|
+
{% endcall %}
|
|
342
|
+
|
|
@@ -1,145 +1,233 @@
|
|
|
1
1
|
{% from 'navigation.tmpl' import match %}
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# dates can be converted if not matching expected format
|
|
25
|
-
applicationDate: # ex: {{ Design.ApplicationDate | convertdate('%Y%m%d') }}
|
|
26
|
-
|
|
27
|
-
# some collections have registration number
|
|
28
|
-
# equals application number when registered
|
|
29
|
-
registrationNumber:
|
|
30
|
-
# some collections we can guess registration date
|
|
31
|
-
# from event list
|
|
32
|
-
registrationDate:
|
|
33
|
-
publicationDate:
|
|
34
|
-
effectiveDate:
|
|
35
|
-
defermentPeriod:
|
|
36
|
-
expiryDate:
|
|
37
|
-
|
|
38
|
-
applicationLanguageCode:
|
|
39
|
-
# rarely passed
|
|
40
|
-
secondLanguageCode:
|
|
41
|
-
|
|
42
|
-
# status as is in the document
|
|
43
|
-
officeStatus:
|
|
44
|
-
# status as translated to gbdFormat
|
|
45
|
-
gbdStatus: # (Ended|Expired|Pending|Registered|Unknown)
|
|
46
|
-
# can also be the date of the last event in markevents if given
|
|
47
|
-
statusDate:
|
|
48
|
-
|
|
49
|
-
designDescription: #Init 57
|
|
50
|
-
- languageCode:
|
|
51
|
-
text:
|
|
3
|
+
type: # DESIGN
|
|
4
|
+
subtype: # (OPEN|SEALED) -INID 27 - SealedDepositIndicator
|
|
5
|
+
designGrouping: # SINGLE|MULTIPLE
|
|
6
|
+
designsCount:
|
|
7
|
+
kind:
|
|
8
|
+
- # INDUSTRIAL DESIGN|DESING PATENT(US)
|
|
9
|
+
registrationOfficeCode:
|
|
10
|
+
designatedCountries:
|
|
11
|
+
- str (CountryCode)
|
|
12
|
+
|
|
13
|
+
# some collections indicate that the application
|
|
14
|
+
# originates from international filing and provide IR number
|
|
15
|
+
referece:
|
|
16
|
+
application:
|
|
17
|
+
- number:
|
|
18
|
+
date:
|
|
19
|
+
office:
|
|
20
|
+
registration:
|
|
21
|
+
- number:
|
|
22
|
+
date:
|
|
23
|
+
office:
|
|
52
24
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
text:
|
|
25
|
+
# rarely passed
|
|
26
|
+
filingPlace:
|
|
56
27
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
legend:
|
|
60
|
-
- string
|
|
61
|
-
|
|
62
|
-
applicants:
|
|
63
|
-
- identifier:
|
|
64
|
-
kind:
|
|
65
|
-
fullName:
|
|
66
|
-
- languageCode:
|
|
67
|
-
text:
|
|
68
|
-
fullAddress:
|
|
69
|
-
- languageCode:
|
|
70
|
-
text:
|
|
71
|
-
countryCode: # sometimes, country name is provided instead
|
|
72
|
-
|
|
73
|
-
representatives:
|
|
74
|
-
- identifier:
|
|
75
|
-
kind:
|
|
76
|
-
fullName:
|
|
77
|
-
- languageCode:
|
|
78
|
-
text:
|
|
79
|
-
fullAddress:
|
|
80
|
-
- languageCode:
|
|
81
|
-
text:
|
|
82
|
-
countryCode:
|
|
28
|
+
# can be deduced from appnum given office cc and (optional) appdate
|
|
29
|
+
st13: # {{ Design.ApplicationNumber | st13('XX', appdate=... }}
|
|
83
30
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
31
|
+
applicationNumber:
|
|
32
|
+
# dates can be converted if not matching expected format
|
|
33
|
+
applicationDate: # ex: {{ Design.ApplicationDate | convertdate('%Y%m%d') }}
|
|
34
|
+
|
|
35
|
+
# some collections have registration number
|
|
36
|
+
# equals application number when registered
|
|
37
|
+
registrationNumber:
|
|
38
|
+
# some collections we can guess registration date
|
|
39
|
+
# from event list
|
|
40
|
+
registrationDate:
|
|
41
|
+
publicationDate:
|
|
42
|
+
effectiveDate:
|
|
43
|
+
defermentExpiryDate:
|
|
44
|
+
expiryDate:
|
|
45
|
+
|
|
46
|
+
applicationLanguageCode:
|
|
47
|
+
# rarely passed
|
|
48
|
+
secondLanguageCode:
|
|
94
49
|
|
|
95
|
-
|
|
50
|
+
|
|
51
|
+
applicants:
|
|
52
|
+
- identifier:
|
|
53
|
+
kind:
|
|
54
|
+
fullName:
|
|
55
|
+
- languageCode:
|
|
56
|
+
text:
|
|
57
|
+
firstName:
|
|
58
|
+
- languageCode:
|
|
59
|
+
text:
|
|
60
|
+
lastName:
|
|
61
|
+
- languageCode:
|
|
62
|
+
text:
|
|
63
|
+
middleName:
|
|
64
|
+
- languageCode:
|
|
65
|
+
text:
|
|
66
|
+
fullAddress:
|
|
67
|
+
- languageCode:
|
|
68
|
+
text:
|
|
69
|
+
cityName:
|
|
70
|
+
geographicRegionName:
|
|
71
|
+
countryCode:
|
|
72
|
+
postalCode:
|
|
73
|
+
countryCode: # sometimes, country name is provided instead
|
|
74
|
+
|
|
75
|
+
representatives:
|
|
76
|
+
- identifier:
|
|
77
|
+
kind:
|
|
96
78
|
fullName:
|
|
97
79
|
- languageCode:
|
|
98
80
|
text:
|
|
81
|
+
firstName:
|
|
82
|
+
- languageCode:
|
|
83
|
+
text:
|
|
84
|
+
lastName:
|
|
85
|
+
- languageCode:
|
|
86
|
+
text:
|
|
87
|
+
middleName:
|
|
88
|
+
- languageCode:
|
|
89
|
+
text:
|
|
99
90
|
fullAddress:
|
|
100
91
|
- languageCode:
|
|
101
92
|
text:
|
|
102
|
-
|
|
93
|
+
cityName:
|
|
94
|
+
geographicRegionName:
|
|
95
|
+
countryCode:
|
|
96
|
+
postalCode:
|
|
97
|
+
countryCode: # sometimes, country name is provided instead
|
|
103
98
|
|
|
104
|
-
productIndicationClasses:
|
|
105
|
-
- kind: Locarno/US/CA/Etc
|
|
106
|
-
version: #mostly
|
|
107
|
-
code:
|
|
108
99
|
|
|
109
|
-
|
|
100
|
+
correspondence:
|
|
101
|
+
fullName:
|
|
102
|
+
- languageCode:
|
|
103
|
+
text:
|
|
104
|
+
firstName:
|
|
105
|
+
- languageCode:
|
|
106
|
+
text:
|
|
107
|
+
lastName:
|
|
108
|
+
- languageCode:
|
|
109
|
+
text:
|
|
110
|
+
middleName:
|
|
111
|
+
- languageCode:
|
|
112
|
+
text:
|
|
113
|
+
fullAddress:
|
|
110
114
|
- languageCode:
|
|
111
115
|
text:
|
|
116
|
+
cityName:
|
|
117
|
+
geographicRegionName:
|
|
118
|
+
countryCode:
|
|
119
|
+
postalCode:
|
|
120
|
+
countryCode: # sometimes, country name is provided instead
|
|
112
121
|
|
|
113
|
-
records:
|
|
114
|
-
- identifier:
|
|
115
|
-
officeKind:
|
|
116
|
-
gbdKind:
|
|
117
|
-
officeStatus:
|
|
118
|
-
gbdStatus:
|
|
119
|
-
statusDate:
|
|
120
|
-
|
|
121
|
-
exhibition:
|
|
122
|
-
- date:
|
|
123
|
-
name:
|
|
124
|
-
location:
|
|
125
|
-
|
|
126
|
-
priorities:
|
|
127
|
-
- countryCode:
|
|
128
|
-
number:
|
|
129
|
-
date:
|
|
130
|
-
comment:
|
|
131
122
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
123
|
+
designClaim:
|
|
124
|
+
claims:
|
|
125
|
+
- languageCode:
|
|
126
|
+
claim:
|
|
127
|
+
designatedCountries:
|
|
128
|
+
- str
|
|
129
|
+
affectedDesigns:
|
|
130
|
+
allDesignsIndicator:
|
|
131
|
+
|
|
132
|
+
businessEntityStatusClaim:
|
|
133
|
+
- BusinessEntityStatusCategory:
|
|
134
|
+
DesignatedCountryCode:
|
|
135
|
+
|
|
136
|
+
designs:
|
|
137
|
+
- designPos:
|
|
138
|
+
# status as is in the document
|
|
139
|
+
officeStatus:
|
|
140
|
+
# status as translated to gbdFormat
|
|
141
|
+
gbdStatus: # (Ended|Expired|Pending|Registered|Unknown)
|
|
142
|
+
# can also be the date of the last event in markevents if given
|
|
143
|
+
statusDate:
|
|
144
|
+
|
|
145
|
+
productIndication:
|
|
146
|
+
- languageCode:
|
|
147
|
+
text:
|
|
136
148
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
149
|
+
designDescription: #Init 57
|
|
150
|
+
- languageCode:
|
|
151
|
+
text:
|
|
152
|
+
|
|
153
|
+
productDisclaimer:
|
|
154
|
+
- languageCode:
|
|
155
|
+
text:
|
|
156
|
+
|
|
157
|
+
designImageDetails:
|
|
158
|
+
- name:
|
|
159
|
+
rank:
|
|
160
|
+
type:
|
|
161
|
+
legends:
|
|
162
|
+
- languageCode:
|
|
163
|
+
legend:
|
|
164
|
+
|
|
165
|
+
designer:
|
|
166
|
+
- identifier:
|
|
167
|
+
kind:
|
|
168
|
+
fullName:
|
|
169
|
+
- languageCode:
|
|
170
|
+
text:
|
|
171
|
+
firstName:
|
|
172
|
+
- languageCode:
|
|
173
|
+
text:
|
|
174
|
+
lastName:
|
|
175
|
+
- languageCode:
|
|
176
|
+
text:
|
|
177
|
+
middleName:
|
|
178
|
+
- languageCode:
|
|
179
|
+
text:
|
|
180
|
+
fullAddress:
|
|
181
|
+
- languageCode:
|
|
182
|
+
text:
|
|
183
|
+
cityName:
|
|
184
|
+
geographicRegionName:
|
|
185
|
+
countryCode:
|
|
186
|
+
postalCode:
|
|
187
|
+
countryCode: # sometimes, country name is provided instead
|
|
188
|
+
|
|
189
|
+
productIndicationClasses:
|
|
190
|
+
- kind: Locarno/US/CA/Etc
|
|
191
|
+
version: #mostly
|
|
192
|
+
classes:
|
|
193
|
+
- code:
|
|
194
|
+
description:
|
|
195
|
+
|
|
196
|
+
exhibition:
|
|
197
|
+
- date:
|
|
198
|
+
name:
|
|
199
|
+
location:
|
|
200
|
+
|
|
201
|
+
priorities:
|
|
202
|
+
- countryCode:
|
|
203
|
+
number:
|
|
204
|
+
date:
|
|
205
|
+
comment:
|
|
206
|
+
DASAccessCode:
|
|
207
|
+
|
|
208
|
+
exceptionLackNoveltyDeclaration:
|
|
209
|
+
- country:
|
|
210
|
+
legalBasis:
|
|
211
|
+
|
|
212
|
+
principalDesignRelations:
|
|
213
|
+
- principalDesignCategory:
|
|
214
|
+
documentIdentifier:
|
|
215
|
+
principalDesignReference:
|
|
216
|
+
designatedCountries:
|
|
217
|
+
- country:
|
|
218
|
+
legalBasis:
|
|
219
|
+
|
|
220
|
+
noveltyStatement:
|
|
221
|
+
- languageCode:
|
|
222
|
+
text:
|
|
223
|
+
|
|
224
|
+
publications:
|
|
225
|
+
- identifier:
|
|
226
|
+
date:
|
|
227
|
+
section:
|
|
228
|
+
|
|
229
|
+
# here goes extra information that is office specific and that is pertinent for us to retain.
|
|
230
|
+
extra:
|
|
143
231
|
|
|
144
232
|
|
|
145
233
|
|