def newaction(request): logging.debug("new request") templatepage = "create.html" rc = {"val": 0, "response": "success"} months_map = { "january": 1, "february": 2, "march": 3, "april": 4, "may": 5, "june": 6, "july": 7, "august": 8, "september": 9, "october": 10, "november": 11, "december": 12, } # validate post = request.POST name = post.get("name", "") hour = post.get("hour", "") minute = post.get("minute", "") day = post.get("day", "") ampm = post.get("ampm", "") year = post.get("year", "") memo = post.get("memo", "") # adjustments # month month = post.get("month", "january") month = months_map[month] # TODO set 12AM to 0 if ampm == "pm" and int(hour) != 12: hour = int(hour) + 12 # get the date date = None try: date = datetime(year=int(year), month=int(month), day=int(day), hour=int(hour), minute=int(minute), second=0) except ValueError: response = "invalid date, please try another" rc = {"val": 1, "response": response} now = datetime.now() email = post.get("email", "") phone_number = extractPhoneNumber(post) # phone_number = post.get('phone_number', '') adjustedNow = datetime.now() adjustedNow = adjustedNow + timedelta(hours=-7) logging.debug("now " + str(datetime.now())) logging.debug("now adjusted " + str(adjustedNow)) if not validate_phone(phone_number): response = "invalid phone number" rc = {"val": 1, "response": response} # Do not really need email address here # elif not validate_email(email): # response = "invalid email" # rc={'val':1, 'response':response} elif date and date < adjustedNow: logging.debug("date: " + str(date) + " " + str(adjustedNow)) response = "date is before now" rc = {"val": 1, "response": response} if rc["val"] != 0: rc.update(callmeutil.populatecreatepage(request.user)) logging.debug("fail to create: " + rc["response"]) return render_to_response(request, "create.html", rc) # create the action message = "You need to call " + phone_number action = CAction() if users.get_current_user(): action.sender = users.get_current_user() else: logging.error("No user for this users object") action.phone_number = phone_number action.message = 1 # message # TODO Need to make a more robust timezone thing. this is so whack. action.date_to_be_executed = date # + timedelta(hours=+7) action.date_created = now action.date_finished = now action.memo = memo action.finished = False action.sender = request.user.get_profile() action.put() rc.update(callmeutil.populatecreatepage(request.user)) return render_to_response(request, templatepage, rc)
import common.appenginepatch.main from callme.models import CAction from datetime import datetime, timedelta import logging from callme import callmeutil q = CAction.all() q1 = q.filter('date_to_be_executed <', datetime.now()+timedelta(hours=-7)) q2 = q1.filter('finished =', False) results = q2.fetch(1000) for i in results: message = i.memo+ " " + i.phone_number callmeutil.sendMail(i.sender.phone_number, i.sender.phone_number.replace('-','')+"@txt.att.net", 'Call Reminder', message) i.finished = True i.date_finished = datetime.now() i.save()