HCE Project Python language Distributed Tasks Manager Application, Distributed Crawler Application and client API bindings.  2.0.0-chaika
Hierarchical Cluster Engine Python language binding
app.Filters.Filters Class Reference
Inheritance diagram for app.Filters.Filters:
Collaboration diagram for app.Filters.Filters:

Public Member Functions

def __init__ (self, filters, dbTaskWrapper=None, siteId=None, readMode=0, fields=None, opCode=None, stage=None, selectSubject=None)
 
def readFiltersFromDict (self, filters, opCode=None, stage=None, selectSubject=None)
 
def readFiltersFromDB (self, dbTaskWrapper, siteId, readMode, opCode=None, stage=None, selectSubject=None)
 
def macroReplace (self, pattern, values, marker, case=MACRO_CASE_ORIGINAL)
 
def comparing (self, value1, value2, OCType)
 
def searchFiltersWithStage (self, stage)
 
def isExistStage (self, stage)
 
def isExist (self, stage, opCode)
 
def filterAll (self, stage, value, logic=LOGIC_AND, subject=None, excludeIncludeMode=None)
 
def isExistInActions (self, value)
 
def getGmtTime (self, localPattern, loggerIns)
 
def checkSqlExpression (self, pattern, pubdate=None, fields=None)
 

Public Attributes

 patternCache
 
 reFlags
 
 dbTaskWrapper
 
 siteId
 
 readMode
 
 fields
 
 stage
 
 filters
 

Static Public Attributes

string DB_NAME = "dc_sites"
 
string REPLACE_MARKER = '%'
 
int ACTION_MULTIPLE = -1
 
string FILTER_SPLIT_PATTERN = '\r\n'
 
string FILTER_NAME_PATTERN = "Pattern"
 
string FILTER_NAME_SUBJECT = "Subject"
 
string FILTER_NAME_OP_CODE = "OperationCode"
 
string FILTER_NAME_STAGE = "Stage"
 
string FILTER_NAME_ACTION = "Action"
 
string FILTER_NAME_GROUP = "Group_Id"
 
string FILTER_NAME_STATE = "State"
 
int STAGE_COLLECT_URLS = 0
 
int STAGE_BEFORE_DOM_PRE = 1
 
int STAGE_AFTER_DOM_PRE = 2
 
int STAGE_AFTER_DOM = 3
 
int STAGE_AFTER_PROCESSOR = 4
 
int STAGE_ALL = 5
 
int STAGE_COLLECT_URLS_PROTOCOLS = 6
 
int STAGE_BEFORE_PROCESSOR = 7
 
int STAGE_REDIRECT_URL = 8
 
string SELECT_SUBJECT_RAW_CONTENT = 'RAW_CONTENT'
 
string SELECT_SUBJECT_HEADERS_ALL = 'HEADERS_ALL'
 
string SELECT_SUBJECT_LAST_MODIFIED = 'LAST_MODIFIED'
 
int LOGIC_OR = 0
 
int LOGIC_AND = 1
 
int OC_RE = 0
 
int OC_EQ = 1
 
int OC_NOTEQ = 2
 
int OC_EQLESS = 3
 
int OC_EQMORE = 4
 
int OC_LESS = 5
 
int OC_MORE = 6
 
int OC_SQLE = 7
 
int STATE_DISABLE = 0
 
int STATE_ENABLE = 1
 
int MACRO_CASE_ORIGINAL = 0
 
int MACRO_CASE_UPPER = 1
 
int MACRO_CASE_LOWER = 2
 

Detailed Description

Definition at line 25 of file Filters.py.

Constructor & Destructor Documentation

◆ __init__()

def app.Filters.Filters.__init__ (   self,
  filters,
  dbTaskWrapper = None,
  siteId = None,
  readMode = 0,
  fields = None,
  opCode = None,
  stage = None,
  selectSubject = None 
)

Definition at line 87 of file Filters.py.

