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)
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)
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
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
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> """)