980 class BaseRQLConstraint(RRQLExpression, BaseConstraint): |
980 class BaseRQLConstraint(RRQLExpression, BaseConstraint): |
981 """base class for rql constraints""" |
981 """base class for rql constraints""" |
982 distinct_query = None |
982 distinct_query = None |
983 |
983 |
984 def serialize(self): |
984 def serialize(self): |
985 # start with a comma for bw compat,see below |
985 # start with a semicolon for bw compat, see below |
986 return ';' + ','.join(sorted(self.mainvars)) + ';' + self.expression |
986 return ';' + ','.join(sorted(self.mainvars)) + ';' + self.expression |
987 |
987 |
988 @classmethod |
988 @classmethod |
989 def deserialize(cls, value): |
989 def deserialize(cls, value): |
990 # XXX < 3.5.10 bw compat |
|
991 if not value.startswith(';'): |
|
992 return cls(value) |
|
993 _, mainvars, expression = value.split(';', 2) |
990 _, mainvars, expression = value.split(';', 2) |
994 return cls(expression, mainvars) |
991 return cls(expression, mainvars) |
995 |
992 |
996 def check(self, entity, rtype, value): |
993 def check(self, entity, rtype, value): |
997 """return true if the value satisfy the constraint, else false""" |
994 """return true if the value satisfy the constraint, else false""" |
1042 # start with a semicolon for bw compat, see below |
1039 # start with a semicolon for bw compat, see below |
1043 return ';%s;%s\n%s' % (','.join(sorted(self.mainvars)), self.expression, |
1040 return ';%s;%s\n%s' % (','.join(sorted(self.mainvars)), self.expression, |
1044 self.msg or '') |
1041 self.msg or '') |
1045 |
1042 |
1046 def deserialize(cls, value): |
1043 def deserialize(cls, value): |
1047 # XXX < 3.5.10 bw compat |
|
1048 if not value.startswith(';'): |
|
1049 return cls(value) |
|
1050 value, msg = value.split('\n', 1) |
1044 value, msg = value.split('\n', 1) |
1051 _, mainvars, expression = value.split(';', 2) |
1045 _, mainvars, expression = value.split(';', 2) |
1052 return cls(expression, mainvars, msg) |
1046 return cls(expression, mainvars, msg) |
1053 deserialize = classmethod(deserialize) |
1047 deserialize = classmethod(deserialize) |
1054 |
1048 |