87  selectSubject=None):
88  self.patternCache = {}
89  self.reFlags = re.M | re.U
90  self.dbTaskWrapper = dbTaskWrapper
91  self.siteId = siteId
92  self.readMode = readMode
93  self.fields = fields
94  self.stage = stage
95 
96  self.filters = []
97 
98  if filters is not None:
99  # if filters is not None istantiate self.filters directly
100  self.readFiltersFromDict(filters, opCode, stage, selectSubject)
101  # #else:
102  # else fill self.filters from database, using dbTask and siteId params (make SiteStatusTask request)
103  # Look CrawlerTask.readSiteFromDB method, return Site.filters field and parse it
104  # #self.filters = []
105  if dbTaskWrapper is not None and siteId is not None:
106  self.readFiltersFromDB(dbTaskWrapper, siteId, readMode, opCode, stage, selectSubject)
107 
108 

Member Function Documentation

◆ checkSqlExpression()

def app.Filters.Filters.checkSqlExpression (   self,
  pattern,
  pubdate = None,
  fields = None 
)

Definition at line 437 of file Filters.py.

437  def checkSqlExpression(self, pattern, pubdate=None, fields=None):
438  # variable for result
439  ret = False
440 
441  if self.dbTaskWrapper is None:
442  ret = True
443  else:
444  if fields is None:
445  logger.debug('pattern: ' + str(pattern))
446  logger.debug('pubdate: ' + str(pubdate))
447 
448  if pubdate is not None:
449  dt = DateTimeType.parse(pubdate, True, logger, False)
450  if dt is not None:
451  dateStr = "'" + dt.strftime("%Y-%m-%d %H:%M:%S") + "'"
452  localPattern = self.macroReplace(pattern, {'PDATE':dateStr}, self.REPLACE_MARKER)
453  logger.debug('localPattern: ' + str(localPattern))
454 
455  sqlQuery = "SELECT * FROM `sites_filters` WHERE `Mode`='%s' AND `State`='1' AND `Site_Id`='%s'" % \
456  (str(self.readMode), str(self.siteId))
457 
458  if localPattern:
459  sqlQuery += " AND " + localPattern
460 
461  logger.debug("sqlQuery: " + str(sqlQuery))
462 
463  customResponse = self.dbTaskWrapper.customRequest(sqlQuery, self.DB_NAME)
464  logger.debug("customResponse: " + str(customResponse))
465  if customResponse is not None:
466  for elem in customResponse:
467  if elem is not None:
468  logger.debug("elem: " + str(elem))
469 
470  ret = bool(len(customResponse) > 0)
471  else:
472  pattern = self.macroReplace(pattern, fields, self.REPLACE_MARKER, case=1)
473  sqlQuery = 'SELECT ' + pattern
474  logger.debug("sqlQuery: " + str(sqlQuery))
475  affectDB = self.dbTaskWrapper.affect_db
476  self.dbTaskWrapper.affect_db = True
477  customResponse = self.dbTaskWrapper.customRequest(sqlQuery, self.DB_NAME)
478  self.dbTaskWrapper.affect_db = affectDB
479  logger.debug("customResponse: " + str(customResponse))
480  if customResponse is not None and len(customResponse) > 0 and len(customResponse[0]) > 0 and \
481  int(customResponse[0][0]) > 0:
482  ret = True
483 
484  return ret
485 
Here is the call graph for this function:
Here is the caller graph for this function:

◆ comparing()

def app.Filters.Filters.comparing (   self,
  value1,
  value2,
  OCType 
)

Definition at line 230 of file Filters.py.

