示例#1
0
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)
示例#2
0
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()