Lines Matching refs:parent

56         self.parent = server_csw
64 if 'sections' in self.parent.kvp:
68 for section in self.parent.kvp['sections'].split(','):
77 if self.parent.profiles is not None:
78 for prof in self.parent.profiles['loaded'].keys():
80 self.parent.profiles['loaded'][prof].check_parameters(self.parent.kvp)
88 util.get_time_iso2unix(self.parent.repository.query_insert())
93 self.parent.context.namespaces),
94 nsmap=self.parent.context.namespaces, version='2.0.2',
97 if 'updatesequence' in self.parent.kvp:
98 if int(self.parent.kvp['updatesequence']) == updatesequence:
100 elif int(self.parent.kvp['updatesequence']) > updatesequence:
108 self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \
109 (self.parent.context.namespaces['csw'],
110 self.parent.config.get('server', 'ogc_schemas_base'))
112 metadata_main = dict(self.parent.config.items('metadata:main'))
119 self.parent.context.namespaces))
122 util.nspath_eval('ows:Title', self.parent.context.namespaces)).text = \
126 util.nspath_eval('ows:Abstract', self.parent.context.namespaces)).text = \
130 util.nspath_eval('ows:Keywords', self.parent.context.namespaces))
136 self.parent.context.namespaces)).text = k
139 util.nspath_eval('ows:Type', self.parent.context.namespaces),
144 util.nspath_eval('ows:ServiceType', self.parent.context.namespaces),
147 for stv in self.parent.context.model['parameters']['version']['values']:
150 self.parent.context.namespaces)).text = stv
153 util.nspath_eval('ows:Fees', self.parent.context.namespaces)).text = \
158 self.parent.context.namespaces)).text = \
164 util.nspath_eval('ows:ServiceProvider', self.parent.context.namespaces))
167 util.nspath_eval('ows:ProviderName', self.parent.context.namespaces)).text = \
171 util.nspath_eval('ows:ProviderSite', self.parent.context.namespaces))
174 self.parent.context.namespaces)] = 'simple'
177 self.parent.context.namespaces)] = \
181 util.nspath_eval('ows:ServiceContact', self.parent.context.namespaces))
185 self.parent.context.namespaces)).text = \
190 self.parent.context.namespaces)).text = \
194 util.nspath_eval('ows:ContactInfo', self.parent.context.namespaces))
197 self.parent.context.namespaces))
200 self.parent.context.namespaces)).text = \
204 self.parent.context.namespaces)).text = \
208 util.nspath_eval('ows:Address', self.parent.context.namespaces))
212 self.parent.context.namespaces)).text = \
216 self.parent.context.namespaces)).text = \
221 self.parent.context.namespaces)).text = \
226 self.parent.context.namespaces)).text = \
230 util.nspath_eval('ows:Country', self.parent.context.namespaces)).text = \
235 self.parent.context.namespaces)).text = \
239 util.nspath_eval('ows:OnlineResource', self.parent.context.namespaces))
242 self.parent.context.namespaces)] = 'simple'
245 self.parent.context.namespaces)] = \
250 self.parent.context.namespaces)).text = \
255 self.parent.context.namespaces)).text = \
259 util.nspath_eval('ows:Role', self.parent.context.namespaces),
267 self.parent.context.namespaces))
269 for operation in self.parent.context.model['operations_order']:
271 util.nspath_eval('ows:Operation', self.parent.context.namespaces),
275 self.parent.context.namespaces))
278 self.parent.context.namespaces))
280 if self.parent.context.model['operations'][operation]['methods']['get']:
282 self.parent.context.namespaces))
285 self.parent.context.namespaces)] = 'simple'
288 self.parent.context.namespaces)] = self.parent.config.get('server', 'url')
290 if self.parent.context.model['operations'][operation]['methods']['post']:
292 self.parent.context.namespaces))
294 self.parent.context.namespaces)] = 'simple'
296 self.parent.context.namespaces)] = \
297 self.parent.config.get('server', 'url')
300 sorted(self.parent.context.model['operations'][operation]['parameters']):
303 self.parent.context.namespaces), name=parameter)
306 sorted(self.parent.context.model['operations'][operation]\
310 self.parent.context.namespaces)).text = val
313 for qbl in sorted(self.parent.repository.queryables.keys()):
317 self.parent.context.namespaces), name=qbl)
319 for qbl2 in sorted(self.parent.repository.queryables[qbl]):
322 self.parent.context.namespaces)).text = qbl2
324 if self.parent.profiles is not None:
325 for con in sorted(self.parent.context.model[\
329 self.parent.context.namespaces), name = con)
330 for val in self.parent.context.model['operations']\
334 self.parent.context.namespaces)).text = val
336 for parameter in sorted(self.parent.context.model['parameters'].keys()):
338 util.nspath_eval('ows:Parameter', self.parent.context.namespaces),
341 for val in self.parent.context.model['parameters'][parameter]['values']:
343 self.parent.context.namespaces)).text = val
345 for constraint in sorted(self.parent.context.model['constraints'].keys()):
347 util.nspath_eval('ows:Constraint', self.parent.context.namespaces),
350 for val in self.parent.context.model['constraints'][constraint]['values']:
352 self.parent.context.namespaces)).text = val
354 if self.parent.profiles is not None:
355 for prof in self.parent.profiles['loaded'].keys():
357 self.parent.profiles['loaded'][prof].get_extendedcapabilities()
364 util.nspath_eval('ogc:Filter_Capabilities', self.parent.context.namespaces))
367 util.nspath_eval('ogc:Spatial_Capabilities', self.parent.context.namespaces))
370 util.nspath_eval('ogc:GeometryOperands', self.parent.context.namespaces))
376 self.parent.context.namespaces)).text = geomtype
379 util.nspath_eval('ogc:SpatialOperators', self.parent.context.namespaces))
384 util.nspath_eval('ogc:SpatialOperator', self.parent.context.namespaces),
388 util.nspath_eval('ogc:Scalar_Capabilities', self.parent.context.namespaces))
391 self.parent.context.namespaces))
394 util.nspath_eval('ogc:ComparisonOperators', self.parent.context.namespaces))
399 self.parent.context.namespaces)).text = \
403 util.nspath_eval('ogc:ArithmeticOperators', self.parent.context.namespaces))
406 util.nspath_eval('ogc:Functions', self.parent.context.namespaces))
409 util.nspath_eval('ogc:FunctionNames', self.parent.context.namespaces))
413 util.nspath_eval('ogc:FunctionName', self.parent.context.namespaces),
417 util.nspath_eval('ogc:Id_Capabilities', self.parent.context.namespaces))
421 self.parent.context.namespaces))
428 if 'typename' not in self.parent.kvp or \
429 len(self.parent.kvp['typename']) == 0: # missing typename
431 self.parent.kvp['typename'] = ['csw:Record']
433 if self.parent.profiles is not None:
434 for prof in self.parent.profiles['loaded'].keys():
435 self.parent.kvp['typename'].append(
436 self.parent.profiles['loaded'][prof].typename)
438 elif self.parent.requesttype == 'GET': # pass via GET
439 self.parent.kvp['typename'] = self.parent.kvp['typename'].split(',')
441 if ('outputformat' in self.parent.kvp and
442 self.parent.kvp['outputformat'] not in
443 self.parent.context.model['operations']['DescribeRecord']
447 self.parent.kvp['outputformat'])
449 if ('schemalanguage' in self.parent.kvp and
450 self.parent.kvp['schemalanguage'] not in
451 self.parent.context.model['operations']['DescribeRecord']['parameters']
455 self.parent.kvp['schemalanguage'])
458 self.parent.context.namespaces), nsmap=self.parent.context.namespaces)
461 self.parent.context.namespaces)] = \
462 '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'],
463 self.parent.config.get('server', 'ogc_schemas_base'))
465 for typename in self.parent.kvp['typename']:
472 util.nspath_eval('csw:SchemaComponent', self.parent.context.namespaces),
474 targetNamespace=self.parent.context.namespaces['csw'])
476 path = os.path.join(self.parent.config.get('server', 'home'),
479 dublincore = etree.parse(path, self.parent.context.parser).getroot()
483 if self.parent.profiles is not None:
484 for prof in self.parent.profiles['loaded'].keys():
485 if self.parent.profiles['loaded'][prof].typename == typename:
487 self.parent.profiles['loaded'][prof].get_schemacomponents()
495 if ('parametername' not in self.parent.kvp and
496 'propertyname' not in self.parent.kvp):
502 self.parent.context.namespaces), nsmap=self.parent.context.namespaces)
505 self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \
506 (self.parent.context.namespaces['csw'],
507 self.parent.config.get('server', 'ogc_schemas_base'))
509 if 'parametername' in self.parent.kvp:
510 for pname in self.parent.kvp['parametername'].split(','):
513 util.nspath_eval('csw:DomainValues', self.parent.context.namespaces),
517 self.parent.context.namespaces)).text = pname
522 if (operation in self.parent.context.model['operations'].keys() and
524 self.parent.context.model['operations'][operation]['parameters'].keys()):
526 util.nspath_eval('csw:ListOfValues', self.parent.context.namespaces))
528 sorted(self.parent.context.model['operations'][operation]\
532 self.parent.context.namespaces)).text = val
534 if 'propertyname' in self.parent.kvp:
535 for pname in self.parent.kvp['propertyname'].split(','):
542 pname2 = self.parent.repository.queryables['_all'][pname]['dbcol']
548 if self.parent.profiles is not None:
549 for prof in self.parent.profiles['loaded'].keys():
550 for prefix in self.parent.profiles['loaded'][prof].prefixes:
552 dvtype = self.parent.profiles['loaded'][prof].typename
558 util.nspath_eval('csw:DomainValues', self.parent.context.namespaces),
562 self.parent.context.namespaces)).text = pname
571 if (self.parent.config.has_option('server', 'domaincounts') and
572 self.parent.config.get('server', 'domaincounts') == 'true'):
575 results = self.parent.repository.query_domain(
576 pname2, dvtype, self.parent.domainquerytype, count)
580 if self.parent.domainquerytype == 'range':
583 self.parent.context.namespaces))
587 self.parent.context.namespaces)).text = results[0][0]
591 self.parent.context.namespaces)).text = results[0][1]
595 self.parent.context.namespaces))
606 self.parent.context.namespaces)).text = val
618 if ('elementsetname' not in self.parent.kvp and
619 'elementname' not in self.parent.kvp):
625 if 'outputschema' not in self.parent.kvp:
626 self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw']
628 if (self.parent.kvp['outputschema'] not in self.parent.context.model['operations']
632 self.parent.kvp['outputschema'])
634 if 'outputformat' not in self.parent.kvp:
635 self.parent.kvp['outputformat'] = 'application/xml'
637 if (self.parent.kvp['outputformat'] not in self.parent.context.model['operations']
641 self.parent.kvp['outputformat'])
643 if 'resulttype' not in self.parent.kvp:
644 self.parent.kvp['resulttype'] = 'hits'
646 if self.parent.kvp['resulttype'] is not None:
647 if (self.parent.kvp['resulttype'] not in self.parent.context.model['operations']
651 self.parent.kvp['resulttype'])
653 if (('elementname' not in self.parent.kvp or
654 len(self.parent.kvp['elementname']) == 0) and
655 self.parent.kvp['elementsetname'] not in
656 self.parent.context.model['operations']['GetRecords']['parameters']
660 self.parent.kvp['elementsetname'])
662 if ('elementname' in self.parent.kvp and
663 self.parent.requesttype == 'GET'): # passed via GET
664 self.parent.kvp['elementname'] = self.parent.kvp['elementname'].split(',')
665 self.parent.kvp['elementsetname'] = 'summary'
667 if 'typenames' not in self.parent.kvp:
671 if ('typenames' in self.parent.kvp and
672 self.parent.requesttype == 'GET'): # passed via GET
673 self.parent.kvp['typenames'] = self.parent.kvp['typenames'].split(',')
675 if 'typenames' in self.parent.kvp:
676 for tname in self.parent.kvp['typenames']:
677 if (tname not in self.parent.context.model['operations']['GetRecords']
684 if 'elementname' in self.parent.kvp:
685 for ename in self.parent.kvp['elementname']:
686 enamelist = self.parent.repository.queryables['_all'].keys()
692 if self.parent.kvp['resulttype'] == 'validate':
697 if self.parent.config.has_option('server', 'maxrecords'):
698 maxrecords_cfg = int(self.parent.config.get('server', 'maxrecords'))
700 if 'maxrecords' not in self.parent.kvp: # not specified by client
702 self.parent.kvp['maxrecords'] = maxrecords_cfg
704 self.parent.kvp['maxrecords'] = 10
706 if self.parent.kvp['maxrecords'] == '':
707 self.parent.kvp['maxrecords'] = 10
709 if int(self.parent.kvp['maxrecords']) > maxrecords_cfg:
710 self.parent.kvp['maxrecords'] = maxrecords_cfg
712 if any(x in ['bbox', 'q', 'time'] for x in self.parent.kvp):
714 self.parent.kvp['constraintlanguage'] = 'FILTER'
715 tmp_filter = opensearch.kvp2filterxml(self.parent.kvp, self.parent.context,
716 self.parent.profiles)
718 self.parent.kvp['constraint'] = tmp_filter
719 … LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.', self.parent.kvp['constraint'])
721 if self.parent.requesttype == 'GET':
722 if 'constraint' in self.parent.kvp:
725 if 'constraintlanguage' not in self.parent.kvp:
729 if (self.parent.kvp['constraintlanguage'] not in
730 self.parent.context.model['operations']['GetRecords']['parameters']
734 % self.parent.kvp['constraintlanguage'])
735 if self.parent.kvp['constraintlanguage'] == 'CQL_TEXT':
736 tmp = self.parent.kvp['constraint']
740 self.parent.kvp['constraint'] = {}
741 self.parent.kvp['constraint']['type'] = 'filter'
742 cql = cql2fes1(tmp, self.parent.context.namespaces)
743 … self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = fes1.parse(cql,
744 self.parent.repository.queryables['_all'], self.parent.repository.dbtype,
745 …self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.reposit…
746 …self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespa…
751 elif self.parent.kvp['constraintlanguage'] == 'FILTER':
754 schema = os.path.join(self.parent.config.get('server', 'home'),
756 LOGGER.info('Validating Filter %s', self.parent.kvp['constraint'])
759 doc = etree.fromstring(self.parent.kvp['constraint'], parser)
761 self.parent.kvp['constraint'] = {}
762 self.parent.kvp['constraint']['type'] = 'filter'
763 … self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = \
765 self.parent.repository.queryables['_all'],
766 self.parent.repository.dbtype,
767 …self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.reposit…
768 …self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(doc), self.parent.context.namespa…
776 self.parent.kvp['constraint'] = {}
778 if 'sortby' not in self.parent.kvp:
779 self.parent.kvp['sortby'] = None
780 elif 'sortby' in self.parent.kvp and self.parent.requesttype == 'GET':
782 tmp = self.parent.kvp['sortby']
783 self.parent.kvp['sortby'] = {}
793 self.parent.kvp['sortby']['propertyname'] = \
794 self.parent.repository.queryables['_all'][name]['dbcol']
797 self.parent.kvp['sortby']['spatial'] = True
807 self.parent.kvp['sortby']['order'] = 'DESC'
809 self.parent.kvp['sortby']['order'] = 'ASC'
811 if 'startposition' not in self.parent.kvp or not self.parent.kvp['startposition']:
812 self.parent.kvp['startposition'] = 1
817 self.parent.kvp['constraint'], self.parent.kvp['sortby'], self.parent.kvp['typenames'],
818 self.parent.kvp['maxrecords'], self.parent.kvp['startposition'])
821 matched, results = self.parent.repository.query(
822 constraint=self.parent.kvp['constraint'],
823 sortby=self.parent.kvp['sortby'], typenames=self.parent.kvp['typenames'],
824 maxrecords=self.parent.kvp['maxrecords'],
825 startposition=int(self.parent.kvp['startposition'])-1)
827 LOGGER.exception('Invalid query syntax. Query: %s', self.parent.kvp['constraint'])
834 if (self.parent.config.has_option('server', 'federatedcatalogues') and
835 'distributedsearch' in self.parent.kvp and
836 self.parent.kvp['distributedsearch'] and self.parent.kvp['hopcount'] > 0):
840 self.parent.kvp['hopcount'])
845 self.parent.config.get('server', 'federatedcatalogues').split(','):
850 remotecsw.getrecords2(xml=self.parent.request,
851 esn=self.parent.kvp['elementsetname'],
852 outputschema=self.parent.kvp['outputschema'])
880 elif int(self.parent.kvp['maxrecords']) == 0:
883 elif int(matched) < int(self.parent.kvp['startposition']):
886 …elif int(matched) <= int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']) - …
887 returned = str(int(matched) - int(self.parent.kvp['startposition']) + 1)
890 returned = str(self.parent.kvp['maxrecords'])
891 … nextrecord = str(int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']))
897 self.parent.context.namespaces),
898 nsmap=self.parent.context.namespaces, version='2.0.2')
901 self.parent.context.namespaces)] = \
903 … (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base'))
905 if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:
907 self.parent.context.namespaces)).text = self.parent.kvp['requestid']
910 self.parent.context.namespaces), timestamp=timestamp)
912 if 'where' not in self.parent.kvp['constraint'] and \
913 self.parent.kvp['resulttype'] is None:
917 util.nspath_eval('csw:SearchResults', self.parent.context.namespaces),
919 nextRecord=nextrecord, recordSchema=self.parent.kvp['outputschema'])
921 if self.parent.kvp['elementsetname'] is not None:
922 searchresults.attrib['elementSet'] = self.parent.kvp['elementsetname']
924 if 'where' not in self.parent.kvp['constraint'] \
925 and self.parent.kvp['resulttype'] is None:
929 if self.parent.kvp['resulttype'] == 'hits':
934 if len(results) < int(self.parent.kvp['maxrecords']):
937 … max1 = int(self.parent.kvp['startposition']) + (int(self.parent.kvp['maxrecords'])-1)
939 self.parent.kvp['startposition'], max1)
943 if (self.parent.kvp['outputschema'] ==
945 'csw:Record' in self.parent.kvp['typenames']):
948 res, self.parent.repository.queryables['_all']))
949 elif (self.parent.kvp['outputschema'] ==
951 'csw:Record' not in self.parent.kvp['typenames']):
954 for prof in self.parent.profiles['loaded']:
956 if self.parent.profiles['loaded'][prof].typename in \
957 self.parent.kvp['typenames']:
958 typename = self.parent.profiles['loaded'][prof].typename
962 self.parent.repository.queryables['_all'],
963 self.parent.context.model['typenames'][typename][
968 res, self.parent.repository.queryables['_all']))
969 …elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys(): # use outputschema seri…
970 …d(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(res, self.parent.kvp['el…
973 self.parent.profiles['loaded'][self.parent.kvp['outputschema']].\
974 write_record(res, self.parent.kvp['elementsetname'],
975 self.parent.kvp['outputschema'],
976 self.parent.repository.queryables['_all']))
978 self.parent.response = self.exceptionreport(
981 return self.parent.response
988 … searchresults.append(etree.fromstring(resultset[rec].xml, self.parent.context.parser))
990 if 'responsehandler' in self.parent.kvp: # process the handler
991 self.parent._process_responsehandler(etree.tostring(node,
992 pretty_print=self.parent.pretty_print))
999 if 'id' not in self.parent.kvp:
1002 if len(self.parent.kvp['id']) < 1:
1005 if 'outputschema' not in self.parent.kvp:
1006 self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw']
1008 if self.parent.requesttype == 'GET':
1009 self.parent.kvp['id'] = self.parent.kvp['id'].split(',')
1011 if ('outputformat' in self.parent.kvp and
1012 self.parent.kvp['outputformat'] not in
1013 self.parent.context.model['operations']['GetRecordById']['parameters']
1017 self.parent.kvp['outputformat'])
1019 if ('outputschema' in self.parent.kvp and self.parent.kvp['outputschema'] not in
1020 self.parent.context.model['operations']['GetRecordById']['parameters']
1024 self.parent.kvp['outputschema'])
1026 if 'elementsetname' not in self.parent.kvp:
1027 self.parent.kvp['elementsetname'] = 'summary'
1029 if (self.parent.kvp['elementsetname'] not in
1030 self.parent.context.model['operations']['GetRecordById']['parameters']
1034 self.parent.kvp['elementsetname'])
1037 self.parent.context.namespaces), nsmap=self.parent.context.namespaces)
1040 self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \
1041 … (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base'))
1044 LOGGER.info('Querying repository with ids: %s', self.parent.kvp['id'][0])
1045 results = self.parent.repository.query_ids(self.parent.kvp['id'])
1051 … self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)
1055 self.parent.context.md_core_model['mappings']['pycsw:Typename']) == 'csw:Record'
1056 and self.parent.kvp['outputschema'] ==
1060 result, self.parent.repository.queryables['_all']))
1061 elif (self.parent.kvp['outputschema'] ==
1066 for prof in self.parent.profiles['loaded']: # find source typename
1067 if self.parent.profiles['loaded'][prof].typename in \
1068 … [util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename'])]:
1069 typename = self.parent.profiles['loaded'][prof].typename
1074 self.parent.repository.queryables['_all'],
1075 self.parent.context.model['typenames'][typename][
1080 result, self.parent.repository.queryables['_all']))
1081 …elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys(): # use outputschema seri…
1082 …self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(result, self.parent.kvp['e…
1085 self.parent.profiles['loaded'][self.parent.kvp['outputschema']].write_record(
1086 result, self.parent.kvp['elementsetname'],
1087 self.parent.kvp['outputschema'], self.parent.repository.queryables['_all']))
1098 node = self.parent.getrecordbyid(raw=True)
1101 'No repository item found for \'%s\'' % self.parent.kvp['id'])
1109 self.parent._test_manager()
1120 LOGGER.debug('Transaction list: %s', self.parent.kvp['transactions'])
1122 for ttype in self.parent.kvp['transactions']:
1125 record = metadata.parse_record(self.parent.context,
1126 ttype['xml'], self.parent.repository)[0]
1136 self.parent.context.md_core_model['mappings']['pycsw:Identifier']):
1142 self.parent.repository.insert(record, 'local',
1148 self.parent.context.md_core_model['mappings']['pycsw:Identifier']),
1150 self.parent.context.md_core_model['mappings']['pycsw:Title'])})
1159 record = metadata.parse_record(self.parent.context,
1160 ttype['xml'], self.parent.repository)[0]
1162 self.parent.context.md_core_model['mappings']['pycsw:Identifier'])
1171 results = self.parent.repository.query_ids(ids=[identifier])
1177 self.parent.repository.update(record)
1186 if rp['name'] not in self.parent.repository.queryables['_all']:
1190 for osch in self.parent.outputschemas.values():
1194 … rp['rp']['dbcol'] = self.parent.repository.queryables['_all'][key]
1201 self.parent.repository.queryables['_all'][rp['name']]
1205 updated += self.parent.repository.update(record=None,
1215 deleted += self.parent.repository.delete(ttype['constraint'])
1218 self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='2.0.2')
1221 self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-publication.xsd' % \
1222 … (self.parent.context.namespaces['csw'], self.parent.config.get('server', 'ogc_schemas_base'))
1228 if (len(insertresults) > 0 and self.parent.kvp['verboseresponse']):
1242 self.parent._test_manager()
1246 if self.parent.requesttype == 'GET':
1247 if 'resourcetype' not in self.parent.kvp:
1250 if 'source' not in self.parent.kvp:
1255 if (self.parent.kvp['resourcetype'] not in
1256 self.parent.context.model['operations']['Harvest']['parameters']['ResourceType']
1261 ','.join(sorted(self.parent.context.model['operations']['Harvest']['parameters']
1264 if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and
1265 self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1):
1267 LOGGER.debug('Fetching resource %s', self.parent.kvp['source'])
1269 content = util.http_request('GET', self.parent.kvp['source'])
1272 (self.parent.kvp['source'], str(err))
1277 content = self.parent.kvp['source']
1280 results = self.parent.repository.query_source(content)
1284 …service_identifier = getattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:Iden…
1291 if hasattr(self.parent.repository, 'local_ingest') and self.parent.repository.local_ingest:
1295 … ir = self.parent.repository.insert(self.parent.kvp['resourcetype'], self.parent.kvp['source'])
1304 records_parsed = metadata.parse_record(self.parent.context,
1305 content, self.parent.repository, self.parent.kvp['resourcetype'],
1306 pagesize=self.parent.csw_harvest_pagesize)
1318 if self.parent.kvp['resourcetype'] == 'urn:geoss:waf':
1321 src = self.parent.kvp['source']
1323 setattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source'],
1326 setattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate'],
1330 self.parent.context.md_core_model['mappings']['pycsw:Identifier'])
1332 self.parent.context.md_core_model['mappings']['pycsw:Source'])
1334 self.parent.context.md_core_model['mappings']['pycsw:InsertDate'])
1336 self.parent.context.md_core_model['mappings']['pycsw:Title'])
1338 … record_type = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Type'])
1340 …record_identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifie…
1356 if not self.parent.config.has_option('repository', 'source'):
1359 results = self.parent.repository.query_ids(ids=[identifier])
1363 results = self.parent.repository.query_ids(ids=[service_identifier])
1370 tmp = self.parent.repository.insert(record, source, insert_date)
1383 self.parent.repository.update(record)
1402 self.parent.repository.delete(delete_constraint)
1405 self.parent.context.namespaces), nsmap=self.parent.context.namespaces)
1408 self.parent.context.namespaces)] = \
1409 '%s %s/csw/2.0.2/CSW-publication.xsd' % (self.parent.context.namespaces['csw'],
1410 self.parent.config.get('server', 'ogc_schemas_base'))
1414 self.parent.context.namespaces), version='2.0.2')
1424 if 'responsehandler' in self.parent.kvp: # process the handler
1425 self.parent._process_responsehandler(etree.tostring(node,
1426 pretty_print=self.parent.pretty_print))
1432 if self.parent.kvp['elementsetname'] == 'brief':
1434 elif self.parent.kvp['elementsetname'] == 'summary':
1440 self.parent.context.namespaces))
1442 if ('elementname' in self.parent.kvp and
1443 len(self.parent.kvp['elementname']) > 0):
1444 for elemname in self.parent.kvp['elementname']:
1448 self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),
1449 self.parent.context.namespaces)
1457 self.parent.context.namespaces)).text = value
1458 elif 'elementsetname' in self.parent.kvp:
1459 if (self.parent.kvp['elementsetname'] == 'full' and
1460 util.getqattr(recobj, self.parent.context.md_core_model['mappings']\
1462 util.getqattr(recobj, self.parent.context.md_core_model['mappings']\
1464 util.getqattr(recobj, self.parent.context.md_core_model['mappings']\
1468 … self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)
1471 util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = \
1473 self.parent.context.md_core_model['mappings']['pycsw:Identifier'])
1480 self.parent.context.namespaces)).text = val
1482 if self.parent.kvp['elementsetname'] in ['summary', 'full']:
1489 self.parent.context.namespaces)).text = keyword
1491 … val = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:TopicCategory'])
1495 …self.parent.context.namespaces), scheme='http://www.isotc211.org/2005/resources/Codelist/gmxCodeli…
1501 self.parent.context.namespaces)).text = val
1505 self.parent.context.md_core_model['mappings']['pycsw:Links'])
1513 self.parent.context.namespaces),
1520 util.nspath_eval(i, self.parent.context.namespaces)).text = val
1522 if self.parent.kvp['elementsetname'] == 'full': # add full elements
1529 util.nspath_eval(i, self.parent.context.namespaces)).text = val
1533 …util.nspath_eval('dct:spatial', self.parent.context.namespaces), scheme='http://www.opengis.net/de…
1537 self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),
1538 self.parent.context.namespaces)
1549 tmp = element.find(util.nspath_eval('ogc:Filter', self.parent.context.namespaces))
1555 self.parent.repository.queryables['_all'], self.parent.repository.dbtype,
1556 …self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.reposit…
1557 query['_dict'] = xml2dict(etree.tostring(tmp), self.parent.context.namespaces)
1561 tmp = element.find(util.nspath_eval('csw:CqlText', self.parent.context.namespaces))
1567 cql = cql2fes1(tmp.text, self.parent.context.namespaces)
1569 self.parent.repository.queryables['_all'], self.parent.repository.dbtype,
1570 …self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.reposit…
1571 query['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespaces)
1584 doc = etree.fromstring(postdata, self.parent.context.parser)
1593 self.parent.context.namespaces)):
1596 self.parent.soap = True
1600 self.parent.context.namespaces)).xpath('child::*')[0]
1603 self.parent.context.namespaces), util.nspath_eval('csw:Harvest',
1604 self.parent.context.namespaces)]):
1605 schema = os.path.join(self.parent.config.get('server', 'home'),
1608 schema = os.path.join(self.parent.config.get('server', 'home'),
1617 self.parent.context.namespaces)) is None and \
1619 namespaces=self.parent.context.namespaces)) == 0:
1624 if hasattr(self.parent, 'soap') and self.parent.soap:
1631 doc = etree.fromstring(postdata, self.parent.context.parser)
1649 self.parent.context.namespaces))
1661 self.parent.context.namespaces))
1665 self.parent.context.namespaces))])
1671 self.parent.context.namespaces))]
1684 self.parent.context.namespaces))
1689 self.parent.context.namespaces))
1697 else self.parent.context.namespaces['csw']
1717 self.parent.context.namespaces))
1727 self.parent.context.namespaces))
1732 self.parent.context.namespaces))
1736 'csw:Query', self.parent.context.namespaces)).attrib.get('typeNames')
1742 self.parent.context.namespaces))]
1746 self.parent.context.namespaces))
1757 self.parent.context.namespaces))
1766 self.parent.context.namespaces)).text
1769 self.parent.repository.queryables['_all'][elname]['dbcol']
1782 'ogc:SortProperty/ogc:SortOrder', self.parent.context.namespaces))
1791 doc.findall(util.nspath_eval('csw:Id', self.parent.context.namespaces))]
1794 self.parent.context.namespaces))
1800 else self.parent.context.namespaces['csw']
1820 doc.xpath('//csw:Insert', namespaces=self.parent.context.namespaces):
1829 doc.xpath('//csw:Update', namespaces=self.parent.context.namespaces):
1840 self.parent.context.namespaces)):
1842 self.parent.context.namespaces)).text
1845 self.parent.context.namespaces)).text
1852 self.parent.context.namespaces)))
1857 doc.xpath('//csw:Delete', namespaces=self.parent.context.namespaces):
1861 self.parent.context.namespaces)))
1872 self.parent.context.namespaces)).text
1876 self.parent.context.namespaces)).text
1879 self.parent.context.namespaces))
1886 self.parent.context.namespaces))
1891 self.parent.context.namespaces))
1899 self.parent.context.namespaces))
1901 if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:
1902 node.attrib['requestId'] = self.parent.kvp['requestid']
1905 self.parent.context.namespaces)).text = str(inserted)
1908 self.parent.context.namespaces)).text = str(updated)
1911 self.parent.context.namespaces)).text = str(deleted)
1918 self.parent.context.namespaces),
1919 nsmap = self.parent.context.namespaces, timeStamp=util.get_today_and_now())
1923 self.parent.context.namespaces)] = \
1924 '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'], \
1925 self.parent.config.get('server', 'ogc_schemas_base'))
1928 self.parent.context.namespaces))
1929 if self.parent.requesttype == 'POST':
1930 node1.append(etree.fromstring(self.parent.request, self.parent.context.parser))
1933 self.parent.context.namespaces))
1935 node2.text = self.parent.request
1937 if self.parent.asynchronous:
1939 self.parent.context.namespaces)).text = self.kvp['requestid']
1946 self.parent.context.namespaces))
1950 self.parent.context.namespaces))
1954 self.parent.context.namespaces)).text = ir['identifier']
1958 self.parent.context.namespaces)).text = ir['title']
1964 self.parent.exception = True
1965 self.parent.status = 'OK'
1968 language = self.parent.config.get('server', 'language')
1969 ogc_schemas_base = self.parent.config.get('server', 'ogc_schemas_base')
1972 ogc_schemas_base = self.parent.context.ogc_schemas_base
1975 self.parent.context.namespaces), nsmap=self.parent.context.namespaces,
1979 self.parent.context.namespaces)] = \
1981 (self.parent.context.namespaces['ows'], ogc_schemas_base)
1984 self.parent.context.namespaces),
1989 self.parent.context.namespaces))