230  def comparing(self, value1, value2, OCType):
231  ret = False
232  # logger.debug("Value1:\n%s\nValue2:\n%s\nOCType:\n%s", str(value1), str(value2), str(OCType))
233 # logger.debug("Value1:\n%s\nValue2:\n%s\nOCType:\n%s", str(value1[:255] + ' . . . '), str(value2), str(OCType))
234  try:
235  if OCType == self.OC_RE:
236  # if str(value2 + str(self.reFlags)) in self.patternCache:
237  # pattern = self.patternCache[str(value2 + str(self.reFlags))]
238  # logger.debug("Use pattern '" + str(value2 + str(self.reFlags)) + "' from cache")
239  # else:
240  # #pattern = re.compile(value2, self.reFlags)
241  # logger.debug("Use pattern '" + str(value2 + str(self.reFlags)) + "' without cache")
242  # logger.debug('patternCache: ' + str(self.patternCache.keys()))
243  # #if pattern.match(value1, self.reFlags) is not None:
244  # # ret = True
245 
246  if re.search(value2, value1, self.reFlags) is not None:
247  ret = True
248 
249  elif OCType == self.OC_EQ:
250  ret = (int(value1) == int(value2))
251  elif OCType == self.OC_NOTEQ:
252  ret = (int(value1) != int(value2))
253  elif OCType == self.OC_EQLESS:
254  ret = (int(value1) <= int(value2))
255  elif OCType == self.OC_EQMORE:
256  ret = (int(value1) >= int(value2))
257  elif OCType == self.OC_LESS:
258  ret = (int(value1) < int(value2))
259  elif OCType == self.OC_MORE:
260  ret = (int(value1) > int(value2))
261  elif OCType == self.OC_SQLE:
262  ret = self.checkSqlExpression(value2, None, self.fields) # value2 content value of 'Pattern'
263  except ValueError as exp:
264  logger.debug(">>> Value error = " + str(exp))
265  except Exception, err:
266  logger.debug(">>> Common exception, OCType = " + str(OCType) + ", val1 = " + str(value1) + ", val2 = " \
267  + str(value2) + ", error: " + str(err))
268 # logger.debug('comparing ret = ' + str(ret))
269  return ret
270 
271 
Here is the call graph for this function:
Here is the caller graph for this function:

◆ filterAll()

def app.Filters.Filters.filterAll (   self,
  stage,
  value,
  logic = LOGIC_AND,
  subject = None,
  excludeIncludeMode = None 
)

Definition at line 323 of file Filters.py.

323  def filterAll(self, stage, value, logic=LOGIC_AND, subject=None, excludeIncludeMode=None):
324 # logger.debug('filterAll() enter... filters count = ' + str(len(self.filters)) + '\nstage = ' + str(stage) + \
325 # # '\nvalue: ' + str(value) + \
326 # '\nlogic: ' + str(logic) + \
327 # '\nsubject: ' + str(subject[:255]) + \
328 # '\nexcludeIncludeMode: ' + str(excludeIncludeMode))
329  if stage is None:
330  stage = self.stage
331 
332  ret = []
333 # localGroupDict = {}
334  resValues = []
335  for localFilter in self.filters:
336  if int(localFilter[self.FILTER_NAME_STATE]) == self.STATE_ENABLE and \
337  (stage == self.STAGE_ALL or localFilter[self.FILTER_NAME_STAGE] == self.STAGE_ALL or \
338  localFilter[self.FILTER_NAME_STAGE] == stage) and ((excludeIncludeMode is None) or\
339  (int(excludeIncludeMode) == int(localFilter["Action"]))):
340 # logger.debug('Use filter: %s', varDump(localFilter))
341 
342  if subject is not None and (localFilter[self.FILTER_NAME_SUBJECT] == "" or \
343  localFilter[self.FILTER_NAME_SUBJECT] == self.SELECT_SUBJECT_RAW_CONTENT or \
344  localFilter[self.FILTER_NAME_SUBJECT] == self.SELECT_SUBJECT_HEADERS_ALL or \
345  localFilter[self.FILTER_NAME_SUBJECT] == self.SELECT_SUBJECT_LAST_MODIFIED):
346  localStage = subject
347  else:
348  localStage = localFilter[self.FILTER_NAME_SUBJECT]
349 
350  # make macroreplacement localFilter["Subject"] by correspond value from value param dict
351  # apply localFilter["Patter"] for previously getted result (result of macroreplacement)
352  if localFilter[self.FILTER_NAME_PATTERN] is not None:
353  localPattern = self.macroReplace(localFilter[self.FILTER_NAME_PATTERN], value, self.REPLACE_MARKER)
354 
355 # logger.info('>>> filterAll macroReplace localPattern: ' + str(localPattern))
356  localPattern = self.getGmtTime(localPattern, logger)
357 # logger.info('>>> filterAll getGmtTime localPattern: ' + str(localPattern))
358 # logger.info('>>> filterAll logic = ' + str(logic))
359 
360  if logic == self.LOGIC_OR:
361  # Return ret = [x1, x2, ... xN] where (xN = +/- localFilter["Action"] value) of applying pattern
362  # and +/- depend on corresponds filter for own "Pattern" or not.
363  # for example:
364  # we have 3 applying filters with localFilter["Action"] = {3, 4, 5} correspondingly,
365  # 1th filter doesn't correspond own localFilter["Pattern"] , 2th and 3th - correspond
366  # that we return ret = [-3, 4, 5]
367  # if self.comparing(localStage, localPattern, localFilter[self.FILTER_NAME_OP_CODE]):
368  # localRes = localFilter[self.FILTER_NAME_ACTION]
369  # else:
370  # localRes = localFilter[self.FILTER_NAME_ACTION] * self.ACTION_MULTIPLE
371 
372  localRes = int(self.comparing(localStage, localPattern, localFilter[self.FILTER_NAME_OP_CODE]))
373 
374 # logger.info('>>> localRes: ' + str(localRes))
375 
376 # if localFilter[self.FILTER_NAME_GROUP] in localGroupDict:
377 # logger.info('>>> localFilter[self.FILTER_NAME_GROUP]: ' + str(localFilter[self.FILTER_NAME_GROUP]))
378 # if localGroupDict[localFilter[self.FILTER_NAME_GROUP]] > 0:
379 # localGroupDict[localFilter[self.FILTER_NAME_GROUP]] = localRes
380 # else:
381 # localGroupDict[localFilter[self.FILTER_NAME_GROUP]] = localRes
382 # # set result values
383 # ret = localGroupDict.values()
384 
385  # add by alexv 22.06.2017
386  resValues.append(localRes)
387  ret = resValues
388 
389  elif logic == self.LOGIC_AND:
390  # If all applying filters correspond own "Pattern"s that ret = [True], else ret = [False]
391  if self.comparing(localStage, localPattern, localFilter[self.FILTER_NAME_OP_CODE]):
392  ret = [True]
393  else:
394  ret = [False]
395  break
396 
397  return ret
398 
399 
Here is the call graph for this function:

