wipo-gbd-transformation 1.1.52__py3-none-any.whl → 1.1.54__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/catm/filters.py +2 -1
- gbdtransformation/brands/catm/template.yml +9 -5
- gbdtransformation/brands/istm/filters.py +1 -2
- gbdtransformation/brands/vctm/__init__.py +5 -0
- gbdtransformation/brands/vctm/filters.py +75 -0
- gbdtransformation/brands/vctm/schema +87 -0
- gbdtransformation/brands/vctm/template.yml +1 -0
- gbdtransformation/brands/vctm/tests/__init__.py +0 -0
- gbdtransformation/brands/vntm/filters.py +1 -3
- gbdtransformation/designs/alid/filters.py +13 -1
- gbdtransformation/designs/bgid/__init__.py +5 -0
- gbdtransformation/designs/bgid/filters.py +91 -0
- gbdtransformation/designs/bgid/schema +106 -0
- gbdtransformation/designs/bgid/template.yml +169 -0
- gbdtransformation/designs/bnid/filters.py +13 -1
- gbdtransformation/designs/bwid/filters.py +13 -1
- gbdtransformation/designs/crid/filters.py +14 -1
- gbdtransformation/designs/cuid/filters.py +14 -1
- gbdtransformation/designs/egid/filters.py +14 -1
- gbdtransformation/designs/filters.py +10 -3
- gbdtransformation/designs/idid/filters.py +14 -1
- gbdtransformation/designs/ipas/filters.py +83 -0
- gbdtransformation/designs/ipas/template.yml +15 -15
- gbdtransformation/designs/joid/filters.py +14 -1
- gbdtransformation/designs/keid/filters.py +14 -1
- gbdtransformation/designs/khid/filters.py +14 -1
- gbdtransformation/designs/laid/filters.py +13 -1
- gbdtransformation/designs/mnid/filters.py +14 -1
- gbdtransformation/designs/myid/filters.py +13 -1
- gbdtransformation/designs/phid/filters.py +13 -1
- gbdtransformation/designs/sgid/filters.py +14 -1
- gbdtransformation/designs/thid/filters.py +13 -1
- gbdtransformation/designs/tnid/filters.py +13 -1
- gbdtransformation/designs/vnid/filters.py +13 -1
- gbdtransformation/designs/woid/filters.py +37 -16
- gbdtransformation/designs/woid/template.yml +177 -3
- gbdtransformation/designs/xxid/template.yml +128 -6
- gbdtransformation/execs.py +3 -2
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/METADATA +3 -3
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/RECORD +45 -35
- wipo_gbd_transformation-1.1.54.dist-info/SOURCES_Stefans-Mac-Studio.local_Sep-18-063455-2024_Conflict.txt +690 -0
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/WHEEL +1 -1
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/LICENSE.md +0 -0
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/entry_points.txt +0 -0
- {wipo_gbd_transformation-1.1.52.dist-info → wipo_gbd_transformation-1.1.54.dist-info}/top_level.txt +0 -0
|
@@ -193,8 +193,9 @@ def translate_feature(feature):
|
|
|
193
193
|
if feature == 'Olfactory': return 'Olfactory'
|
|
194
194
|
if feature == 'Hologram': return 'Hologram'
|
|
195
195
|
if feature == 'Other': return 'Other'
|
|
196
|
+
if feature == 'Design': return 'Combined'
|
|
196
197
|
|
|
197
|
-
|
|
198
|
+
return 'Unknown'
|
|
198
199
|
|
|
199
200
|
def get_mark_names(word_mark_spec):
|
|
200
201
|
verbal = word_mark_spec.MarkVerbalElementText
|
|
@@ -52,17 +52,21 @@ markDescriptionDetails:
|
|
|
52
52
|
text: {{ description.__value }}
|
|
53
53
|
{% endcall %}
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
wordMarkSpecification:
|
|
57
|
-
{%
|
|
57
|
+
{% call(wspec) match('IndexHeadingBag.IndexHeading', trademark) %}
|
|
58
58
|
markVerbalElement:
|
|
59
|
-
- languageCode: {{
|
|
60
|
-
text: {{
|
|
59
|
+
- languageCode: {{ wspec.IndexHeadingText | guess_language(trademark.ApplicationLanguageCode) }}
|
|
60
|
+
text: {{ wspec.IndexHeadingText }}
|
|
61
|
+
{% endcall %}
|
|
62
|
+
{% call(wspec) match('MarkRepresentation.MarkReproduction.WordMarkSpecification', trademark) %}
|
|
63
|
+
{% set (verbal, signif) = wspec | get_mark_names %}
|
|
61
64
|
markSignificantVerbalElement:
|
|
62
65
|
- languageCode: {{ signif | guess_language(trademark.ApplicationLanguageCode) }}
|
|
63
66
|
text: {{ signif }}
|
|
64
67
|
markTransliteration: {{ wspec.MarkTransliteration }}
|
|
65
|
-
{% endcall %}
|
|
68
|
+
{% endcall %}
|
|
69
|
+
|
|
66
70
|
|
|
67
71
|
markImageDetails:
|
|
68
72
|
{% call(img) match('MarkRepresentation.MarkReproduction.MarkImageBag.MarkImage', trademark) %}
|
|
@@ -35,8 +35,7 @@ def translate_status(status, status_is):
|
|
|
35
35
|
if status == 'Expired': return 'Expired'
|
|
36
36
|
if status == 'Ended': return 'Ended'
|
|
37
37
|
if status == 'Registered': return 'Registered'
|
|
38
|
-
|
|
39
|
-
raise Exception('Status "%s/%s" unmapped' % (status, status_is))
|
|
38
|
+
return 'Unknown'
|
|
40
39
|
|
|
41
40
|
|
|
42
41
|
|
|
@@ -0,0 +1,75 @@
|
|
|
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 appnum.split('/')[-2]
|
|
10
|
+
|
|
11
|
+
#return ipas.get_appdate(appdate, appnum)
|
|
12
|
+
|
|
13
|
+
def translate_type(header):
|
|
14
|
+
code = header.TransactionCode
|
|
15
|
+
if code == 'Trademark': return 'TRADEMARK'
|
|
16
|
+
|
|
17
|
+
raise Exception('Type "%s" is not mapped.' % code)
|
|
18
|
+
|
|
19
|
+
def translate_kind(trademark, header):
|
|
20
|
+
subcode = header.TransactionSubCode
|
|
21
|
+
if subcode == 'Trademarks': return ['Individual']
|
|
22
|
+
# it is None for all
|
|
23
|
+
# kind = trademark.KindMark
|
|
24
|
+
|
|
25
|
+
raise Exception('Kind "%s" not mapped.' % subcode)
|
|
26
|
+
|
|
27
|
+
def translate_status(trademark):
|
|
28
|
+
status = trademark.MarkCurrentStatusCode
|
|
29
|
+
"""
|
|
30
|
+
if status == 'Converted': return 'Registered'
|
|
31
|
+
"""
|
|
32
|
+
return ipas.translate_status(status)
|
|
33
|
+
|
|
34
|
+
def translate_feature(trademark):
|
|
35
|
+
feature = trademark.MarkFeature
|
|
36
|
+
if not feature: return 'Undefined'
|
|
37
|
+
|
|
38
|
+
return ipas.translate_feature(feature)
|
|
39
|
+
|
|
40
|
+
def translate_event(event):
|
|
41
|
+
if not event: return 'Unknown'
|
|
42
|
+
|
|
43
|
+
return ipas.translate_event(event)
|
|
44
|
+
|
|
45
|
+
# ---------------------------------------
|
|
46
|
+
# # language code is not accurate for markVerbalElement
|
|
47
|
+
# def guess_language(text, lang, default):
|
|
48
|
+
# if commons.is_latin(text):
|
|
49
|
+
# return 'en'
|
|
50
|
+
# else:
|
|
51
|
+
# return commons.guess_language(text, lang, default)
|
|
52
|
+
|
|
53
|
+
def verbal_lang_map(markVerbalElements, applang=None):
|
|
54
|
+
return ipas.verbal_lang_map(markVerbalElements, applang=applang)
|
|
55
|
+
|
|
56
|
+
def get_registration_nb(trademark, tmstatus):
|
|
57
|
+
if trademark.RegistrationNumber:
|
|
58
|
+
return trademark.RegistrationNumber
|
|
59
|
+
|
|
60
|
+
return None
|
|
61
|
+
|
|
62
|
+
def get_expiry_date(trademark, tmstatus):
|
|
63
|
+
return ipas.get_expiry_date(trademark, tmstatus)
|
|
64
|
+
|
|
65
|
+
def get_registration_date(trademark, tmstatus):
|
|
66
|
+
return ipas.get_registration_date(trademark, tmstatus)
|
|
67
|
+
|
|
68
|
+
def is_international(header):
|
|
69
|
+
return False
|
|
70
|
+
|
|
71
|
+
def get_ir_refnum(appnum):
|
|
72
|
+
return
|
|
73
|
+
|
|
74
|
+
def get_goods_services(goods_services):
|
|
75
|
+
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
|
|
@@ -39,9 +39,7 @@ def translate_status(trademark):
|
|
|
39
39
|
return ipas.translate_status("Expired")
|
|
40
40
|
elif value in ['Từ bỏ', 'Mất hiệu lực']:
|
|
41
41
|
return ipas.translate_status('Ended')
|
|
42
|
-
|
|
43
|
-
return 'Unknown'
|
|
44
|
-
raise Exception('Status "%s" is not mapped.' % value)
|
|
42
|
+
return 'Unknown'
|
|
45
43
|
|
|
46
44
|
def translate_feature(trademark):
|
|
47
45
|
feature = trademark.MarkFeature
|
|
@@ -54,4 +54,16 @@ def is_international(header):
|
|
|
54
54
|
return False
|
|
55
55
|
|
|
56
56
|
def get_ir_refnum(appnum):
|
|
57
|
-
return appnum
|
|
57
|
+
return appnum
|
|
58
|
+
|
|
59
|
+
def select_earliest_date(publications):
|
|
60
|
+
return ipas.select_earliest_date(publications)
|
|
61
|
+
|
|
62
|
+
def deduplicate_publication_dates(publications):
|
|
63
|
+
return ipas.deduplicate_publication_dates(publications)
|
|
64
|
+
|
|
65
|
+
def deduplicate_classes(classes):
|
|
66
|
+
return ipas.deduplicate_classes(classes)
|
|
67
|
+
|
|
68
|
+
def deduplicate_publications(publications):
|
|
69
|
+
return ipas.deduplicate_publications(publications)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# standard gdd definitions
|
|
2
|
+
from gbdtransformation.designs import kinds as std_kinds
|
|
3
|
+
from gbdtransformation.designs import status as std_status
|
|
4
|
+
|
|
5
|
+
# namespaces defined in XML and to be ignored in procecssing
|
|
6
|
+
ignore_namespace = [
|
|
7
|
+
"http://www.oami.europa.eu/schemas/design_Transaction",
|
|
8
|
+
"http://www.oami.europa.eu/schemas/design_IndicationProduct",
|
|
9
|
+
"http://www.oami.europa.eu/schemas/design",
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
def get_appdate(appdate, appnum):
|
|
13
|
+
return appdate
|
|
14
|
+
|
|
15
|
+
def get_designs_count(design, header):
|
|
16
|
+
return '1'
|
|
17
|
+
|
|
18
|
+
def get_designs_pos(design, header):
|
|
19
|
+
return '1'
|
|
20
|
+
|
|
21
|
+
# -------------------------------------------------------------
|
|
22
|
+
# data translation helpers:
|
|
23
|
+
# translate values from office interpretation to gbd equivalent
|
|
24
|
+
# -------------------------------------------------------------
|
|
25
|
+
def translate_kind(desgin, header):
|
|
26
|
+
code = header.TransactionCode.lower()
|
|
27
|
+
if code == 'ds-search design list':
|
|
28
|
+
return 'Industrial Design'
|
|
29
|
+
raise Exception('Type "%s" is not mapped.' % (code))
|
|
30
|
+
|
|
31
|
+
def parseForSt13(appnum, des_ref):
|
|
32
|
+
if des_ref.get('DesignIdentifier'):
|
|
33
|
+
return appnum + '-' + des_ref['DesignIdentifier'].split('-')[1]
|
|
34
|
+
else:
|
|
35
|
+
return appnum + '-' + des_ref['DesignURI'].split('-')[1]
|
|
36
|
+
|
|
37
|
+
def format_address(address):
|
|
38
|
+
return '%s, %s %s' % (address.AddressStreet,
|
|
39
|
+
address.AddressPostcode,
|
|
40
|
+
address.AddressCity)
|
|
41
|
+
|
|
42
|
+
def format_name(name):
|
|
43
|
+
fname = name.FirstName
|
|
44
|
+
lname = name.LastName
|
|
45
|
+
|
|
46
|
+
full_name = [name.FirstName, name.LastName]
|
|
47
|
+
full_name = [f.strip() for f in full_name if f is not None]
|
|
48
|
+
|
|
49
|
+
return ' '.join(full_name)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def is_international(header):
|
|
53
|
+
return False
|
|
54
|
+
|
|
55
|
+
def get_ir_refnum(appnum):
|
|
56
|
+
return appnum
|
|
57
|
+
|
|
58
|
+
def translate_status(desgin):
|
|
59
|
+
if desgin._operationCode == 'Delete':
|
|
60
|
+
return 'Delete'
|
|
61
|
+
|
|
62
|
+
status = desgin.DesignCurrentStatusCode
|
|
63
|
+
|
|
64
|
+
if status in ['Application filed',
|
|
65
|
+
'Application published',
|
|
66
|
+
'Application under examination',
|
|
67
|
+
'Registration pending',
|
|
68
|
+
'Appeal pending',
|
|
69
|
+
'Registration cancellation pending',
|
|
70
|
+
'Filed']:
|
|
71
|
+
return 'Pending'
|
|
72
|
+
|
|
73
|
+
if status in ['Application refused',
|
|
74
|
+
'Application withdrawn',
|
|
75
|
+
'Application opposed',
|
|
76
|
+
'Registration cancelled',
|
|
77
|
+
'Registration surrendered',
|
|
78
|
+
'Design surrendered',
|
|
79
|
+
'Design declared invalid',
|
|
80
|
+
'Lack of effects',
|
|
81
|
+
"Design lapsed",
|
|
82
|
+
'Ended']:
|
|
83
|
+
return 'Ended'
|
|
84
|
+
|
|
85
|
+
if status in ['Registered',
|
|
86
|
+
'Registered and subject to deferment',
|
|
87
|
+
'Registered and fully published']:
|
|
88
|
+
return 'Registered'
|
|
89
|
+
if status in ['Registration expired', 'Expired']: return 'Expired'
|
|
90
|
+
|
|
91
|
+
raise Exception('Status "%s" not mapped.' % status)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/Transaction
|
|
2
|
+
__/DesignTransactionBody
|
|
3
|
+
____/TransactionContentDetails
|
|
4
|
+
______/TransactionCode
|
|
5
|
+
______/TransactionData
|
|
6
|
+
________/DesignDetails
|
|
7
|
+
__________/Design
|
|
8
|
+
____________/ApplicantDetails
|
|
9
|
+
______________/Applicant
|
|
10
|
+
________________/ApplicantAddressBook
|
|
11
|
+
__________________/ContactInformationDetails
|
|
12
|
+
____________________/Email
|
|
13
|
+
____________________/Phone
|
|
14
|
+
____________________/Phone[@phoneKind=Undefined]
|
|
15
|
+
__________________/FormattedNameAddress
|
|
16
|
+
____________________/Address
|
|
17
|
+
______________________/AddressCountryCode
|
|
18
|
+
______________________/FormattedAddress
|
|
19
|
+
________________________/AddressCity
|
|
20
|
+
________________________/AddressCounty
|
|
21
|
+
________________________/AddressPostcode
|
|
22
|
+
________________________/AddressStreet
|
|
23
|
+
____________________/Name
|
|
24
|
+
______________________/FormattedName
|
|
25
|
+
________________________/FirstName
|
|
26
|
+
________________________/LastName
|
|
27
|
+
________________________/MiddleName
|
|
28
|
+
________________________/OrganizationName
|
|
29
|
+
________________/ApplicantIdentifier
|
|
30
|
+
________________/ApplicantNationalityCode
|
|
31
|
+
____________/ApplicationDate
|
|
32
|
+
____________/ApplicationNumber
|
|
33
|
+
____________/ClassDescriptionDetails
|
|
34
|
+
______________/ClassDescription
|
|
35
|
+
________________/ClassNumber
|
|
36
|
+
____________/DefermentExpirationDate
|
|
37
|
+
____________/DesignCurrentStatusCode
|
|
38
|
+
____________/DesignCurrentStatusDate
|
|
39
|
+
____________/DesignIdentifier
|
|
40
|
+
____________/DesignPreferedRepresentation
|
|
41
|
+
______________/ViewURI
|
|
42
|
+
____________/DesignRepresentationSheetDetails
|
|
43
|
+
______________/DesignRepresentationSheet
|
|
44
|
+
________________/ViewDetails
|
|
45
|
+
__________________/View
|
|
46
|
+
____________________/ViewURI
|
|
47
|
+
____________/DesignURI
|
|
48
|
+
____________/DesignerDetails
|
|
49
|
+
______________/Designer
|
|
50
|
+
________________/DesignerAddressBook
|
|
51
|
+
__________________/FormattedNameAddress
|
|
52
|
+
____________________/Name
|
|
53
|
+
______________________/FreeFormatName
|
|
54
|
+
________________________/FreeFormatNameDetails
|
|
55
|
+
__________________________/FreeFormatNameLine
|
|
56
|
+
________________/DesignerIdentifier
|
|
57
|
+
____________/EffectiveDate
|
|
58
|
+
____________/ExpiryDate
|
|
59
|
+
____________/IndicationProductDetails
|
|
60
|
+
______________/IndicationProduct
|
|
61
|
+
______________/IndicationProduct[@languageCode=BG]
|
|
62
|
+
____________/PriorityDetails
|
|
63
|
+
______________/Priority
|
|
64
|
+
________________/PriorityCountryCode
|
|
65
|
+
________________/PriorityDate
|
|
66
|
+
________________/PriorityNumber
|
|
67
|
+
____________/PublicationDate
|
|
68
|
+
____________/RegistrationDate
|
|
69
|
+
____________/RegistrationNumber
|
|
70
|
+
____________/RegistrationOfficeCode
|
|
71
|
+
____________/RepresentativeDetails
|
|
72
|
+
______________/Representative
|
|
73
|
+
________________/RepresentativeAddressBook
|
|
74
|
+
__________________/ContactInformationDetails
|
|
75
|
+
____________________/Email
|
|
76
|
+
____________________/Phone
|
|
77
|
+
____________________/Phone[@phoneKind=Undefined]
|
|
78
|
+
__________________/FormattedNameAddress
|
|
79
|
+
____________________/Address
|
|
80
|
+
______________________/AddressCountryCode
|
|
81
|
+
______________________/FormattedAddress
|
|
82
|
+
________________________/AddressCity
|
|
83
|
+
________________________/AddressCounty
|
|
84
|
+
________________________/AddressPostcode
|
|
85
|
+
________________________/AddressStreet
|
|
86
|
+
____________________/Name
|
|
87
|
+
______________________/FormattedName
|
|
88
|
+
________________________/FirstName
|
|
89
|
+
________________________/LastName
|
|
90
|
+
________________________/MiddleName
|
|
91
|
+
________________________/OrganizationName
|
|
92
|
+
______________________/FreeFormatName
|
|
93
|
+
________________________/FreeFormatNameDetails
|
|
94
|
+
__________________________/FreeFormatNameLine
|
|
95
|
+
________________/RepresentativeIdentifier
|
|
96
|
+
________________/RepresentativeKindCode
|
|
97
|
+
________________/RepresentativeLegalEntity
|
|
98
|
+
________________/RepresentativeNationalityCode
|
|
99
|
+
________________/RepresentativeURI
|
|
100
|
+
__________/Design[@operationCode=Delete]
|
|
101
|
+
__________/Design[@operationCode=Insert]
|
|
102
|
+
______/TransactionIdentifier
|
|
103
|
+
__/TransactionHeader
|
|
104
|
+
____/SenderDetails
|
|
105
|
+
______/RequestProducerDateTime
|
|
106
|
+
________/design EM-DS-Search-DesignList-V1-0.xsd]
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{% from 'navigation.tmpl' import match %}
|
|
2
|
+
|
|
3
|
+
{% call(header) match('DesignTransactionBody.TransactionContentDetails', Transaction) %}
|
|
4
|
+
|
|
5
|
+
{% call(design) match('TransactionData.DesignDetails.Design', header) %}
|
|
6
|
+
{% set design_count = design | get_designs_count(header) %}
|
|
7
|
+
{% set design_pos = design | get_designs_pos(header) %}
|
|
8
|
+
{% set kind = design | translate_kind(header) %}
|
|
9
|
+
type: 'DESIGN'
|
|
10
|
+
subtype: 'OPEN'
|
|
11
|
+
designGrouping: 'MULTIPLE'
|
|
12
|
+
designsCount: {{ design_count }}
|
|
13
|
+
|
|
14
|
+
kind:
|
|
15
|
+
- {{kind}}
|
|
16
|
+
{{ design }}
|
|
17
|
+
registrationOfficeCode: {{ design.RegistrationOfficeCode}}
|
|
18
|
+
designatedCountries:
|
|
19
|
+
- BG
|
|
20
|
+
reference:
|
|
21
|
+
{% if header | is_international %}
|
|
22
|
+
registration:
|
|
23
|
+
- number: {{ design.ApplicationNumber | get_ir_refnum }}
|
|
24
|
+
office: WO
|
|
25
|
+
{% endif %}
|
|
26
|
+
{% if not kind == 'Industrial Design' %}
|
|
27
|
+
registration:
|
|
28
|
+
- number: {{ design.RegistrationNumber }}
|
|
29
|
+
{% endif %}
|
|
30
|
+
|
|
31
|
+
{% set idstatus = design | translate_status %}
|
|
32
|
+
{% set appdate = design.ApplicationDate | get_appdate(design.ApplicationNumber) %}
|
|
33
|
+
|
|
34
|
+
st13: {{ design.ApplicationNumber | parseForSt13(design) | st13(design.RegistrationOfficeCode, design_pos, appdate=appdate) }}
|
|
35
|
+
|
|
36
|
+
applicationNumber: {{ design.ApplicationNumber }}
|
|
37
|
+
applicationDate: {{ design.ApplicationDate }}
|
|
38
|
+
registrationNumber: {{ design.RegistrationNumber }}
|
|
39
|
+
registrationDate: {{ design.RegistrationDate }}
|
|
40
|
+
publicationDate: {{ design.PublicationDate }}
|
|
41
|
+
expiryDate: {{ design.ExpiryDate }}
|
|
42
|
+
|
|
43
|
+
applicationLanguageCode: BG
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
applicants:
|
|
47
|
+
{% call(applicant) match('ApplicantDetails.Applicant', design) %}
|
|
48
|
+
- identifier: {{ applicant.ApplicantIdentifier }}
|
|
49
|
+
{% call(details) match('ApplicantAddressBook.FormattedNameAddress.Name.FormattedName', applicant) %}
|
|
50
|
+
{% if details.OrganizationName %}
|
|
51
|
+
kind: 'organization'
|
|
52
|
+
fullName:
|
|
53
|
+
- languageCode: BG
|
|
54
|
+
text: {{ details.OrganizationName }}
|
|
55
|
+
{% else %}
|
|
56
|
+
kind: 'person'
|
|
57
|
+
fullName:
|
|
58
|
+
- languageCode: BG
|
|
59
|
+
text: {{ details | format_name }}
|
|
60
|
+
firstName:
|
|
61
|
+
- languageCode: BG
|
|
62
|
+
text: {{ details.FirstName}}
|
|
63
|
+
lastName:
|
|
64
|
+
- languageCode: BG
|
|
65
|
+
text: {{ details.LastName}}
|
|
66
|
+
middleName:
|
|
67
|
+
- languageCode: BG
|
|
68
|
+
text: {{ details.MiddleName}}
|
|
69
|
+
{% endif %}
|
|
70
|
+
{% endcall %}
|
|
71
|
+
{% call(address) match('ApplicantAddressBook.FormattedNameAddress.Address', applicant) %}
|
|
72
|
+
fullAddress:
|
|
73
|
+
- languageCode: BG
|
|
74
|
+
text: {{ address.FormattedAddress | format_address }}
|
|
75
|
+
addressLines: {{ address.FormattedAddress.AddressStreet }}
|
|
76
|
+
cityName: {{ address.FormattedAddress.AddressCity }}
|
|
77
|
+
geographicRegionName: {{ address.FormattedAddress.AddressCounty }}
|
|
78
|
+
postalCode: {{ address.FormattedAddress.AddressPostcode }}
|
|
79
|
+
countryCode: {{ address.AddressCountryCode }}
|
|
80
|
+
{% endcall %}
|
|
81
|
+
{% endcall %}
|
|
82
|
+
|
|
83
|
+
representatives:
|
|
84
|
+
{% call(rep) match('RepresentativeDetails.Representative', design) %}
|
|
85
|
+
- identifier: {{ rep.RepresentativeIdentifier }}
|
|
86
|
+
{% call(details) match('RepresentativeAddressBook.FormattedNameAddress.Name.FormattedName', rep) %}
|
|
87
|
+
kind: {{ rep.RepresentativeLegalEntity}}
|
|
88
|
+
{% if details.OrganizationName %}
|
|
89
|
+
fullName:
|
|
90
|
+
- languageCode: BG
|
|
91
|
+
text: {{ details.OrganizationName }}
|
|
92
|
+
{% else %}
|
|
93
|
+
fullName:
|
|
94
|
+
- languageCode: BG
|
|
95
|
+
text: {{ details | format_name }}
|
|
96
|
+
firstName:
|
|
97
|
+
- languageCode: BG
|
|
98
|
+
text: {{ details.FirstName}}
|
|
99
|
+
lastName:
|
|
100
|
+
- languageCode: BG
|
|
101
|
+
text: {{ details.LastName}}
|
|
102
|
+
middleName:
|
|
103
|
+
- languageCode: BG
|
|
104
|
+
text: {{ details.MiddleName}}
|
|
105
|
+
{% endif %}
|
|
106
|
+
{% endcall %}
|
|
107
|
+
{% call(address) match('RepresentativeAddressBook.FormattedNameAddress.Address', rep) %}
|
|
108
|
+
fullAddress:
|
|
109
|
+
- languageCode: BG
|
|
110
|
+
text: {{ address.FormattedAddress | format_address }}
|
|
111
|
+
addressLines: {{ address.FormattedAddress.AddressStreet }}
|
|
112
|
+
cityName: {{ address.FormattedAddress.AddressCity }}
|
|
113
|
+
geographicRegionName: {{ address.FormattedAddress.AddressCounty }}
|
|
114
|
+
postalCode: {{ address.FormattedAddress.AddressPostcode }}
|
|
115
|
+
countryCode: {{ address.AddressCountryCode }}
|
|
116
|
+
{% endcall %}
|
|
117
|
+
{% endcall %}
|
|
118
|
+
|
|
119
|
+
designs:
|
|
120
|
+
- designPos: {{ design_pos }}
|
|
121
|
+
officeStatus: {{ design.DesignCurrentStatusCode | parseStatus }}
|
|
122
|
+
gbdStatus: {{ idstatus }}
|
|
123
|
+
statusDate: {{ design.DesignCurrentStatusDate }}
|
|
124
|
+
productIndication:
|
|
125
|
+
{% call(indic) match('IndicationProduct', design.IndicationProductDetails) %}
|
|
126
|
+
- languageCode: {{ indic | guess_language(indic._languageCode, BG) }}
|
|
127
|
+
text: {{ indic }}
|
|
128
|
+
{% endcall %}
|
|
129
|
+
|
|
130
|
+
designImageDetails:
|
|
131
|
+
{% call(sheet) match('DesignRepresentationSheet', design.DesignRepresentationSheetDetails) %}
|
|
132
|
+
{% call(img) match('ViewDetails.View',sheet) %}
|
|
133
|
+
- name: {{ img.ViewURI }}
|
|
134
|
+
{% endcall %}
|
|
135
|
+
{% endcall %}
|
|
136
|
+
|
|
137
|
+
designer:
|
|
138
|
+
{% call(designer) match('DesignerDetails.Designer', design) %}
|
|
139
|
+
{% call(details) match('DesignerAddressBook.FormattedNameAddress.Name.FreeFormatName', designer) %}
|
|
140
|
+
- identifier: {{ designer.DesignerIdentifier }}
|
|
141
|
+
fullName:
|
|
142
|
+
{% call(nameline) match('FreeFormatNameDetails.FreeFormatNameLine', details) %}
|
|
143
|
+
- text: {{ nameline }}
|
|
144
|
+
languageCode: BG
|
|
145
|
+
{% endcall %}
|
|
146
|
+
{% endcall %}
|
|
147
|
+
{% endcall %}
|
|
148
|
+
|
|
149
|
+
productIndicationClasses:
|
|
150
|
+
{% call(indicationProducts) match('ClassDescriptionDetails', design) %}
|
|
151
|
+
- kind: "Locarno"
|
|
152
|
+
classes:
|
|
153
|
+
{% call(code) match('ClassDescription', indicationProducts) %}
|
|
154
|
+
- code: {{ code.ClassNumber }}
|
|
155
|
+
{% endcall %}
|
|
156
|
+
{% endcall %}
|
|
157
|
+
|
|
158
|
+
priorities:
|
|
159
|
+
{% call(priority) match('PriorityDetails.Priority', design) %}
|
|
160
|
+
- countryCode: {{ priority.PriorityCountryCode }}
|
|
161
|
+
number: {{ priority.PriorityNumber }}
|
|
162
|
+
date: {{ priority.PriorityDate }}
|
|
163
|
+
{% endcall %}
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
{% endcall %}
|
|
169
|
+
{% endcall %}
|
|
@@ -46,4 +46,16 @@ def is_international(header):
|
|
|
46
46
|
return False
|
|
47
47
|
|
|
48
48
|
def get_ir_refnum(appnum):
|
|
49
|
-
return 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)
|
|
@@ -49,4 +49,16 @@ def is_international(header):
|
|
|
49
49
|
return False
|
|
50
50
|
|
|
51
51
|
def get_ir_refnum(appnum):
|
|
52
|
-
return appnum
|
|
52
|
+
return appnum
|
|
53
|
+
|
|
54
|
+
def select_earliest_date(publications):
|
|
55
|
+
return ipas.select_earliest_date(publications)
|
|
56
|
+
|
|
57
|
+
def deduplicate_publication_dates(publications):
|
|
58
|
+
return ipas.deduplicate_publication_dates(publications)
|
|
59
|
+
|
|
60
|
+
def deduplicate_classes(classes):
|
|
61
|
+
return ipas.deduplicate_classes(classes)
|
|
62
|
+
|
|
63
|
+
def deduplicate_publications(publications):
|
|
64
|
+
return ipas.deduplicate_publications(publications)
|
|
@@ -47,4 +47,17 @@ def is_international(header):
|
|
|
47
47
|
return False
|
|
48
48
|
|
|
49
49
|
def get_ir_refnum(appnum):
|
|
50
|
-
return 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
|
+
|