def _process(self, args): '''Called by process() to do its work Return status of process as a string ''' cmd = args.pop(0) if cmd == 'show': validate_num_args('show', 1, args) target = args.pop(0) if target == 'missing_school_addresses': return self.schools.missingAddresses() else: return StemsibleArgsError('Unrecognized show target: %s' % target) print target elif cmd == 'email': validate_num_args('email', 1, args) target = args.pop(0) # get message_id: if target == 'message_notification': validate_num_args('email_notification', 1, args) message_id = args.pop(0) # get user: if args: try: email = args.pop(0) if email == '-': user = None else: user = self.users.getUsers({'email': email})[0] except IndexError, e: raise StemsibleArgsError('Unknown user: %s' % email) else: user = None if target == 'message_activity': self.notifications.sendMessageActivity(user) elif target == 'message_notification': self.notifications.sendMessageNotification(message_id, user) elif target == 'summary': self.notifications.sendSummary(user) elif target == 'verification': if not user: raise StemsibleArgsError('Must specific user_email') from emails import Emails Emails().send_verification_email(email) else: raise StemsibleArgsError('Unrecognized email target: %s' % target)
elif elapsed.days == 3: reminder = 'reminder_days' elif elapsed.days == 4: reminder = 'reminder_days_final' elif elapsed.days == 5: reminder = '' email_body = 'dropout' # change body to dropout if 5 days elif elapsed.days == 8: reminder = 'reminder_dropout' email_body = 'dropout' else: #includes if days == 6,7, or >8 continue footer = dt.datetime.now( ) # makes sure bottom of email isn't hidden by gmail due to repeated content email_class = Emails(reminder, email_body, survey_url, footer) html_email = email_class.make_email() text_email = email_class.make_plaintext() ###SEND EMAIL #gmail set up port = 465 smtp_server = "smtp.gmail.com" sender_email = "" password = "" #input("Type your password and press enter: ") #sussex webmail (outlook) setup #port = 465 #smtp_server = "smtp.office365.com"
def daily_quotes(): emails = Emails() emails.send_to_everyone()
def emails(self): from emails import Emails return Emails()
def __init__(self): self.conf = conf.getInstance() self.db = db.getInstance() self.users = Users() self.messages = Messages() self.email = Emails()
# create database session Session = sessionmaker() Session.configure(bind=engine) session = Session() key_errors = 0 for email in emails: try: kw = { Emails.key_by_label[label]: value for label, value in email.items() } dt = parser.parse(kw.pop('sent_datetime')) emails_row = Emails(sent_datetime=dt, **kw) for address_type, column_name in Addresses.key_by_address_type.items(): addresses = kw.get(column_name) if addresses: for address in addresses.split(','): addresses_row = Addresses(sent_datetime=dt, sender=emails_row.message_from, send_type=address_type, sent_to=address.strip()) emails_row.addresses.append(addresses_row) session.add(emails_row) session.commit() except KeyError as k: print('KeyError in message {}: {}'.format(email, k)) key_errors += 1 except ValueError as v:
def emails(): return Emails()
def checkForDups(self): '''-- Problem statement -- After user creates a new comment, or creates a new post -- if they immediately refresh the page (with Ctrl-R for example), the previous HTML POST data is repeated. And their data update is repeated. You can verify this is dev or staging. -- This pattern seems to be the solution; -- https://en.wikipedia.org/wiki/Post/Redirect/Get -- In the mean time we can remove duplicate entries from the database -- This query lists dupicate messages (or comments). ''' sql = ''' select u.id as user_id, concat_ws(' ', u.first_name, u.last_name) as user_fullname, m.created, m.text, m.reference_id from messages m join ( select text, count(*) from messages group by 1 having count(*) > 1 ) m2 on m.text = m2.text join users u on m.user_id = u.id order by m.text, m.id ''' from vlib.utils import format_datetime old_text = None dups = [] report = '' for row in self.db.query(sql): user_id = str(row['user_id']) user_fullname = row['user_fullname'] created = format_datetime(row['created']) text = row['text'][0:50] reference_id = str(row['reference_id']) print_rec = ', '.join( [user_id, user_fullname, created, text, reference_id]) # rec text same as last one? if old_text and text != old_text: report += '\n'.join(dups) + '\n\n' dups = [] dups.append(print_rec) old_text = text if dups: report += '\n'.join(dups) + '\n\n' dups = [] if report: from emails import Emails Emails().send_email('[email protected],[email protected]', 'Dupliate Messages Report', report)