wipo-gbd-transformation 1.1.49__py3-none-any.whl → 1.1.50__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/sgtm/filters.py +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 +8 -2
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/METADATA +2 -1
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/RECORD +81 -13
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/LICENSE.md +0 -0
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/WHEEL +0 -0
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/entry_points.txt +0 -0
- {wipo_gbd_transformation-1.1.49.dist-info → wipo_gbd_transformation-1.1.50.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,49 @@
|
|
|
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 == 'نموذج صناعي':
|
|
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
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
________________/DesignIdentifier
|
|
32
|
+
________________/DesignRepresentationSheetDetails
|
|
33
|
+
__________________/DesignRepresentationSheet
|
|
34
|
+
____________________/RepresentationSheetFilename
|
|
35
|
+
________________/DesignSpecimenDetails
|
|
36
|
+
__________________/DesignSpecimen
|
|
37
|
+
____________________/SpecimenDescription
|
|
38
|
+
____________________/SpecimenDescription[@languageCode=ar]
|
|
39
|
+
____________________/SpecimenIdentifier
|
|
40
|
+
________________/DesignTitle
|
|
41
|
+
________________/DesignTitle[@languageCode=ar]
|
|
42
|
+
________________/DesignTitle[@languageCode=en]
|
|
43
|
+
________________/DesignTitle[@sequenceNumber=1]
|
|
44
|
+
________________/ExpiryDate
|
|
45
|
+
________________/IndicationProductDetails
|
|
46
|
+
__________________/IndicationProduct
|
|
47
|
+
____________________/ClassDescriptionDetails
|
|
48
|
+
______________________/ClassDescription
|
|
49
|
+
________________________/ClassNumber
|
|
50
|
+
________________________/ProductDescription
|
|
51
|
+
____________________/ClassificationKindCode
|
|
52
|
+
____________________/ClassificationVersion
|
|
53
|
+
________________/NoveltyStatement
|
|
54
|
+
________________/NoveltyStatement[@languageCode=ar]
|
|
55
|
+
________________/NoveltyStatement[@languageCode=en]
|
|
56
|
+
________________/PriorityDetails
|
|
57
|
+
__________________/Priority
|
|
58
|
+
____________________/PriorityCountryCode
|
|
59
|
+
____________________/PriorityDate
|
|
60
|
+
____________________/PriorityNumber
|
|
61
|
+
________________/PublicationDetails
|
|
62
|
+
__________________/Publication
|
|
63
|
+
____________________/PublicationDate
|
|
64
|
+
____________________/PublicationIdentifier
|
|
65
|
+
________________/RegistrationDate
|
|
66
|
+
________________/RegistrationNumber
|
|
67
|
+
________________/RepresentativeDetails
|
|
68
|
+
__________________/Representative
|
|
69
|
+
____________________/RepresentativeAddressBook
|
|
70
|
+
______________________/FormattedNameAddress
|
|
71
|
+
________________________/Address
|
|
72
|
+
__________________________/AddressCountryCode
|
|
73
|
+
__________________________/FreeFormatAddress
|
|
74
|
+
____________________________/FreeFormatAddressLine
|
|
75
|
+
________________________/Name
|
|
76
|
+
__________________________/FreeFormatName
|
|
77
|
+
____________________________/FreeFormatNameDetails
|
|
78
|
+
______________________________/FreeFormatNameLine
|
|
79
|
+
______________________________/FreeFormatNameLine[@languageCode=ar]
|
|
80
|
+
____________/RegistrationOfficeCode
|
|
81
|
+
______/TransactionIdentifier
|
|
82
|
+
______/TransactionSubCode
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include "ipas/template.yml" %}
|
|
@@ -6,6 +6,18 @@ def parseStatus(status):
|
|
|
6
6
|
""" Function is here to be overriden in child elements( e.g BRTM)"""
|
|
7
7
|
return status
|
|
8
8
|
|
|
9
|
+
def pad_locarno(data, separator='-'):
|
|
10
|
+
"""Convert to locarno style with padding"""
|
|
11
|
+
if separator in data:
|
|
12
|
+
slice = data.split(separator)
|
|
13
|
+
return slice[0].zfill(2) + '-' + pad_locarno('-'.join(slice[1:]))
|
|
14
|
+
return data.zfill(2)
|
|
15
|
+
|
|
16
|
+
def should_display_language(lang, payload):
|
|
17
|
+
if payload:
|
|
18
|
+
return lang
|
|
19
|
+
return None
|
|
20
|
+
|
|
9
21
|
def st13(appnum, office, pos, type='Design', appdate=None, roffice=None, sanitize=True):
|
|
10
22
|
if not appnum:
|
|
11
23
|
return None
|
|
@@ -43,7 +55,7 @@ def st13(appnum, office, pos, type='Design', appdate=None, roffice=None, sanitiz
|
|
|
43
55
|
appnum = special_chars.sub('', appnum)
|
|
44
56
|
|
|
45
57
|
# reference office (only relevant for inerantional)
|
|
46
|
-
if roffice:
|
|
58
|
+
if roffice and roffice != office:
|
|
47
59
|
appnum = '%s%s' % (roffice.upper(), appnum)
|
|
48
60
|
|
|
49
61
|
st13 = '%s%s' % (office.upper(), prefix)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# standard gbd definitions
|
|
2
|
+
import gbdtransformation.designs.ipas.filters as ipas
|
|
3
|
+
import re
|
|
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
|
+
mask = 'AID(\\d{4})\\d*'
|
|
12
|
+
regex = re.compile('^%s$' % mask)
|
|
13
|
+
matches = regex.search(appnum)
|
|
14
|
+
if matches:
|
|
15
|
+
return ''.join(matches.groups())
|
|
16
|
+
return appdate
|
|
17
|
+
|
|
18
|
+
def get_designs_count(design, header):
|
|
19
|
+
return '1'
|
|
20
|
+
|
|
21
|
+
def get_designs_pos(design, header):
|
|
22
|
+
return '1'
|
|
23
|
+
|
|
24
|
+
def translate_kind(desgin, header):
|
|
25
|
+
code = header.TransactionCode.lower()
|
|
26
|
+
subcode = header.TransactionSubCode.lower()
|
|
27
|
+
if code == 'desain industri':
|
|
28
|
+
return 'Industrial Design'
|
|
29
|
+
raise Exception('Type "%s" "%s" is not mapped.' % (code, subcode))
|
|
30
|
+
|
|
31
|
+
def translate_status(design):
|
|
32
|
+
status = design.DesignCurrentStatusCode
|
|
33
|
+
|
|
34
|
+
return ipas.translate_status(status)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_registration_nb(design, idstatus):
|
|
38
|
+
if design.RegistrationNumber:
|
|
39
|
+
return design.RegistrationNumber
|
|
40
|
+
|
|
41
|
+
return None
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def get_expiry_date(design, idstatus):
|
|
45
|
+
return ipas.get_expiry_date(design, idstatus)
|
|
46
|
+
|
|
47
|
+
def get_registration_date(design, idstatus):
|
|
48
|
+
return ipas.get_registration_date(design, idstatus)
|
|
49
|
+
|
|
50
|
+
def is_international(header):
|
|
51
|
+
return False
|
|
52
|
+
|
|
53
|
+
def get_ir_refnum(appnum):
|
|
54
|
+
return appnum
|
|
@@ -0,0 +1,102 @@
|
|
|
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=in]
|
|
28
|
+
________________/DesignCurrentStatusCode
|
|
29
|
+
________________/DesignCurrentStatusDate
|
|
30
|
+
________________/DesignDescription
|
|
31
|
+
________________/DesignEventDetails
|
|
32
|
+
__________________/DesignEvent
|
|
33
|
+
____________________/DesignEventCode
|
|
34
|
+
____________________/DesignEventDate
|
|
35
|
+
____________________/OfficeSpecificDesignEventCode
|
|
36
|
+
____________________/OfficeSpecificDesignEventDescription
|
|
37
|
+
____________________/OfficeSpecificDesignEventDescription[@languageCode=in]
|
|
38
|
+
____________________/OfficeSpecificDesignEventName
|
|
39
|
+
________________/DesignIdentifier
|
|
40
|
+
________________/DesignRepresentationSheetDetails
|
|
41
|
+
__________________/DesignRepresentationSheet
|
|
42
|
+
____________________/RepresentationSheetFilename
|
|
43
|
+
________________/DesignSpecimenDetails
|
|
44
|
+
__________________/DesignSpecimen
|
|
45
|
+
____________________/SpecimenDescription
|
|
46
|
+
____________________/SpecimenDescription[@languageCode=in]
|
|
47
|
+
____________________/SpecimenIdentifier
|
|
48
|
+
________________/DesignTitle
|
|
49
|
+
________________/DesignTitle[@languageCode=in]
|
|
50
|
+
________________/DesignTitle[@sequenceNumber=1]
|
|
51
|
+
________________/DesignerDetails
|
|
52
|
+
__________________/Designer
|
|
53
|
+
____________________/DesignerAddressBook
|
|
54
|
+
______________________/FormattedNameAddress
|
|
55
|
+
________________________/Address
|
|
56
|
+
__________________________/AddressCountryCode
|
|
57
|
+
__________________________/FreeFormatAddress
|
|
58
|
+
____________________________/FreeFormatAddressLine
|
|
59
|
+
________________________/Name
|
|
60
|
+
__________________________/FreeFormatName
|
|
61
|
+
____________________________/FreeFormatNameDetails
|
|
62
|
+
______________________________/FreeFormatNameLine
|
|
63
|
+
______________________________/FreeFormatNameLine[@languageCode=in]
|
|
64
|
+
________________/ExpiryDate
|
|
65
|
+
________________/IndicationProductDetails
|
|
66
|
+
__________________/IndicationProduct
|
|
67
|
+
____________________/ClassDescriptionDetails
|
|
68
|
+
______________________/ClassDescription
|
|
69
|
+
________________________/ClassNumber
|
|
70
|
+
________________________/ProductDescription
|
|
71
|
+
____________________/ClassificationKindCode
|
|
72
|
+
____________________/ClassificationVersion
|
|
73
|
+
________________/NoveltyStatement
|
|
74
|
+
________________/NoveltyStatement[@languageCode=]
|
|
75
|
+
________________/NoveltyStatement[@languageCode=in]
|
|
76
|
+
________________/PriorityDetails
|
|
77
|
+
__________________/Priority
|
|
78
|
+
____________________/PriorityCountryCode
|
|
79
|
+
____________________/PriorityDate
|
|
80
|
+
____________________/PriorityNumber
|
|
81
|
+
________________/PublicationDetails
|
|
82
|
+
__________________/Publication
|
|
83
|
+
____________________/PublicationDate
|
|
84
|
+
____________________/PublicationIdentifier
|
|
85
|
+
________________/RegistrationDate
|
|
86
|
+
________________/RegistrationNumber
|
|
87
|
+
________________/RepresentativeDetails
|
|
88
|
+
__________________/Representative
|
|
89
|
+
____________________/RepresentativeAddressBook
|
|
90
|
+
______________________/FormattedNameAddress
|
|
91
|
+
________________________/Address
|
|
92
|
+
__________________________/AddressCountryCode
|
|
93
|
+
__________________________/FreeFormatAddress
|
|
94
|
+
____________________________/FreeFormatAddressLine
|
|
95
|
+
________________________/Name
|
|
96
|
+
__________________________/FreeFormatName
|
|
97
|
+
____________________________/FreeFormatNameDetails
|
|
98
|
+
______________________________/FreeFormatNameLine
|
|
99
|
+
______________________________/FreeFormatNameLine[@languageCode=in]
|
|
100
|
+
____________/RegistrationOfficeCode
|
|
101
|
+
______/TransactionIdentifier
|
|
102
|
+
______/TransactionSubCode
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{% include "ipas/template.yml" %}
|
|
@@ -7,30 +7,35 @@
|
|
|
7
7
|
{% set design_pos = design | get_designs_pos(header) %}
|
|
8
8
|
{% set kind = design | translate_kind(header) %}
|
|
9
9
|
type: 'DESIGN'
|
|
10
|
-
subtype: '
|
|
11
|
-
designGrouping: '
|
|
10
|
+
subtype: 'OPEN'
|
|
11
|
+
designGrouping: 'MULTIPLE'
|
|
12
12
|
designsCount: {{ design_count }}
|
|
13
|
-
designPos: {{ design_pos }}
|
|
14
13
|
kind:
|
|
15
14
|
- {{kind}}
|
|
16
15
|
registrationOfficeCode: {{ design.RegistrationOfficeCode }}
|
|
17
16
|
designatedCountries:
|
|
17
|
+
{% if design.DesignatedCountryDetails %}
|
|
18
|
+
{% call(designations) match('DesignatedCountry', design.DesignatedCountryDetails) %}
|
|
19
|
+
- {{ designations.DesignatedCountryCode }}
|
|
20
|
+
{% endcall %}
|
|
21
|
+
{% else %}
|
|
18
22
|
- {{ design.RegistrationOfficeCode }}
|
|
19
|
-
|
|
23
|
+
{% endif %}
|
|
20
24
|
reference:
|
|
21
25
|
{% if header | is_international %}
|
|
22
|
-
office: WO
|
|
23
26
|
registration:
|
|
24
27
|
- number: {{ design.DesignApplicationNumber | get_ir_refnum }}
|
|
25
|
-
|
|
28
|
+
office: WO
|
|
29
|
+
{% endif %}
|
|
26
30
|
{% if not kind == 'Industrial Design' %}
|
|
27
|
-
|
|
31
|
+
registration:
|
|
32
|
+
- number: {{ design.RegistrationNumber }}
|
|
28
33
|
{% endif %}
|
|
29
34
|
|
|
30
35
|
{% set idstatus = design.DesignDetails.Design | translate_status %}
|
|
31
36
|
{% set appdate = design.DesignApplicationDate | get_appdate(design.DesignApplicationNumber) %}
|
|
32
37
|
|
|
33
|
-
st13: {{ design.DesignApplicationNumber | st13(design.RegistrationOfficeCode, design_pos, appdate=appdate) }}
|
|
38
|
+
st13: {{ design.DesignApplicationNumber | st13(design.RegistrationOfficeCode, design_pos, appdate=appdate, roffice=design.ReceivingOfficeCode) }}
|
|
34
39
|
|
|
35
40
|
applicationNumber: {{ design.DesignApplicationNumber }}
|
|
36
41
|
applicationDate: {{ design.DesignApplicationDate }}
|
|
@@ -41,20 +46,6 @@ expiryDate: {{ design.DesignDetails.Design | get_expiry_date(idstatus) }}
|
|
|
41
46
|
|
|
42
47
|
applicationLanguageCode: {{ design.DesignApplicationLanguageCode }}
|
|
43
48
|
|
|
44
|
-
officeStatus: {{ design.DesignDetails.Design.DesignCurrentStatusCode | parseStatus }}
|
|
45
|
-
gbdStatus: {{ idstatus }}
|
|
46
|
-
statusDate: {{ design.DesignDetails.Design.DesignCurrentStatusDate }}
|
|
47
|
-
|
|
48
|
-
designDescription:
|
|
49
|
-
- languageCode: {{ design.DesignDetails.Design.DesignDescription | guess_language(design.DesignApplicationLanguageCode) }}
|
|
50
|
-
text: {{ design.DesignDetails.Design.DesignDescription }}
|
|
51
|
-
|
|
52
|
-
designImageDetails:
|
|
53
|
-
{% call(sheet) match('DesignRepresentationSheetDetails.DesignRepresentationSheet', design.DesignDetails.Design) %}
|
|
54
|
-
{% call(img) match('RepresentationSheetFilename',sheet) %}
|
|
55
|
-
- name: {{ img }}
|
|
56
|
-
{% endcall %}
|
|
57
|
-
{% endcall %}
|
|
58
49
|
applicants:
|
|
59
50
|
{% call(applicant) match('ApplicantDetails.Applicant', design.DesignDetails.Design) %}
|
|
60
51
|
{% call(details) match('ApplicantAddressBook.FormattedNameAddress.Name.FreeFormatName', applicant) %}
|
|
@@ -101,65 +92,83 @@ representatives:
|
|
|
101
92
|
{% endcall %}
|
|
102
93
|
{% endcall %}
|
|
103
94
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
{
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
{% call(address) match('DesignerAddressBook.FormattedNameAddress.Address', designer) %}
|
|
115
|
-
fullAddress:
|
|
116
|
-
{% call(adrline) match('FreeFormatAddress.FreeFormatAddressLine', address) %}
|
|
117
|
-
{% if not adrline == '-' %}
|
|
118
|
-
- text: {{ adrline }}
|
|
119
|
-
languageCode: {{ adrline | guess_language(adrline._languageCode, design.DesignApplicationLanguageCode) }}
|
|
120
|
-
{% endif %}
|
|
121
|
-
{% endcall %}
|
|
122
|
-
countryCode: {{ address.AddressCountryCode | remove_trailing('-', '.') | remove_numerics }}
|
|
95
|
+
designs:
|
|
96
|
+
- designPos: {{ design_pos }}
|
|
97
|
+
officeStatus: {{ design.DesignDetails.Design.DesignCurrentStatusCode | parseStatus }}
|
|
98
|
+
gbdStatus: {{ idstatus }}
|
|
99
|
+
statusDate: {{ design.DesignDetails.Design.DesignCurrentStatusDate }}
|
|
100
|
+
|
|
101
|
+
productIndication:
|
|
102
|
+
{% call(indic) match('DesignTitle', design.DesignDetails.Design) %}
|
|
103
|
+
- languageCode: {{ indic | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
|
|
104
|
+
text: {{ indic }}
|
|
123
105
|
{% endcall %}
|
|
106
|
+
|
|
107
|
+
designDescription:
|
|
108
|
+
- languageCode: {{ design.DesignDetails.Design.DesignDescription | guess_language(design.DesignApplicationLanguageCode) }}
|
|
109
|
+
text: {{ design.DesignDetails.Design.DesignDescription }}
|
|
110
|
+
|
|
111
|
+
designImageDetails:
|
|
112
|
+
{% call(sheet) match('DesignRepresentationSheetDetails.DesignRepresentationSheet', design.DesignDetails.Design) %}
|
|
113
|
+
{% call(img) match('RepresentationSheetFilename',sheet) %}
|
|
114
|
+
- name: {{ img }}
|
|
124
115
|
{% endcall %}
|
|
116
|
+
{% endcall %}
|
|
117
|
+
|
|
125
118
|
|
|
126
|
-
|
|
127
|
-
{% call(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
119
|
+
designer:
|
|
120
|
+
{% call(designer) match('DesignerDetails.Designer', design.DesignDetails.Design) %}
|
|
121
|
+
{% call(details) match('DesignerAddressBook.FormattedNameAddress.Name.FreeFormatName', designer) %}
|
|
122
|
+
- identifier: {{ details.DesignerIdentifier }}
|
|
123
|
+
fullName:
|
|
124
|
+
{% call(nameline) match('FreeFormatNameDetails.FreeFormatNameLine', details) %}
|
|
125
|
+
- text: {{ nameline }}
|
|
126
|
+
languageCode: {{ nameline.__value | guess_language(nameline._languageCode, design.DesignApplicationLanguageCode) }}
|
|
127
|
+
{% endcall %}
|
|
128
|
+
{% endcall %}
|
|
129
|
+
{% call(address) match('DesignerAddressBook.FormattedNameAddress.Address', designer) %}
|
|
130
|
+
fullAddress:
|
|
131
|
+
{% call(adrline) match('FreeFormatAddress.FreeFormatAddressLine', address) %}
|
|
132
|
+
{% if not adrline == '-' %}
|
|
133
|
+
- text: {{ adrline }}
|
|
134
|
+
languageCode: {{ adrline | guess_language(adrline._languageCode, design.DesignApplicationLanguageCode) }}
|
|
135
|
+
{% endif %}
|
|
136
|
+
{% endcall %}
|
|
137
|
+
countryCode: {{ address.AddressCountryCode | remove_trailing('-', '.') | remove_numerics }}
|
|
138
|
+
{% endcall %}
|
|
139
|
+
{% endcall %}
|
|
140
|
+
|
|
141
|
+
productIndicationClasses:
|
|
142
|
+
{% call(indicationProducts) match('IndicationProductDetails.IndicationProduct', design.DesignDetails.Design) %}
|
|
143
|
+
- kind: {{ indicationProducts.ClassificationKindCode | lower }}
|
|
144
|
+
version: {{ indicationProducts.ClassificationVersion}}
|
|
145
|
+
classes:
|
|
146
|
+
{% call(code) match('ClassDescriptionDetails.ClassDescription', indicationProducts) %}
|
|
147
|
+
- code: {{ code.ClassNumber }}
|
|
148
|
+
description: {{ code.ProductDescription}}
|
|
149
|
+
{% endcall %}
|
|
134
150
|
{% endcall %}
|
|
135
|
-
{% endcall %}
|
|
136
151
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
publications:
|
|
158
|
-
{% call(pub) match('PublicationDetails.Publication', design.DesignDetails.Design) %}
|
|
159
|
-
- identifier: {{ pub.PublicationIdentifier}}
|
|
160
|
-
date: {{ pub.PublicationDate}}
|
|
161
|
-
section:
|
|
162
|
-
{% endcall %}
|
|
152
|
+
|
|
153
|
+
priorities:
|
|
154
|
+
{% call(priority) match('PriorityDetails.Priority', design.DesignDetails.Design) %}
|
|
155
|
+
- countryCode: {{ priority.PriorityCountryCode }}
|
|
156
|
+
number: {{ priority.PriorityNumber }}
|
|
157
|
+
date: {{ priority.PriorityDate }}
|
|
158
|
+
{% endcall %}
|
|
159
|
+
|
|
160
|
+
noveltyStatement:
|
|
161
|
+
{% call(indic) match('NoveltyStatement', design.DesignDetails.Design) %}
|
|
162
|
+
- languageCode: {{ indic | remove_trailing('-', '.') | guess_language(indic._languageCode, design.DesignApplicationLanguageCode) }}
|
|
163
|
+
text: {{ indic | remove_trailing('-', '.') }}
|
|
164
|
+
{% endcall %}
|
|
165
|
+
|
|
166
|
+
publications:
|
|
167
|
+
{% call(pub) match('PublicationDetails.Publication', design.DesignDetails.Design) %}
|
|
168
|
+
- identifier: {{ pub.PublicationIdentifier}}
|
|
169
|
+
date: {{ pub.PublicationDate}}
|
|
170
|
+
section:
|
|
171
|
+
{% endcall %}
|
|
163
172
|
|
|
164
173
|
{% endcall %}
|
|
165
174
|
{% endcall %}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|