Exemplo n.º 1
0
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
                   })
Exemplo n.º 2
0
	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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
	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)
Exemplo n.º 5
0
	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)
Exemplo n.º 6
0
	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)
Exemplo n.º 7
0
	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")
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
        '_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()