◆ getGmtTime()

def app.Filters.Filters.getGmtTime (   self,
  localPattern,
  loggerIns 
)

Definition at line 416 of file Filters.py.

416  def getGmtTime(self, localPattern, loggerIns):
417  try:
418  d = {"SHORTYEAR":"y", "YEAR":"Y", "MONTH":"m", "DAY":"d", "HOUR":"H", "MINUTE":"M", "SECOND":"S"}
419  regex = re.compile("%@(SHORTYEAR|YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)\\(([\\+|\\-]\\d{1,2})\\)%")
420  matchArray = regex.findall(localPattern)
421 
422  for i in matchArray:
423  ii = time.strftime("%" + d[i[0]], time.gmtime(time.time() + datetime.timedelta(hours=(+int(i[1]))).seconds))
424  localPattern = localPattern.replace("%@" + i[0] + "(" + i[1] + ")%", ii)
425  except Exception, err:
426  loggerIns.error(str(err))
427 
428  return localPattern
429 
430 
Here is the caller graph for this function:

◆ isExist()

def app.Filters.Filters.isExist (   self,
  stage,
  opCode 
)

Definition at line 302 of file Filters.py.

302  def isExist(self, stage, opCode):
303  # variable for result
304  ret = False
305  if self.filters is not None:
306  for localFilter in self.filters:
307  if int(localFilter[self.FILTER_NAME_STAGE]) == int(stage) and \
308  int(localFilter[self.FILTER_NAME_OP_CODE]) == int(opCode):
309  ret = True
310  break
311 
312  return ret
313 
314 

◆ isExistInActions()

def app.Filters.Filters.isExistInActions (   self,
  value 
)

Definition at line 402 of file Filters.py.

402  def isExistInActions(self, value):
403  ret = False
404  for localFilter in self.filters:
405  if localFilter is not None and localFilter[self.FILTER_NAME_ACTION] == value:
406  ret = True
407  break
408  return ret
409 
410 

◆ isExistStage()

def app.Filters.Filters.isExistStage (   self,
  stage 
)

Definition at line 285 of file Filters.py.

285  def isExistStage(self, stage):
286  # variable for result
287  ret = False
288  if self.filters is not None:
289  for localFilter in self.filters:
290  if localFilter[self.FILTER_NAME_STAGE] == stage:
291  ret = True
292  break
293 
294  return ret
295 
296 

◆ macroReplace()

