4 @link: http://hierarchical-cluster-engine.com/ 5 @copyright: Copyright © 2013-2014 IOIX Ukraine 6 @license: http://hierarchical-cluster-engine.com/license/ 22 GET_SITE_SQL_TEMPLATE =
" SELECT * FROM %s WHERE `Id`='%s'" 23 GET_SITE_URLS_SQL_TEMPLATE =
" SELECT `URL` FROM sites_urls WHERE `Site_Id`='%s'" 24 GET_SITE_PROPERTIES_SQL_TEMPLATE =
" SELECT `Name`, `Value` FROM sites_properties WHERE `Site_Id`='%s'" 25 GET_SITE_FILTERS_SQL_TEMPLATE =
" SELECT `Pattern`, `Type`, `Mode` FROM sites_filters WHERE `Site_Id`='%s'" 28 TASK_NOT_EXIST_ERR = 2020
29 TASK_NOT_EXISTS_ERR_MSG =
"Duplicate site" 38 def __init__(self, dcSiteTemplate, keyValueDefaultFile, keyValueStorageDir, dBDataTask, dcStatTemplates,
39 dcLogTemplate, dcAttrTemplate):
40 super(SiteFindTask, self).
__init__(dcSiteTemplate, keyValueDefaultFile, keyValueStorageDir, dBDataTask,
41 dcStatTemplates, dcLogTemplate, dcAttrTemplate)
50 def process(self, siteFind, queryCallback):
52 sites = self.
siteFind(siteFind, queryCallback)
61 if dc.EventObjects.SiteFind.CRITERION_TABLES
in siteFind.criterions
and \
62 siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]
is not None and \
63 siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES] !=
"":
64 if tableName
not in siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]:
65 tables = tableName +
", " + siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]
67 tables = siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]
69 query = GET_SITE_SQL_TEMPLATE % (tables, site_id[
"Site_Id"])
71 site_row = queryCallback(query, Constants.PRIMARY_DB_ID, Constants.EXEC_NAME)
72 logger.debug(
"Get site from sites: %s", str(site_row))
73 for (key, value)
in Constants.siteDict.items():
74 if str(value)[:1] ==
"`":
75 value = str(value)[1:-1]
77 logger.debug(
"site field: %s; table field: %s", str(site.__dict__[key]), str(site_row[0].get(value,
None)))
79 site.__dict__[key] = str(site_row[0].get(value,
None))
81 site.__dict__[key] = str(site_row[0].get(value,
None))
82 elif key ==
"tcDateProcess":
83 site.__dict__[key] = str(site_row[0].get(value,
None))
85 site.__dict__[key] = str(site_row[0].get(value,
None))
86 elif key ==
"recrawlDate":
87 site.__dict__[key] = str(site_row[0].get(value,
None))
89 site.__dict__[key] = site_row[0].get(value,
"a")
97 if siteFind.url
is not None and (
not siteFind.criterions):
98 query =
"SELECT `Site_Id` FROM sites_urls WHERE `URL` LIKE '" + MySQLdb.escape_string(siteFind.url) +
"%' GROUP BY `Site_Id`" 99 elif (siteFind.url
is not None)
and (siteFind.criterions
is not None):
100 additionCriterion =
" `URL` LIKE '" + MySQLdb.escape_string(siteFind.url) +
"%' " 101 query =
"SELECT `Site_Id` FROM sites_urls " + self.
generateCriterionSQL(siteFind.criterions, additionCriterion)
104 tableName =
"sites_urls" 105 if (
"WHERE" in siteFind.criterions)
and (siteFind.criterions[
"WHERE"]
is not None)
and \
106 (tableName
in siteFind.criterions[
"WHERE"]):
107 addTable =
", " + tableName
111 sitesTableName =
'sites' 112 if dc.EventObjects.SiteFind.CRITERION_TABLES
in siteFind.criterions
and \
113 siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]
is not None and \
114 siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES] !=
"":
115 if sitesTableName
not in siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]:
116 addTable =
", " + siteFind.criterions[dc.EventObjects.SiteFind.CRITERION_TABLES]
118 query =
"SELECT `Id` AS Site_Id FROM " + sitesTableName + addTable + self.
generateCriterionSQL(siteFind.criterions)
121 site_ids = queryCallback(query, Constants.PRIMARY_DB_ID, Constants.EXEC_NAME)
122 logger.debug(
"List of Site_Id: %s", str(site_ids))
136 if hasattr(site_ids,
"__iter__"):
138 for site_id
in site_ids:
142 if SiteTask.FIELD_NAME_URLS
not in siteFind.excludeList:
146 if SiteTask.FIELD_NAME_PROPERTIES
not in siteFind.excludeList:
147 site.properties = self.
siteStatusTask.fillProperties(site, queryCallback)
149 site.properties =
None 150 if SiteTask.FIELD_NAME_FILTERS
not in siteFind.excludeList:
151 site.filters = self.
siteStatusTask.fillFilters(site, queryCallback)
def process(self, siteFind, queryCallback)
def siteFind(self, siteFind, queryCallback)
def loadSiteFromDB(self, siteFind, site_id, site, queryCallback)
def loadListOfSitesFromDB(self, siteFind, queryCallback)
def generateCriterionSQL(self, criterions, additionWhere=None, siteId=None)
def __init__(self, dcSiteTemplate, keyValueDefaultFile, keyValueStorageDir, dBDataTask, dcStatTemplates, dcLogTemplate, dcAttrTemplate)