From 29608ab29b05f1471ea6604f0c162512e46f15df Mon Sep 17 00:00:00 2001
From: Philipp Schmied
Date: Wed, 28 Feb 2018 11:31:16 +0100
Subject: [PATCH] Fixed e-mail notificatins for sets and regexes
---
bin/RegexForTermsFrequency.py | 15 ++++++-------
bin/SetForTermsFrequency.py | 13 +++++-------
var/www/modules/terms/Flask_terms.py | 21 +++++++++++++------
.../terms/templates/terms_management.html | 7 +++++--
4 files changed, 31 insertions(+), 25 deletions(-)
diff --git a/bin/RegexForTermsFrequency.py b/bin/RegexForTermsFrequency.py
index b5570ea9..d1534eab 100755
--- a/bin/RegexForTermsFrequency.py
+++ b/bin/RegexForTermsFrequency.py
@@ -37,7 +37,7 @@ top_termFreq_set_array = [top_termFreq_setName_day,top_termFreq_setName_week, to
def refresh_dicos():
- dico_regex = {}
+ dico_regex = {}
dico_regexname_to_redis = {}
for regex_str in server_term.smembers(TrackedRegexSet_Name):
dico_regex[regex_str[1:-1]] = re.compile(regex_str[1:-1])
@@ -90,18 +90,15 @@ if __name__ == "__main__":
if matched is not None: #there is a match
print('regex matched {}'.format(regex_str))
matched = matched.group(0)
-
+ regex_str_complete = "/" + regex_str + "/"
# Add in Regex track set only if term is not in the blacklist
- if matched not in server_term.smembers(BlackListTermsSet_Name):
-
+ if regex_str_complete not in server_term.smembers(BlackListTermsSet_Name):
# Send a notification only when the member is in the set
- if matched in server_term.smembers(TrackedTermsNotificationEnabled_Name):
-
+ if regex_str_complete in server_term.smembers(TrackedTermsNotificationEnabled_Name):
# Send to every associated email adress
- for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + matched):
- sendEmailNotification(email, matched)
+ for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + regex_str_complete):
+ sendEmailNotification(email, regex_str)
-
set_name = 'regex_' + dico_regexname_to_redis[regex_str]
new_to_the_set = server_term.sadd(set_name, filename)
new_to_the_set = True if new_to_the_set == 1 else False
diff --git a/bin/SetForTermsFrequency.py b/bin/SetForTermsFrequency.py
index d6e9bef9..014ce10e 100755
--- a/bin/SetForTermsFrequency.py
+++ b/bin/SetForTermsFrequency.py
@@ -75,7 +75,6 @@ if __name__ == "__main__":
else:
continue
-
message = p.get_from_set()
while True:
@@ -103,19 +102,17 @@ if __name__ == "__main__":
for the_set, matchingNum in match_dico.items():
eff_percent = float(matchingNum) / float((len(ast.literal_eval(the_set))-1)) * 100 #-1 bc if the percent matching
if eff_percent >= dico_percent[the_set]:
-
# Send a notification only when the member is in the set
- if the_set in server_term.smembers(TrackedTermsNotificationEnabled_Name):
-
+ if dico_setname_to_redis[str(the_set)] in server_term.smembers(TrackedTermsNotificationEnabled_Name):
# Send to every associated email adress
- for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + the_set):
- sendEmailNotification(email, the_set)
-
+ for email in server_term.smembers(TrackedTermsNotificationEmailsPrefix_Name + dico_setname_to_redis[str(the_set)]):
+ sendEmailNotification(email, dico_setname_to_redis[str(the_set)])
+
print(the_set, "matched in", filename)
set_name = 'set_' + dico_setname_to_redis[the_set]
new_to_the_set = server_term.sadd(set_name, filename)
new_to_the_set = True if new_to_the_set == 1 else False
-
+
#consider the num of occurence of this set
set_value = int(server_term.hincrby(timestamp, dico_setname_to_redis[the_set], int(1)))
diff --git a/var/www/modules/terms/Flask_terms.py b/var/www/modules/terms/Flask_terms.py
index 0811a4c0..015ba94f 100644
--- a/var/www/modules/terms/Flask_terms.py
+++ b/var/www/modules/terms/Flask_terms.py
@@ -330,18 +330,17 @@ def terms_management_action():
if re.match(r"[^@]+@[^@]+\.[^@]+", email):
validNotificationEmails.append(email)
- # add all valid emails to the set
- for email in validNotificationEmails:
- r_serv_term.sadd(TrackedTermsNotificationEmailsPrefix_Name + term.lower(), email)
-
- # enable notifications by default
- r_serv_term.sadd(TrackedTermsNotificationEnabled_Name, term.lower())
# check if regex/set or simple term
#regex
if term.startswith('/') and term.endswith('/'):
r_serv_term.sadd(TrackedRegexSet_Name, term)
r_serv_term.hset(TrackedRegexDate_Name, term, today_timestamp)
+ # add all valid emails to the set
+ for email in validNotificationEmails:
+ r_serv_term.sadd(TrackedTermsNotificationEmailsPrefix_Name + term, email)
+ # enable notifications by default
+ r_serv_term.sadd(TrackedTermsNotificationEnabled_Name, term)
#set
elif term.startswith('\\') and term.endswith('\\'):
@@ -355,11 +354,21 @@ def terms_management_action():
set_to_add = "\\" + tab_term[:-1] + ", [{}]]\\".format(match_percent)
r_serv_term.sadd(TrackedSetSet_Name, set_to_add)
r_serv_term.hset(TrackedSetDate_Name, set_to_add, today_timestamp)
+ # add all valid emails to the set
+ for email in validNotificationEmails:
+ r_serv_term.sadd(TrackedTermsNotificationEmailsPrefix_Name + set_to_add, email)
+ # enable notifications by default
+ r_serv_term.sadd(TrackedTermsNotificationEnabled_Name, set_to_add)
#simple term
else:
r_serv_term.sadd(TrackedTermsSet_Name, term.lower())
r_serv_term.hset(TrackedTermsDate_Name, term.lower(), today_timestamp)
+ # add all valid emails to the set
+ for email in validNotificationEmails:
+ r_serv_term.sadd(TrackedTermsNotificationEmailsPrefix_Name + term.lower(), email)
+ # enable notifications by default
+ r_serv_term.sadd(TrackedTermsNotificationEnabled_Name, term.lower())
elif action == "toggleEMailNotification":
# get the current state
diff --git a/var/www/modules/terms/templates/terms_management.html b/var/www/modules/terms/templates/terms_management.html
index 778b5b76..41ac586f 100644
--- a/var/www/modules/terms/templates/terms_management.html
+++ b/var/www/modules/terms/templates/terms_management.html
@@ -129,7 +129,7 @@