annotate roundup/cgi/TAL/XMLParser.py @ 2983:9614a101b68f

Stuff from the train ride this morning: - Extend the property concept in Permissions to allow a list of properties - Fix the cgi templating code to check the correct permission when rendering edit fields - A swag of changes (just the start) fixing up the customisation doc for the new tracker layout and permissions setup
author Richard Jones <richard@users.sourceforge.net>
date Tue, 30 Nov 2004 08:32:57 +0000
parents 8c2402a78bb0
children 88dbacd11cd1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 ##############################################################################
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2 #
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 # Copyright (c) 2001, 2002 Zope Corporation and Contributors.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4 # All Rights Reserved.
2348
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
5 #
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 # This software is subject to the provisions of the Zope Public License,
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 # Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 # FOR A PARTICULAR PURPOSE
2348
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
12 #
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13 ##############################################################################
2348
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
14 # Modifications for Roundup:
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
15 # 1. commented out zLOG references
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
16 """
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
17 Generic expat-based XML parser base class.
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
18 """
1071
c08b3820edd1 Adhering to ZPL
Richard Jones <richard@users.sourceforge.net>
parents: 1049
diff changeset
19
2348
8c2402a78bb0 beginning getting ZPT up to date: TAL first
Richard Jones <richard@users.sourceforge.net>
parents: 2005
diff changeset
20 #import zLOG
1049
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 class XMLParser:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 ordered_attributes = 0
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 handler_names = [
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 "StartElementHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28 "EndElementHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 "ProcessingInstructionHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 "CharacterDataHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 "UnparsedEntityDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 "NotationDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 "StartNamespaceDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 "EndNamespaceDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 "CommentHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36 "StartCdataSectionHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 "EndCdataSectionHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 "DefaultHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39 "DefaultHandlerExpand",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 "NotStandaloneHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
41 "ExternalEntityRefHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
42 "XmlDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
43 "StartDoctypeDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
44 "EndDoctypeDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
45 "ElementDeclHandler",
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
46 "AttlistDeclHandler"
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
47 ]
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
48
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
49 def __init__(self, encoding=None):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
50 self.parser = p = self.createParser()
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
51 if self.ordered_attributes:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
52 try:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
53 self.parser.ordered_attributes = self.ordered_attributes
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
54 except AttributeError:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
55 #zLOG.LOG("TAL.XMLParser", zLOG.INFO,
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
56 # "Can't set ordered_attributes")
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
57 self.ordered_attributes = 0
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
58 for name in self.handler_names:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
59 method = getattr(self, name, None)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
60 if method is not None:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
61 try:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
62 setattr(p, name, method)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
63 except AttributeError:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
64 #zLOG.LOG("TAL.XMLParser", zLOG.PROBLEM,
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
65 # "Can't set expat handler %s" % name)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
66 pass
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
67
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
68 def createParser(self, encoding=None):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
69 global XMLParseError
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
70 try:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
71 from Products.ParsedXML.Expat import pyexpat
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
72 XMLParseError = pyexpat.ExpatError
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
73 return pyexpat.ParserCreate(encoding, ' ')
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
74 except ImportError:
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
75 from xml.parsers import expat
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
76 XMLParseError = expat.ExpatError
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
77 return expat.ParserCreate(encoding, ' ')
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
78
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
79 def parseFile(self, filename):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
80 self.parseStream(open(filename))
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
81
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
82 def parseString(self, s):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
83 self.parser.Parse(s, 1)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
84
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
85 def parseURL(self, url):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
86 import urllib
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
87 self.parseStream(urllib.urlopen(url))
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
88
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
89 def parseStream(self, stream):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
90 self.parser.ParseFile(stream)
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
91
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
92 def parseFragment(self, s, end=0):
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
93 self.parser.Parse(s, end)

Roundup Issue Tracker: http://roundup-tracker.org/