コード例 #1
0
ファイル: views.py プロジェクト: cgrice/apps
def ajax_remind(request):
    # if this reminder isn't coming from you, make it a reminder request instead
    if not request.user.is_authenticated():
        return _invite(request)
    # if the exact form is being used, we don't need to parse the times
    elif 'time' in request.POST:
        return _remindexact(request)
    # in all other cases, parse the string to generate a task and datetime
    else:
        try:
            task = request.POST['task']
        except (KeyError):
            response = HttpResponse("Error with form")
            response.status_code = 400
            return response
        p = Parser()
        try:
            result = p.parse(str(task))
        except:
            response = HttpResponse("Parsing error")
            response.status_code = 500
            return response
        
        t = Task(task=result[0], time=result[1], sendnotification=result[2], is_approved=True)
        t.save()
        j = {'id':t.id,
             'task':result[0], 
             'from': 'you', 
             'time': result[1].strftime("%A %d %B, %Y, at %H:%M"),
            }
        response = HttpResponse(json.dumps(j))
        response.status_code = 200
        return response    
コード例 #2
0
ファイル: views.py プロジェクト: cgrice/apps
def _invite(request):
    try:
        task = request.POST['task']
        sfrom = request.POST['from']
    except KeyError:
        return HttpResponseRedirect('/')

    p = Parser()
    result = p.parse(str(task))
    t = Task(task=result[0], time=result[1], sendnotification=result[2],  \
             sentfrom=sfrom, is_approved=False)
    t.save()
    return render_to_response('success.html', {'task':t}) 
コード例 #3
0
ファイル: views.py プロジェクト: cgrice/apps
def _remindexact(request):
    try:
        task = request.POST['task']
        date = request.POST['date']
        time = request.POST['time']
    except (KeyError):
        return HttpResponse("Error with form")
    p = Parser()
    # Pass the exact date and times into an easily parsed string, then parse it
    # @TODO: refactor this to use strftime, much faster.
    result = p.parse("task on " + str(date) + " at " + str(time))
    t = Task(task=str(task), time=result[1], sendnotification=result[2])
    t.save()
    return HttpResponseRedirect('/')
コード例 #4
0
ファイル: views.py プロジェクト: cgrice/apps
def remind(request):
    # if this reminder isn't coming from you, make it a reminder request instead
    if not request.user.is_authenticated():
        return _invite(request)
    # if the exact form is being used, we don't need to parse the times
    elif 'time' in request.POST:
        return _remindexact(request)
    # in all other cases, parse the string to generate a task and datetime
    else:
        try:
            task = request.POST['task']
        except (KeyError):
            return HttpResponse("Error with form")
        p = Parser()
        result = p.parse(str(task))
        t = Task(task=result[0], time=result[1], sendnotification=result[2], is_approved=True)
        t.save()
        return HttpResponseRedirect('/')
コード例 #5
0
ファイル: tests.py プロジェクト: cgrice/apps
class ParserTestCase(unittest.TestCase):
    
    def setUp(self):
        self.parser = Parser()
        now = datetime.now()
        self.now = datetime(now.year, now.month, now.day, now.hour, now.minute)
    
    def testTomorrow(self):
        self.assertEquals(self.parser.parse('do this tomorrow')[1], self.now + timedelta(days=1))
   
    def testNextWeek(self):
        self.assertEquals(self.parser.parse('do this next week')[1], self.now + timedelta(days=7))
        
    def testToday(self):
        self.assertEquals(self.parser.parse('do this today')[1], self.now)
        
    def testRelativeWeeks(self):
        self.assertEquals(self.parser.parse('do this in 2 weeks')[1], self.now + timedelta(days=14))
        
    def testRelativeWeeks(self):
        self.assertEquals(self.parser.parse('do this in 2 days')[1], self.now + timedelta(days=2))

    def testSimpleTime(self):
        now = datetime.now().replace(hour=5)
        if now < datetime.now():
            now = now + timedelta(hours=12)
        date = datetime(now.year, now.month, now.day, now.hour, now.minute)
        self.assertEquals(self.parser.parse('do this at 5')[1], date)
        
    def testExplicitTime(self):
        self.assertEquals(self.parser.parse('do this at 12:00')[1], self.now.replace(hour=12, minute=0))
        self.assertEquals(self.parser.parse('do this at 12.45')[1], self.now.replace(hour=12, minute=45))
    
    def testAmPm(self):
        self.assertEquals(self.parser.parse('do this tomorrow at 5 pm')[1], self.now.replace(hour=17) + timedelta(days=1))
        self.assertEquals(self.parser.parse('do this at 5 am tomorrow')[1], self.now.replace(hour=05) + timedelta(days=1))
        
コード例 #6
0
ファイル: tests.py プロジェクト: cgrice/apps
 def setUp(self):
     self.parser = Parser()
     now = datetime.now()
     self.now = datetime(now.year, now.month, now.day, now.hour, now.minute)