def app.Filters.Filters.macroReplace (   self,
  pattern,
  values,
  marker,
  case = MACRO_CASE_ORIGINAL 
)

Definition at line 206 of file Filters.py.

206  def macroReplace(self, pattern, values, marker, case=MACRO_CASE_ORIGINAL):
207 # logger.info('>>> macroReplace values: ' + str(values) + ' pattern: ' + str(pattern))
208 
209  ret = copy.copy(pattern)
210  for key in values:
211  if values[key] is not None:
212  if case == self.MACRO_CASE_UPPER:
213  rkey = key.upper()
214  elif case == self.MACRO_CASE_LOWER:
215  rkey = key.lower()
216  else:
217  rkey = key
218  ret = ret.replace(marker + rkey + marker, "'" + str(values[key]) + "'" if isinstance(values[key], basestring) \
219  else str(values[key]))
220 
221  return ret
222 
223 
Here is the caller graph for this function:

◆ readFiltersFromDB()

def app.Filters.Filters.readFiltersFromDB (   self,
  dbTaskWrapper,
  siteId,
  readMode,
  opCode = None,
  stage = None,
  selectSubject = None 
)

Definition at line 164 of file Filters.py.

164  def readFiltersFromDB(self, dbTaskWrapper, siteId, readMode, opCode=None, stage=None, selectSubject=None):
165  # SQL_SELECT_TEMPLATE = "SELECT `Pattern`, `Subject`, `OperationCode`, `Stage`, `Action`, `Group_Id` " + \
166  # "FROM `sites_filters` WHERE `Mode`='%s' AND `State`='1' AND `Site_Id`='%s'"
167  SQL_SELECT_TEMPLATE = "SELECT * FROM `sites_filters` WHERE `Mode`='%s' AND `State`='1' AND `Site_Id`='%s'"
168  query = SQL_SELECT_TEMPLATE % (str(readMode), str(siteId))
169 
170  if opCode is not None:
171  query += (" AND `OperationCode`='%s'" % str(opCode))
172 
173  if stage is not None:
174  query += (" AND `Stage`='%s'" % str(stage))
175 
176  if selectSubject is not None and int(stage) == self.STAGE_BEFORE_DOM_PRE:
177  query += (" AND `Subject`='%s'" % str(selectSubject))
178 
179  logger.debug(">>> Filter start SQL Req: " + str(query))
180  affectDB = dbTaskWrapper.affect_db
181  dbTaskWrapper.affect_db = True
182  customResponse = dbTaskWrapper.customRequest(query, self.DB_NAME, dbi.EventObjects.CustomRequest.SQL_BY_NAME)
183  dbTaskWrapper.affect_db = affectDB
184  logger.debug(">>> Filter end SQL Req: " + str(customResponse))
185  if customResponse is not None:
186  for i in xrange(len(customResponse)):
187 # logger.debug("customResponse[%s] = %s", str(i), str(customResponse[i]))
188  if customResponse[i] is not None:
189  patterns = customResponse[i][self.FILTER_NAME_PATTERN].split(self.FILTER_SPLIT_PATTERN)
190 # logger.debug("patterns: " + str(patterns))
191  for pattern in patterns:
192  elem = copy.copy(customResponse[i])
193  elem[self.FILTER_NAME_PATTERN] = pattern
194  self.filters.append(elem)
195 
196 # logger.debug("customResponse self.filters: " + str(self.filters))
197 
198 

◆ readFiltersFromDict()

def app.Filters.Filters.readFiltersFromDict (   self,
  filters,
  opCode = None,
  stage = None,
  selectSubject = None 
)

Definition at line 116 of file Filters.py.

