Esempio n. 1
0
def dashboard(request, todo_id=None):
    categories = TaskCanDo.TASK_CHOICES
    upcoming_tasks = None
    month_earnings = None
    todo_list = None
    form = None
    today = datetime.today()
    days_check = datetime.today() - timedelta(days=360)
    new_taskers = []
    unread_messages = None

    taskers_q = Tasker.objects.filter(user__date_joined__range=(days_check,
                                                                today))
    rand_arr = random.sample(range(0, len(taskers_q)), 3)

    for i in range(0, 3):
        new_taskers.append(taskers_q[rand_arr[i]])

    if request.user.is_tasker:
        upcoming_tasks = ScheduleBooking.objects.filter(
            tasker=request.user.tasker,
            completed=False,
            booking__range=(datetime.today().strftime("%Y-%m-%d"),
                            (datetime.today() +
                             timedelta(days=30)))).order_by('booking')[:3]
        month_earnings = ScheduleBooking.get_month_earnings(
            tasker=request.user.tasker)
        unread_messages = Message.get_unread_messages(id=request.user.id)

    if request.user.is_seeker:
        if request.method == 'POST':
            form = ToDoForm(request.POST)
            if form.is_valid():
                ToDo.objects.create(seeker=request.user.taskseeker,
                                    todo=form.cleaned_data['todo'])
                return redirect('user:dashboard')
        else:
            if todo_id:
                edit_todo = ToDo.objects.get(id=todo_id)
                form = ToDoForm(instance=edit_todo)
            else:
                form = ToDoForm()

        todo_list = ToDo.objects.filter(seeker=request.user.taskseeker)

    return render(
        request, 'dashboard.html', {
            'categories': categories,
            'upcoming_tasks': upcoming_tasks,
            'month_earnings': month_earnings,
            'form': form,
            'todo_list': todo_list,
            'new_taskers': new_taskers,
            'unread_messages': unread_messages
        })