def track_pomodoro(request): post = request.POST user = request.user.is_authenticated and request.user or None if post.get('add'): new_pomo = Pomodoro(user=user) # rest fields = defaults new_pomo.save() msg = 'Great job, another pomodoro done!' messages.success(request, msg) pomodori = Pomodoro.objects.all() if user: pomodori = pomodori.filter(user=request.user) week_stats = defaultdict(list) for pomo in pomodori: week_stats[pomo.week].append(1) pomos_done = len(week_stats.get(this_week(), 0)) pomos_todo = [1] * (DEFAULT_POMO_GOAL - pomos_done) if pomos_done == DEFAULT_POMO_GOAL: msg = ('\nAwesome, you hit the 5 hour rule this week! ' 'You are well away to the top!!') messages.success(request, msg) return render(request, 'pomodoro/pomodoro.html', {'week_stats': week_stats.items(), 'week_goal': DEFAULT_POMO_GOAL, 'pomo_minutes': DEFAULT_POMO_MIN, 'pomos_todo': pomos_todo })
def test_update_pomodoro_via_request(self): pomodoro = Pomodoro() pomodoro.text = "Pomodoro todo"; pomodoro.owner = self.user pomodoro.save() text = "New todo" res = self.client.post('/pomodoro/update/' + str(pomodoro.id), {'text': text}) self.assertEquals(302, res.status_code) res = self.client.get('/pomodoro/') self.assertTrue(text in res.content)
def start(self, request, pk): '''Quickstart a Pomodoro''' favorite = self.get_object() now = timezone.now().replace(microsecond=0) try: pomodoro = Pomodoro.objects\ .filter(owner=request.user).latest('start') except Pomodoro.DoesNotExist: # Handle the case for a new user that does not have any # pomodoros at all pass else: if pomodoro.end > now: return JsonResponse({ 'message': 'Cannot replace active pomodoro', 'data': PomodoroSerializer(pomodoro).data }, status=409) pomodoro = Pomodoro() pomodoro.title = favorite.title pomodoro.category = favorite.category pomodoro.owner = request.user pomodoro.start = now pomodoro.end = pomodoro.start + datetime.timedelta(minutes=favorite.duration) pomodoro.save() return JsonResponse(PomodoroSerializer(pomodoro).data, status=201)
def test_creating_a_new_model_pomodoro_and_saving_it_to_the_database(self): pomodoro = Pomodoro() pomodoro.text = "Pomodoro todo"; pomodoro.owner = self.user pomodoro.save() all_pomodoros = Pomodoro.objects.all() self.assertEquals(len(all_pomodoros), 1) only_pomodoro_in_database = all_pomodoros[0] self.assertEquals(only_pomodoro_in_database, pomodoro) self.assertEquals(only_pomodoro_in_database.text, "Pomodoro todo") self.assertEquals(only_pomodoro_in_database.owner_id, self.user.id)
def test_cant_done_someone_elses_pomodoro(self): new_user = User.objects.create(username = '******') new_user.set_password('parola') new_user.save() pomodoro = Pomodoro() pomodoro.text = "Pomodoro todo"; pomodoro.owner = new_user pomodoro.save() count_before = Pomodoro.objects.filter(completed = False).count() res = self.client.get('/pomodoro/done/' + str(pomodoro.id)) count_after = Pomodoro.objects.filter(completed = False).count() self.assertEqual(count_before, count_after)
def test_done_pomodoro(self): pomodoro = Pomodoro() pomodoro.text = "Pomodoro todo"; pomodoro.owner = self.user pomodoro.save() res = self.client.get('/pomodoro/') self.assertTrue("Pomodoro todo" in res.content) res = self.client.get('/pomodoro/done/' + str(pomodoro.id)) self.assertEquals(302, res.status_code) res = self.client.get('/pomodoro/all') self.assertFalse("Pomodoro todo" in res.content) res = self.client.get('/pomodoro/history') self.assertTrue("Pomodoro todo" in res.content)
def test_cant_update_someone_elses_pomodoro(self): new_user = User.objects.create(username = '******') new_user.set_password('parola') new_user.save() pomodoro = Pomodoro() pomodoro.text = "Pomodoro todo"; pomodoro.owner = new_user pomodoro.save() text = "New todo" res = self.client.post('/pomodoro/update/' + str(pomodoro.id), {'text': text}) self.assertEquals(404, res.status_code) new_pomodoro = Pomodoro.objects.filter(id=pomodoro.id)[0]; self.assertEqual(new_pomodoro.text, "Pomodoro todo")
def handle(self, *args, **options): tags = {} if options['tagfile']: with open(options['tagfile']) as fp: for line in fp: key, value = line.strip().split('=') tags[key] = value user = User.objects.get(username=options['user']) pomodoros = Pomodoro.objects.filter(owner=user) if options['no_input'] is False: while len(pomodoros): self.stdout.write('Delete %d pomodoros for %s' % (len(pomodoros), user)) if input('Confirm yes/no ').lower() == 'yes': break pomodoros.delete() self.stdout.write('Importing Pomodoros') cursor = DatabaseWrapper(settings_dict={ 'NAME': options['inputfile'], 'CONN_MAX_AGE': None, 'OPTIONS': [], 'AUTOCOMMIT': False, }).cursor() cursor.execute('SELECT cast(ZWHEN as integer), ZDURATIONMINUTES, ZNAME FROM ZPOMODOROS ') for zwhen, zminutes, zname in cursor.fetchall(): seconds = zminutes * 60 p = Pomodoro() p.title = zname p.owner = user # p.start = datetime.datetime.fromtimestamp(zwhen + NSTIMEINTERVAL - seconds, pytz.utc) # p.end = datetime.datetime.fromtimestamp(zwhen + NSTIMEINTERVAL, pytz.utc) p.created = datetime.datetime.fromtimestamp(zwhen + NSTIMEINTERVAL - seconds, pytz.utc) for word in p.title.split(): if word.startswith('#'): p.category = word.strip('#') break if not p.category: for search, tag in tags.items(): if search in p.title: p.category = tag break p.duration = zminutes p.save() self.stdout.write('Added %s' % p)
'_t': 'creation_date', '_w': 'pomodoro_duration' } df = df_original.copy() #df['_d'] = df['_d'].apply(lambda x: total_time(x)) df['_l'] = df['_l'].apply(lambda x: datetime.datetime.fromtimestamp(x)) df['_t'] = df['_t'].apply(lambda x: datetime.datetime.fromtimestamp(x)) df.rename(columns=new_column_names, inplace=True) return df # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|Projects|~~~~~~~~~~~~~~~~~~~~~~``````` projects = {} for index, project_sample in format_projects(df_projects).iterrows(): project = Project.objects.create( creation_date=project_sample.creation_date, name=project_sample.project_name, user_id=2, pomodoro_duration=project_sample.pomodoro_duration) projects[project_sample.id] = project for index, sample1 in format_work_units(df_work_units).iterrows(): date = time_date_to_datetime(sample1.time, sample1.date) pomodoro = Pomodoro() pomodoro.project = projects[sample1.project_id] pomodoro.user_id = 2 pomodoro.date = date pomodoro.duration = sample1.duration pomodoro.save()