116  def readFiltersFromDict(self, filters, opCode=None, stage=None, selectSubject=None):
117  self.filters = []
118  for localFilter in filters:
119  if opCode is not None and int(opCode) != int(localFilter.opCode):
120  continue
121  if stage is not None and int(stage) != int(localFilter.stage):
122  continue
123 
124  if localFilter.state == 0:
125  logger.debug("Filter: '" + str(localFilter.pattern) + "' skipped as DISABLE")
126  continue
127 
128 # logger.debug('opCode: ' + str(opCode) + ' type: ' + str(type(opCode)))
129 # logger.debug('stage: ' + str(stage) + ' type: ' + str(type(stage)))
130 # logger.debug('localFilter.stage: ' + str(localFilter.stage) + ' type: ' + str(type(localFilter.stage)))
131 # logger.debug('selectSubject: ' + str(selectSubject) + ' type: ' + str(type(selectSubject)) + \
132 # ' localFilter.subject: ' + str(localFilter.subject) + ' type: ' + str(type(localFilter.subject)))
133 
134  if int(localFilter.stage) == self.STAGE_BEFORE_DOM_PRE and \
135  selectSubject is not None and len(localFilter.subject) > 0 and \
136  selectSubject != localFilter.subject:
137  logger.debug('!!!! Skipped !!!!! ')
138  continue
139 
140  for pattern in localFilter.pattern.split(self.FILTER_SPLIT_PATTERN):
141  localDict = {}
142  localDict[self.FILTER_NAME_PATTERN] = pattern
143  if localFilter.pattern.find(self.REPLACE_MARKER) == -1:

◆ searchFiltersWithStage()

def app.Filters.Filters.searchFiltersWithStage (   self,
  stage 
)

Definition at line 272 of file Filters.py.

272  def searchFiltersWithStage(self, stage):
273  ret = 0
274  if self.filters is not None:
275  for localFilter in self.filters:
276  if localFilter[self.FILTER_NAME_STAGE] == stage:
277  ret += 1
278  return ret
279 
280 

Member Data Documentation

◆ ACTION_MULTIPLE

int app.Filters.Filters.ACTION_MULTIPLE = -1
static

Definition at line 29 of file Filters.py.

◆ DB_NAME

string app.Filters.Filters.DB_NAME = "dc_sites"
static

Definition at line 27 of file Filters.py.

◆ dbTaskWrapper

app.Filters.Filters.dbTaskWrapper

Definition at line 90 of file Filters.py.

◆ fields

app.Filters.Filters.fields

Definition at line 93 of file Filters.py.

◆ FILTER_NAME_ACTION

string app.Filters.Filters.FILTER_NAME_ACTION = "Action"
static

Definition at line 36 of file Filters.py.

◆ FILTER_NAME_GROUP

string app.Filters.Filters.FILTER_NAME_GROUP = "Group_Id"
static

Definition at line 37 of file Filters.py.

◆ FILTER_NAME_OP_CODE

string app.Filters.Filters.FILTER_NAME_OP_CODE = "OperationCode"
static

Definition at line 34 of file Filters.py.

◆ FILTER_NAME_PATTERN

string app.Filters.Filters.FILTER_NAME_PATTERN = "Pattern"
static

Definition at line 32 of file Filters.py.

◆ FILTER_NAME_STAGE

string app.Filters.Filters.FILTER_NAME_STAGE = "Stage"
static

Definition at line 35 of file Filters.py.

◆ FILTER_NAME_STATE

string app.Filters.Filters.FILTER_NAME_STATE = "State"
static

Definition at line 38 of file Filters.py.

◆ FILTER_NAME_SUBJECT

string app.Filters.Filters.FILTER_NAME_SUBJECT = "Subject"
static

Definition at line 33 of file Filters.py.

◆ FILTER_SPLIT_PATTERN

string app.Filters.Filters.FILTER_SPLIT_PATTERN = '\r\n'
static

Definition at line 30 of file Filters.py.

◆ filters

app.Filters.Filters.filters

Definition at line 96 of file Filters.py.

◆ LOGIC_AND

int app.Filters.Filters.LOGIC_AND = 1
static

Definition at line 56 of file Filters.py.

◆ LOGIC_OR

int app.Filters.Filters.LOGIC_OR = 0
static

Definition at line 55 of file Filters.py.

◆ MACRO_CASE_LOWER

int app.Filters.Filters.MACRO_CASE_LOWER = 2
static

Definition at line 74 of file Filters.py.

◆ MACRO_CASE_ORIGINAL

int app.Filters.Filters.MACRO_CASE_ORIGINAL = 0
static

Definition at line 72 of file Filters.py.

◆ MACRO_CASE_UPPER

int app.Filters.Filters.MACRO_CASE_UPPER = 1
static

Definition at line 73 of file Filters.py.

◆ OC_EQ

