wipo-gbd-transformation 1.1.47__py3-none-any.whl → 1.1.59__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wipo-gbd-transformation might be problematic. Click here for more details.

Files changed (138) hide show
  1. gbdtransformation/brands/attm/template.yml +1 -2
  2. gbdtransformation/brands/bgtm/template.yml +1 -1
  3. gbdtransformation/brands/catm/filters.py +2 -1
  4. gbdtransformation/brands/catm/template.yml +10 -6
  5. gbdtransformation/brands/chtm/filters.py +159 -181
  6. gbdtransformation/brands/chtm/schema +79 -91
  7. gbdtransformation/brands/chtm/template.yml +97 -106
  8. gbdtransformation/brands/eetm/template.yml +1 -1
  9. gbdtransformation/brands/emtm/template.yml +1 -1
  10. gbdtransformation/brands/estm/template.yml +1 -1
  11. gbdtransformation/brands/frtm/template.yml +1 -1
  12. gbdtransformation/brands/gdtm/__init__.py +5 -0
  13. gbdtransformation/brands/gdtm/filters.py +61 -0
  14. gbdtransformation/brands/gdtm/schema +87 -0
  15. gbdtransformation/brands/gdtm/template.yml +1 -0
  16. gbdtransformation/brands/gdtm/tests/__init__.py +0 -0
  17. gbdtransformation/brands/istm/filters.py +21 -14
  18. gbdtransformation/brands/istm/template.yml +1 -1
  19. gbdtransformation/brands/krtm/template.yml +1 -1
  20. gbdtransformation/brands/lktm/__init__.py +5 -0
  21. gbdtransformation/brands/lktm/filters.py +83 -0
  22. gbdtransformation/brands/lktm/schema +87 -0
  23. gbdtransformation/brands/lktm/template.yml +1 -0
  24. gbdtransformation/brands/lktm/tests/__init__.py +0 -0
  25. gbdtransformation/brands/natm/__init__.py +2 -3
  26. gbdtransformation/brands/natm/filters.py +8 -2
  27. gbdtransformation/brands/notm/__init__.py +5 -0
  28. gbdtransformation/brands/notm/filters.py +113 -0
  29. gbdtransformation/brands/notm/template.yml +152 -0
  30. gbdtransformation/brands/nztm/template.yml +1 -1
  31. gbdtransformation/brands/phtm/schema +79 -50
  32. gbdtransformation/brands/phtm/schema.classic +50 -0
  33. gbdtransformation/brands/phtm/template.classic.yml +102 -0
  34. gbdtransformation/brands/phtm/template.yml +1 -102
  35. gbdtransformation/brands/qatm/__init__.py +5 -0
  36. gbdtransformation/brands/qatm/filters.py +81 -0
  37. gbdtransformation/brands/qatm/schema +87 -0
  38. gbdtransformation/brands/qatm/template.yml +1 -0
  39. gbdtransformation/brands/qatm/tests/__init__.py +0 -0
  40. gbdtransformation/brands/sgtm/filters.py +1 -1
  41. gbdtransformation/brands/sgtm/template.trademark.yml +2 -2
  42. gbdtransformation/brands/ustm/template.yml +1 -1
  43. gbdtransformation/brands/vctm/__init__.py +5 -0
  44. gbdtransformation/brands/vctm/filters.py +75 -0
  45. gbdtransformation/brands/vctm/schema +87 -0
  46. gbdtransformation/brands/vctm/template.yml +1 -0
  47. gbdtransformation/brands/vctm/tests/__init__.py +0 -0
  48. gbdtransformation/brands/vntm/filters.py +1 -3
  49. gbdtransformation/brands/xxxx/template.yml +1 -1
  50. gbdtransformation/designs/__init__.py +8 -0
  51. gbdtransformation/designs/alid/__init__.py +1 -1
  52. gbdtransformation/designs/alid/filters.py +14 -1
  53. gbdtransformation/designs/bnid/__init__.py +5 -0
  54. gbdtransformation/designs/bnid/filters.py +61 -0
  55. gbdtransformation/designs/bnid/schema +80 -0
  56. gbdtransformation/designs/bnid/template.yml +1 -0
  57. gbdtransformation/designs/bwid/__init__.py +6 -0
  58. gbdtransformation/designs/bwid/filters.py +64 -0
  59. gbdtransformation/designs/bwid/schema +101 -0
  60. gbdtransformation/designs/bwid/template.yml +1 -0
  61. gbdtransformation/designs/crid/__init__.py +5 -0
  62. gbdtransformation/designs/crid/filters.py +63 -0
  63. gbdtransformation/designs/crid/schema +94 -0
  64. gbdtransformation/designs/crid/template.yml +1 -0
  65. gbdtransformation/designs/cuid/__init__.py +5 -0
  66. gbdtransformation/designs/cuid/filters.py +60 -0
  67. gbdtransformation/designs/cuid/schema +98 -0
  68. gbdtransformation/designs/cuid/template.yml +1 -0
  69. gbdtransformation/designs/egid/__init__.py +5 -0
  70. gbdtransformation/designs/egid/filters.py +62 -0
  71. gbdtransformation/designs/egid/schema +82 -0
  72. gbdtransformation/designs/egid/template.yml +1 -0
  73. gbdtransformation/designs/filters.py +73 -0
  74. gbdtransformation/designs/idid/__init__.py +5 -0
  75. gbdtransformation/designs/idid/filters.py +67 -0
  76. gbdtransformation/designs/idid/schema +102 -0
  77. gbdtransformation/designs/idid/template.yml +1 -0
  78. gbdtransformation/designs/ipas/filters.py +84 -2
  79. gbdtransformation/designs/ipas/template.yml +90 -79
  80. gbdtransformation/designs/joid/__init__.py +6 -0
  81. gbdtransformation/designs/joid/filters.py +62 -0
  82. gbdtransformation/designs/joid/schema +97 -0
  83. gbdtransformation/designs/joid/template.yml +1 -0
  84. gbdtransformation/designs/keid/__init__.py +5 -0
  85. gbdtransformation/designs/keid/filters.py +62 -0
  86. gbdtransformation/designs/keid/schema +99 -0
  87. gbdtransformation/designs/keid/template.yml +1 -0
  88. gbdtransformation/designs/khid/__init__.py +5 -0
  89. gbdtransformation/designs/khid/filters.py +63 -0
  90. gbdtransformation/designs/khid/schema +100 -0
  91. gbdtransformation/designs/khid/template.yml +1 -0
  92. gbdtransformation/designs/laid/__init__.py +5 -0
  93. gbdtransformation/designs/laid/filters.py +61 -0
  94. gbdtransformation/designs/laid/schema +94 -0
  95. gbdtransformation/designs/laid/template.yml +1 -0
  96. gbdtransformation/designs/mnid/__init__.py +6 -0
  97. gbdtransformation/designs/mnid/filters.py +62 -0
  98. gbdtransformation/designs/mnid/schema +98 -0
  99. gbdtransformation/designs/mnid/template.yml +1 -0
  100. gbdtransformation/designs/myid/__init__.py +5 -0
  101. gbdtransformation/designs/myid/filters.py +60 -0
  102. gbdtransformation/designs/myid/schema +95 -0
  103. gbdtransformation/designs/myid/template.yml +1 -0
  104. gbdtransformation/designs/phid/__init__.py +5 -0
  105. gbdtransformation/designs/phid/filters.py +70 -0
  106. gbdtransformation/designs/phid/schema +95 -0
  107. gbdtransformation/designs/phid/template.yml +1 -0
  108. gbdtransformation/designs/sgid/__init__.py +6 -0
  109. gbdtransformation/designs/sgid/filters.py +66 -0
  110. gbdtransformation/designs/sgid/schema +115 -0
  111. gbdtransformation/designs/sgid/template.yml +1 -0
  112. gbdtransformation/designs/thid/__init__.py +4 -0
  113. gbdtransformation/designs/thid/filters.py +64 -0
  114. gbdtransformation/designs/thid/schema +98 -0
  115. gbdtransformation/designs/thid/template.yml +1 -0
  116. gbdtransformation/designs/tnid/__init__.py +5 -0
  117. gbdtransformation/designs/tnid/filters.py +66 -0
  118. gbdtransformation/designs/tnid/schema +96 -0
  119. gbdtransformation/designs/tnid/template.yml +1 -0
  120. gbdtransformation/designs/vnid/__init__.py +5 -0
  121. gbdtransformation/designs/vnid/filters.py +62 -0
  122. gbdtransformation/designs/vnid/schema +97 -0
  123. gbdtransformation/designs/vnid/template.yml +1 -0
  124. gbdtransformation/designs/woid/__init__.py +2 -0
  125. gbdtransformation/designs/woid/filters.py +372 -0
  126. gbdtransformation/designs/woid/schema +592 -0
  127. gbdtransformation/designs/woid/template.yml +516 -0
  128. gbdtransformation/designs/xxid/template.yml +331 -119
  129. gbdtransformation/execs-nico.py +709 -0
  130. gbdtransformation/execs.py +55 -4
  131. gbdtransformation/gbd-transform.exec.tgz +0 -0
  132. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/METADATA +4 -1
  133. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/RECORD +138 -38
  134. wipo_gbd_transformation-1.1.59.dist-info/SOURCES_Stefans-Mac-Studio.local_Sep-18-063455-2024_Conflict.txt +690 -0
  135. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/entry_points.txt +1 -0
  136. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/LICENSE.md +0 -0
  137. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/WHEEL +0 -0
  138. {wipo_gbd_transformation-1.1.47.dist-info → wipo_gbd_transformation-1.1.59.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,102 @@
1
+ {% from 'navigation.tmpl' import match %}
2
+ {% set status = RECORD | translate_status %}
3
+
4
+ type: TRADEMARK
5
+ kind:
6
+ - Individual
7
+
8
+ st13: {{ RECORD.APPNO | st13('PH') }}
9
+
10
+ markFeature: {{ RECORD.SIGN_TYPE | translate_feature}}
11
+ registrationOfficeCode: PH
12
+ designatedCountries:
13
+ - PH
14
+
15
+ applicationNumber: {{ RECORD.APPNO }}
16
+ applicationDate: {{ RECORD.FILING_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
17
+ registrationNumber: {{ RECORD.REGISTRATION_NBR }}
18
+ registrationDate: {{ RECORD.REGISTRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
19
+
20
+ reference:
21
+ {% if RECORD.APPL_TYP == 'M' %}
22
+ office: WO
23
+ registration:
24
+ - number: {{ RECORD.FILE_NBR }}
25
+ {% endif %}
26
+
27
+ applicationLanguageCode: en
28
+ expiryDate: {{ RECORD.EXPIRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
29
+ {% if status == 'Ended' %}
30
+ terminationDate: {{ RECORD.EXPIRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
31
+ {% endif %}
32
+
33
+ officeStatus: {{ RECORD.STATUS_NAME }}
34
+ gbdStatus: {{ status }}
35
+ statusDate: {{ RECORD.STATUS_DATE | convertdate2('%m/%d/%Y;%b\t%d\t%Y')}}
36
+
37
+ {% if RECORD.TITLE %}
38
+ wordMarkSpecification:
39
+ markVerbalElement:
40
+ - languageCode: en
41
+ text: {{ RECORD.TITLE}}
42
+ {% endif %}
43
+
44
+ {% if RECORD.SIGN_TYPE == 'B' or RECORD.SIGN_TYPE == 'L' %}
45
+ markImageDetails:
46
+ - name: {{ RECORD.LOGO.LOGO }}
47
+ {% if RECORD.VIENNA %}
48
+ classification:
49
+ kind: Vienna
50
+ code:
51
+ {% call(vienna) match('VIENNA', RECORD) %}
52
+ - {{ vienna.VIENNA_TEXT | pad_vienna }}
53
+ {% endcall %}
54
+ {% endif %}
55
+ {% endif %}
56
+
57
+ {% if RECORD.NICE_CLASS %}
58
+ goodsServicesClassification:
59
+ kind: Nice
60
+ version: {{ ASK_THE_OFFICE }}
61
+ class:
62
+ {% call(nice) match('NICE_CLASS', RECORD) %}
63
+ - code: {{ nice.NICE_CLASS_CODE | int }}
64
+ terms:
65
+ en:
66
+ {% for gsline in nice.NICE_CLASS_DESCRIPTION | split_terms %}
67
+ - {{ gsline | remove_trailing('.') | lower }}
68
+ {% endfor %}
69
+ {% endcall %}
70
+ {% endif %}
71
+
72
+ priorities:
73
+ {% call(priority) match('PRIORITIES', RECORD) %}
74
+ - countryCode: {{ priority.COUNTRY_CODE }}
75
+ number: {{ priority.PRIORITY_APPL_ID | remove_trailing('-') }}
76
+ date: {{ priority.PRIORITY_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
77
+ {% endcall %}
78
+
79
+ applicants:
80
+ {% call(applicant) match('OWNER', RECORD) %}
81
+ - fullName:
82
+ - text: {{ applicant.PERSON_NAME }}
83
+ languageCode: en
84
+ countryCode: {{ applicant.RESIDENCE_COUNTRY_CODE | remove_trailing('-', '.') }}
85
+ fullAddress:
86
+ - text: {{ applicant | get_address }}
87
+ languageCode: en
88
+ {% endcall %}
89
+
90
+ representatives:
91
+ {% call(rep) match('AGENT', RECORD) %}
92
+ {% if rep.PERSON_NAME %}
93
+ - identifier: {{ rep.AGENT_CODE }}
94
+ fullName:
95
+ - text: {{ rep.PERSON_NAME }}
96
+ languageCode: en
97
+ countryCode: PH
98
+ fullAddress:
99
+ - text: {{ rep | get_address }}
100
+ languageCode: en
101
+ {% endif %}
102
+ {% endcall %}
@@ -1,102 +1 @@
1
- {% from 'navigation.tmpl' import match %}
2
- {% set status = RECORD | translate_status %}
3
-
4
- type: TRADEMARK
5
- kind:
6
- - Individual
7
-
8
- st13: {{ RECORD.APPNO | st13('PH') }}
9
-
10
- markFeature: {{ RECORD.SIGN_TYPE | translate_feature}}
11
- registrationOfficeCode: PH
12
- designatedCountries:
13
- - PH
14
-
15
- applicationNumber: {{ RECORD.APPNO }}
16
- applicationDate: {{ RECORD.FILING_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
17
- registrationNumber: {{ RECORD.REGISTRATION_NBR }}
18
- registrationDate: {{ RECORD.REGISTRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
19
-
20
- reference:
21
- {% if RECORD.APPL_TYP == 'M' %}
22
- office: WO
23
- registration:
24
- - number: {{ RECORD.FILE_NBR }}
25
- {% endif %}
26
-
27
- applicationLanguageCode: en
28
- expiryDate: {{ RECORD.EXPIRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
29
- {% if status == 'Ended' %}
30
- terminationDate: {{ RECORD.EXPIRATION_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
31
- {% endif %}
32
-
33
- officeStatus: {{ RECORD.STATUS_NAME }}
34
- gbdStatus: {{ status }}
35
- statusDate: {{ RECORD.STATUS_DATE | convertdate2('%m/%d/%Y;%b\t%d\t%Y')}}
36
-
37
- {% if RECORD.TITLE %}
38
- wordMarkSpecification:
39
- markVerbalElement:
40
- - languageCode: en
41
- text: {{ RECORD.TITLE}}
42
- {% endif %}
43
-
44
- {% if RECORD.SIGN_TYPE == 'B' or RECORD.SIGN_TYPE == 'L' %}
45
- markImageDetails:
46
- - name: {{ RECORD.LOGO.LOGO }}
47
- {% if RECORD.VIENNA %}
48
- classification:
49
- kind: Vienna
50
- code:
51
- {% call(vienna) match('VIENNA', RECORD) %}
52
- - {{ vienna.VIENNA_TEXT | pad_vienna }}
53
- {% endcall %}
54
- {% endif %}
55
- {% endif %}
56
-
57
- {% if RECORD.NICE_CLASS %}
58
- goodsServicesClassification:
59
- kind: Nice
60
- version: {{ ASK_THE_OFFICE }}
61
- class:
62
- {% call(nice) match('NICE_CLASS', RECORD) %}
63
- - code: {{ nice.NICE_CLASS_CODE | int }}
64
- terms:
65
- en:
66
- {% for gsline in nice.NICE_CLASS_DESCRIPTION | split_terms %}
67
- - {{ gsline | remove_trailing('.') | lower }}
68
- {% endfor %}
69
- {% endcall %}
70
- {% endif %}
71
-
72
- priorities:
73
- {% call(priority) match('PRIORITIES', RECORD) %}
74
- - countryCode: {{ priority.COUNTRY_CODE }}
75
- number: {{ priority.PRIORITY_APPL_ID | remove_trailing('-') }}
76
- date: {{ priority.PRIORITY_DATE | convertdate('%Y-%m-%dT%H:%M:%S')}}
77
- {% endcall %}
78
-
79
- applicants:
80
- {% call(applicant) match('OWNER', RECORD) %}
81
- - fullName:
82
- - text: {{ applicant.PERSON_NAME }}
83
- languageCode: en
84
- countryCode: {{ applicant.RESIDENCE_COUNTRY_CODE | remove_trailing('-', '.') }}
85
- fullAddress:
86
- - text: {{ applicant | get_address }}
87
- languageCode: en
88
- {% endcall %}
89
-
90
- representatives:
91
- {% call(rep) match('AGENT', RECORD) %}
92
- {% if rep.PERSON_NAME %}
93
- - identifier: {{ rep.AGENT_CODE }}
94
- fullName:
95
- - text: {{ rep.PERSON_NAME }}
96
- languageCode: en
97
- countryCode: PH
98
- fullAddress:
99
- - text: {{ rep | get_address }}
100
- languageCode: en
101
- {% endif %}
102
- {% endcall %}
1
+ {% include "ipas/template.yml" %}
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # AE/321890
5
+ appnum_mask = 'QA/T/1/(\\d*)'
@@ -0,0 +1,81 @@
1
+ import gbdtransformation.brands.ipas.filters as ipas
2
+ import gbdtransformation.common.filters as commons
3
+
4
+ ignore_namespace = [
5
+ 'http://www.wipo.int/standards/XMLSchema/trademarks',
6
+ 'http://www.wipo.int/standards/XMLSchema/wo-trademarks']
7
+
8
+ def get_appdate(appdate, appnum):
9
+ return ipas.get_appdate(appdate, appnum)
10
+
11
+ def translate_type(header):
12
+ code = header.TransactionCode
13
+
14
+ if code == 'علامة تجارية': return 'TRADEMARK'
15
+
16
+ return 'TRADEMARK'
17
+
18
+ def translate_kind(trademark, header):
19
+ subcode = header.TransactionSubCode
20
+
21
+ if subcode == 'طلب علامات وطني': return ['Individual']
22
+ if subcode == 'مجموعة علامات': return ['Individual']
23
+ if subcode == 'علامة جماعية': return ['Collective']
24
+ # it is None for all
25
+ # kind = trademark.KindMark
26
+
27
+ return ['Individual']
28
+
29
+ def translate_status(trademark):
30
+ status = trademark.MarkCurrentStatusCode
31
+ """
32
+ if status == 'Converted': return 'Registered'
33
+ """
34
+ return ipas.translate_status(status)
35
+
36
+ def translate_feature(trademark):
37
+ feature = trademark.MarkFeature
38
+
39
+ if not feature: return 'Undefined'
40
+
41
+ return ipas.translate_feature(feature)
42
+
43
+ def translate_event(event):
44
+ if not event: return 'Unknown'
45
+
46
+ return ipas.translate_event(event)
47
+
48
+ # ---------------------------------------
49
+ # # language code is not accurate for markVerbalElement
50
+ # def guess_language(text, lang, default):
51
+ # if commons.is_latin(text):
52
+ # return 'en'
53
+ # else:
54
+ # return commons.guess_language(text, lang, default)
55
+
56
+ # TODO: separate values like
57
+ # {'ar': ['BITUTAPE - بيتوتيب']}
58
+ # {'ar': ['ديمه كابيتال Dimah Capital']}
59
+ def verbal_lang_map(markVerbalElements, applang=None):
60
+ return ipas.verbal_lang_map(markVerbalElements, applang=applang)
61
+
62
+ def get_registration_nb(trademark, tmstatus):
63
+ if trademark.RegistrationNumber:
64
+ return trademark.RegistrationNumber
65
+
66
+ return None
67
+
68
+ def get_expiry_date(trademark, tmstatus):
69
+ return ipas.get_expiry_date(trademark, tmstatus)
70
+
71
+ def get_registration_date(trademark, tmstatus):
72
+ return ipas.get_registration_date(trademark, tmstatus)
73
+
74
+ def is_international(header):
75
+ return False
76
+
77
+ def get_ir_refnum(appnum):
78
+ return
79
+
80
+ def get_goods_services(goods_services):
81
+ 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
@@ -31,7 +31,7 @@ def translate_status(status, prev_status=''):
31
31
  if status == 'Treated as Withdrawn': return 'Ended'
32
32
  if status == 'Treated As Withdrawn (Reinstatable)': return 'Ended'
33
33
  if status == 'Treated As Withdrawn (Reinstatement Pending)': return 'Ended'
34
- if status == 'Treated As Withdrawn (Continued Processing Possible)': return 'Ended'
34
+ if status == 'Treated As Withdrawn (Continued Processing Possible)': return 'Pending'
35
35
  if status == 'Refused': return 'Ended'
36
36
  if status == 'Refunded': return 'Ended'
37
37
  if status == 'Revoked': return 'Ended'
@@ -5,16 +5,16 @@
5
5
  gbdStatus: {{ status}}
6
6
  st13: {{ Trademark.tm_no | first | st13('SG', appdate=Trademark.application_date | first | convertdate('%d/%m/%Y')) }}
7
7
  registrationOfficeCode: SG
8
+ type: TRADEMARK
8
9
 
9
10
  {% if not status == 'Delete' %}
10
- type: TRADEMARK
11
11
  kind: {{ Trademark.application_type | first | translate_kind }}
12
12
 
13
13
  markFeature: {{ Trademark | translate_feature }}
14
14
  designatedCountries:
15
15
  - SG
16
16
 
17
- referece:
17
+ reference:
18
18
  {% if Trademark.ir_no %}
19
19
  office: WO
20
20
  registration:
@@ -4,6 +4,7 @@
4
4
 
5
5
  st13: {{ file.serNum | st13('US', appdate=file.head.fileDate) }}
6
6
  registrationOfficeCode: US
7
+ type: TRADEMARK
7
8
 
8
9
  {% if False and flags == '00000000000000000000000000000000000000000000000' or flags == '00000000000000000000000001000000000000000000000' %}
9
10
  gbdStatus: Delete
@@ -15,7 +16,6 @@ gbdStatus: Delete
15
16
  gbdStatus: {{ status['gbd'] }}
16
17
  officeStatus: {{ status['office'] }}
17
18
  statusDate: {{ file.head.statusDate | convertdate('%Y%m%d') }}
18
- type: TRADEMARK
19
19
  kind: {{ flags | translate_kind }}
20
20
  applicationNumber: {{ file.serNum }}
21
21
  applicationDate: {{ file.head.fileDate | convertdate('%Y%m%d') }}
@@ -0,0 +1,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # VC/T/2015/109
5
+ appnum_mask = 'VC/T/\d{4}/(.*)'
@@ -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
- elif value in ['465']:
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
@@ -36,7 +36,7 @@ filingPlace:
36
36
  # some collections indicate that the application
37
37
  # originates from international filing and provide IR number
38
38
  # (question to ask in GBD participation questionnaire)
39
- referece:
39
+ reference:
40
40
  application:
41
41
  - number:
42
42
  date:
@@ -0,0 +1,8 @@
1
+ status = ['Ended', 'Expired', 'Pending', 'Registered', 'Unknown', 'Delete']
2
+
3
+ kinds = ['Industrial Design', 'Design patent']
4
+
5
+ st13_identifier = \
6
+ { 'national': { 'design': '70'},
7
+ 'multinational': { 'design': '70' }
8
+ }
@@ -2,4 +2,4 @@ render = 'JSON'
2
2
  source = 'national'
3
3
 
4
4
  # AL/I/1996/000003
5
- appnum_mask = 'AL/(I|E|D)/\\d*/(\\d*)'
5
+ appnum_mask = 'AL/[I|E|D]/\\d*/(\\d*)'
@@ -15,6 +15,7 @@ def get_designs_count(design, header):
15
15
 
16
16
  def get_designs_pos(design, header):
17
17
  return '1'
18
+
18
19
  def translate_kind(desgin, header):
19
20
  code = header.TransactionCode.lower()
20
21
  subcode = header.TransactionSubCode.lower()
@@ -53,4 +54,16 @@ def is_international(header):
53
54
  return False
54
55
 
55
56
  def get_ir_refnum(appnum):
56
- 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,5 @@
1
+ render = 'JSON'
2
+ source = 'national'
3
+
4
+ # AL/I/1996/000003
5
+ appnum_mask = 'BN/\\d*/(\\d*)'