예제 #1
0
    def chron(self, a, b):
        date_a = self.journal.getFirst(a[0], TIMESTAMP, None)
        if date_a!=None:
            date_a = un_literal(date_a[2])
        else:
            date_a = ''

        date_b = self.journal.getFirst(b[0], TIMESTAMP, None)
        if date_b!=None:
            date_b = un_literal(date_b[2])
        else:
            date_b = ''

        return cmp(date_a, date_b)
예제 #2
0
 def comment(self, subject, default=None):
     statement = self.getFirst(subject, COMMENT, None)
     if statement!=None:
         return un_literal(statement[2])
     elif default!=None:
         return default
     else:
         return self.label(subject)
예제 #3
0
 def label(self, subject, default=None):
     statement = Statement()
     self.query(First(statement), subject, LABEL, None)
     if statement.object():
         return un_literal(statement.object())
     elif default!=None:
         return default
     else:
         return subject
예제 #4
0
    def _preCacheNeighbourStores(self, baseDirectory=None):
        rstores = self.get(None, TYPE, "http://redfoot.sourceforge.net/2000/12/redfoot-builtin#Neighbour")
	for rstore in rstores:
            location = self.getFirst(rstore[0], "http://redfoot.sourceforge.net/2000/12/redfoot-builtin#location", None)
            if location!=None:
                systemID = self.getFirst(rstore[0], "http://redfoot.sourceforge.net/2000/12/redfoot-builtin#systemID", None)
                if systemID!=None:
                    systemID = un_literal(systemID)

                from urllib import basejoin
                self.connectTo(basejoin(self.location, location), systemID)
            else:
                pass # no location to connect to
예제 #5
0
    def editProperty(self, property, value, exists=1):
        self.property_num = self.property_num + 1
        self.response.write("""
                <TR>
                  <TD VALIGN="TOP">%s
                    <INPUT TYPE="HIDDEN" NAME="prop%s_name" VALUE="%s">
                  </TD>
                  <TD VALIGN="TOP">
        """ % (self.rednode.label(property), self.property_num, property))

        def callback(s, p, o, self=self):
            self.response.write("%s<BR>" % self.rednode.label(o))
        self.rednode.visit(callback, property, RANGE, None)

        self.response.write("""
                  </TD>
                  <TD COLSPAN="2">
        """)
        if (len(value) > 0 and is_literal(value[0])) or (len(value)==0 and self.rednode.getRange(property)==LITERAL):
            uitype = self.rednode.getFirst(property, self.UITYPE, None)
            if uitype != None and uitype[2]==self.TEXTAREA:
                self.response.write("""
                <TEXTAREA NAME="prop%s_value" ROWS="5" COLS="60">%s</TEXTAREA>
                """ % (self.property_num, un_literal(value)))
                self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_orig" VALUE="%s">
            """ % (self.property_num, self.encodeAttributeValue(value)))                
            else:
                self.response.write("""
                <INPUT TYPE="TEXT" SIZE="60" NAME="prop%s_value" VALUE="%s">
                """ % (self.property_num, self.encodeAttributeValue(un_literal(value))))
                self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_orig" VALUE="%s">
            """ % (self.property_num, self.encodeAttributeValue(value)))
            self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_isLiteral" VALUE="yes">
            """ % self.property_num)
        else:
            rangelist = self.rednode.get(property, RANGE, None) # already did this above
            if len(rangelist) > 0:
                self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_orig" VALUE="%s">
            """ % (self.property_num, self.encodeAttributeValue(value)))
                self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_isLiteral" VALUE="no">
                    <SELECT NAME="prop%s_value">
                      <OPTION value="">Select a value for this property</OPTION>
                """ % (self.property_num, self.property_num))


                possibleValues = {}
                def possibleValue(s, p, o, rednode=self.rednode, possibleValues=possibleValues):
                    label = rednode.label(s)
                    # we use a key of 'label + s' to insure uniqness of key
                    possibleValues[label+s] = s 

                self.rednode.visitPossibleValues(possibleValue, property)

                pvs = possibleValues.keys()
                pvs.sort()

                for pv in pvs:
                    v = possibleValues[pv]
                    if v==value:
                        self.response.write("""
                        <OPTION SELECTED="TRUE" VALUE="%s">%s</OPTION>
                        """ % (v, self.rednode.label(v)))
                    else:
                        self.response.write("""
                        <OPTION VALUE="%s">%s</OPTION>
                        """ % (v, self.rednode.label(v)))
                    


                self.response.write("""
                    </SELECT>
                """)
            else:
                #TODO 
                self.response.write("""
                    <INPUT TYPE="TEXT" SIZE="60" NAME="prop%s_value" VALUE="%s">***
                """ % (self.property_num, self.encodeAttributeValue(value)))
                self.response.write("""
                    <INPUT TYPE="HIDDEN" NAME="prop%s_orig" VALUE="%s">
            """ % (self.property_num, self.encodeAttributeValue(value)))
                
        self.response.write("""
                </TD>""")
        if exists:
            self.response.write("""
                <TD VALIGN="TOP">
                  <INPUT TYPE="SUBMIT" NAME="processor" VALUE="del_%s">
                </TD>
		<TD VALIGN="TOP">
                  <INPUT TYPE="SUBMIT" NAME="processor" VALUE="reify_%s">
                </TD>"""  % (self.property_num, self.property_num))
        self.response.write("""
              </TR>
        """)