int app.Filters.Filters.OC_EQ = 1
static

Definition at line 60 of file Filters.py.

◆ OC_EQLESS

int app.Filters.Filters.OC_EQLESS = 3
static

Definition at line 62 of file Filters.py.

◆ OC_EQMORE

int app.Filters.Filters.OC_EQMORE = 4
static

Definition at line 63 of file Filters.py.

◆ OC_LESS

int app.Filters.Filters.OC_LESS = 5
static

Definition at line 64 of file Filters.py.

◆ OC_MORE

int app.Filters.Filters.OC_MORE = 6
static

Definition at line 65 of file Filters.py.

◆ OC_NOTEQ

int app.Filters.Filters.OC_NOTEQ = 2
static

Definition at line 61 of file Filters.py.

◆ OC_RE

int app.Filters.Filters.OC_RE = 0
static

Definition at line 59 of file Filters.py.

◆ OC_SQLE

int app.Filters.Filters.OC_SQLE = 7
static

Definition at line 66 of file Filters.py.

◆ patternCache

app.Filters.Filters.patternCache

Definition at line 88 of file Filters.py.

◆ readMode

app.Filters.Filters.readMode

Definition at line 92 of file Filters.py.

◆ reFlags

app.Filters.Filters.reFlags

Definition at line 89 of file Filters.py.

◆ REPLACE_MARKER

string app.Filters.Filters.REPLACE_MARKER = '%'
static

Definition at line 28 of file Filters.py.

◆ SELECT_SUBJECT_HEADERS_ALL

string app.Filters.Filters.SELECT_SUBJECT_HEADERS_ALL = 'HEADERS_ALL'
static

Definition at line 52 of file Filters.py.

◆ SELECT_SUBJECT_LAST_MODIFIED

string app.Filters.Filters.SELECT_SUBJECT_LAST_MODIFIED = 'LAST_MODIFIED'
static

Definition at line 53 of file Filters.py.

◆ SELECT_SUBJECT_RAW_CONTENT

string app.Filters.Filters.SELECT_SUBJECT_RAW_CONTENT = 'RAW_CONTENT'
static

Definition at line 51 of file Filters.py.

◆ siteId

app.Filters.Filters.siteId

Definition at line 91 of file Filters.py.

◆ stage

app.Filters.Filters.stage

Definition at line 94 of file Filters.py.

◆ STAGE_AFTER_DOM

int app.Filters.Filters.STAGE_AFTER_DOM = 3
static

Definition at line 43 of file Filters.py.

◆ STAGE_AFTER_DOM_PRE

int app.Filters.Filters.STAGE_AFTER_DOM_PRE = 2
static

Definition at line 42 of file Filters.py.

◆ STAGE_AFTER_PROCESSOR

int app.Filters.Filters.STAGE_AFTER_PROCESSOR = 4
static

Definition at line 44 of file Filters.py.

◆ STAGE_ALL

int app.Filters.Filters.STAGE_ALL = 5
static

Definition at line 45 of file Filters.py.

◆ STAGE_BEFORE_DOM_PRE

int app.Filters.Filters.STAGE_BEFORE_DOM_PRE = 1
static

Definition at line 41 of file Filters.py.

◆ STAGE_BEFORE_PROCESSOR

int app.Filters.Filters.STAGE_BEFORE_PROCESSOR = 7
static

Definition at line 47 of file Filters.py.

◆ STAGE_COLLECT_URLS

int app.Filters.Filters.STAGE_COLLECT_URLS = 0
static

Definition at line 40 of file Filters.py.

◆ STAGE_COLLECT_URLS_PROTOCOLS

int app.Filters.Filters.STAGE_COLLECT_URLS_PROTOCOLS = 6
static

Definition at line 46 of file Filters.py.

◆ STAGE_REDIRECT_URL

int app.Filters.Filters.STAGE_REDIRECT_URL = 8
static

Definition at line 48 of file Filters.py.

◆ STATE_DISABLE

int app.Filters.Filters.STATE_DISABLE = 0
static

Definition at line 69 of file Filters.py.

◆ STATE_ENABLE

int app.Filters.Filters.STATE_ENABLE = 1
static

Definition at line 70 of file Filters.py.


The documentation for this class was generated from the following file: