Exemple #1
0
def all_installation(request, day=None, month=None, year=None):
    if day == None and month == None and year == None:
        day, month, year = get_today_date()
    day_in_month = calendar.mdays[month]
    days_list = [
        datetime.date(year, month, tmp_day).strftime('%d.%m.%Y')
        for tmp_day in range(1, day_in_month + 1)
    ]
    user_id = request.user.pk
    user = User.objects.get(id=user_id)

    if not user.is_staff:
        installations = Installation.objects.filter(Q(employee_1=user_id)| Q(employee_2=user_id)| Q(employee_3=user_id))\
            .filter(date=datetime.date(year, month, day))
    else:
        installations = Installation.objects.filter(
            date=datetime.date(year, month, day))
    day = str(day)
    context = {
        'installations': installations,
        'days_list': days_list,
        'view_day': ('0' + day if len(day) != 2 else day),
        'month': month,
        'year': year
    }
    context.update(today_date_weekday())
    context.update(month_installation_count(user_id=user_id))
    print(day, month, year)
    return render(request, 'installation_app/all_installation.html', context)
Exemple #2
0
def create_working_time(request):
    employee = request.user.pk
    employees = User.objects.filter(is_staff=False, is_active=True)
    context = {'employees': employees}
    context.update(today_date_weekday())
    context.update(month_installation_count(user_id=employee))
    context.update({'dict_month_name': month_name()})
    return render(request, 'reports_app/create_working_time.html', context)
Exemple #3
0
def list_month_report(request, employee=None):
    if request.user.is_staff and employee:
        employees = User.objects.filter(is_staff=False, is_active=True)
    else:
        employees = employee
    user_id = request.user.pk
    context = {
        'month_name': month_name(),
        'employees': employees,
        'year': datetime.date.today().year
    }
    context.update(today_date_weekday())
    context.update(month_installation_count(user_id=user_id))
    context.update(month_name())
    context.update({'dict_month_name': month_name()})
    return render(request, 'reports_app/list_month_report.html', context)
Exemple #4
0
def working_time(request,
                 ts_month=datetime.date.today().month,
                 year=datetime.date.today().year,
                 employee=None):
    day_count = calendar.monthrange(year, ts_month)[1]
    installation_list = get_employee_report(employee, ts_month, year)
    installation_list_to_context = []
    list_working_time = []
    for i in range(1, day_count + 1):
        installation_list_to_context.append([])
        list_working_time.append(0)
        for installation in installation_list:
            if installation.date.day == i:
                installation_list_to_context[i - 1].append(installation)
                list_working_time[i - 1] += 3
    time_result = 0
    inst_result = 0
    zip_lists = zip(installation_list_to_context, list_working_time)
    for inst in installation_list_to_context:
        inst_result += len(inst)

    for time in list_working_time:
        time_result += time

    context = {
        'day_count': day_count,
        'zip_lists': zip_lists,
        'inst_result': inst_result,
        'time_result': time_result,
        'ts_month': int(ts_month),
        'year': year,
        'employee': User.objects.get(id=employee)
    }
    context.update(today_date_weekday())
    context.update({'dict_month_name': month_name()})
    context.update(month_installation_count(user_id=employee))
    return render(request, 'reports_app/working_time.html', context)
Exemple #5
0
def user_data(request, user_id=None):
    if request.user.is_staff and user_id != None:
        user_id = user_id
        other_user_change = user_id
        print(request.user.is_staff, user_id)

    else:
        user_id = request.user.pk
        other_user_change = False
    user = User.objects.get(id=user_id)
    if request.method != 'POST':
        user_change_form = MyUserChangeForm(instance=user)
    else:
        #print(request.POST)
        user_change_form = MyUserChangeForm(instance=user, data=request.POST)
        if user_change_form.is_valid():
            print('is_valid')
            try:
                print('is_active')
                if 'is_active' in request.POST:
                    user_change_form.save()
                else:
                    user_change_form.save()
            except:
                print('except')
                entry = user_change_form.save(commit=False)
                entry.is_active = True
                user_change_form.save()
        else:
            print(request.POST)
    context = {
        'user_change_form': user_change_form,
        'other_user_change': other_user_change
    }
    context.update(today_date_weekday())
    context.update(month_installation_count())
    return render(request, 'users_app/user_data.html', context)
Exemple #6
0
def month_report(request,
                 month,
                 year,
                 employee=None,
                 detail=False,
                 not_accepted=False):
    user_id = request.user.pk

    def get_detail_information():
        users_list = {}
        if employee is None:
            user_query = User.objects.filter(
                is_staff=False).order_by('first_name')
        else:
            user_query = User.objects.filter(id=employee)
            print('try')
        for user in (user_query):
            user_installations = get_employee_report(user.id, month, year)
            if user_installations:
                users_list[user.first_name + ' ' + user.last_name] = []
                users_list[user.first_name + ' ' + user.last_name].append(
                    len(user_installations))
                users_list[user.first_name + ' ' + user.last_name].append(
                    [0, 0, 0])
                for installation in user_installations:
                    # print(installation.employee_1, installation.employee_2, installation.employee_3)
                    if (installation.employee_1 == None and installation.employee_2 == None) \
                            or (installation.employee_2 == None and installation.employee_3 == None) \
                            or (installation.employee_3 == None and installation.employee_1 == None):
                        users_list[user.first_name + ' ' +
                                   user.last_name][1][0] += 1
                    elif (installation.employee_1 == None and (
                            installation.employee_2 != None and installation.employee_3 != None)) \
                            or (installation.employee_2 == None and (
                                    installation.employee_3 != None and installation.employee_1 != None)) \
                            or (installation.employee_3 == None and (
                                    installation.employee_1 != None and installation.employee_2 != None)):
                        users_list[user.first_name + ' ' +
                                   user.last_name][1][1] += 1
                    else:
                        users_list[user.first_name + ' ' +
                                   user.last_name][1][2] += 1
        return {
            'users_installations_list': users_list,
        }

    if request.user.is_staff:
        print('is_staff')
        try:
            if not employee:
                report = Installation.objects.filter(date__month=month,
                                                     date__year=year)

                if detail == True:
                    detail_information = get_detail_information()
            else:
                report = get_employee_report(employee, month, year)
                if detail == True:
                    print('hejhej')
                    detail_information = get_detail_information()
        except:
            return HttpResponseRedirect(
                reverse('reports_app:list_month_report'))
    else:
        print('user')
        try:
            report = get_employee_report(user_id, month, year)
        except:
            return HttpResponseRedirect(
                reverse('reports_app:list_month_report'))
    context = {
        'report':
        report.filter(accepted=True) if not not_accepted else report,
        'month':
        month,
        'year':
        year,
        'employee':
        employee,
        'len_contract':
        len(report.filter(with_contract=True)),
        'count_installations':
        len(report),
        'detail':
        detail,
        'installation_standart': [
            inst_standart
            for inst_standart in InstallationStandart.objects.all()
        ],
        'installation_type':
        [inst_type for inst_type in InstallationType.objects.all()],
        'installations_standart_dict': {
            standart.standart:
            (len(report.filter(installation_standart=standart.id)))
            for standart in InstallationStandart.objects.all()
        },
        'installations_type_dict': {
            inst_type.type:
            (len(report.filter(installation_type=inst_type.id)))
            for inst_type in InstallationType.objects.all()
        }
    }
    print(type(month))
    try:
        context.update(detail_information)
    except:
        pass
    context.update(today_date_weekday())
    context.update({'dict_month_name': month_name(month)})
    context.update(month_installation_count(user_id=user_id))
    return render(request, 'reports_app/month_report.html', context)
Exemple #7
0
def installation_detail(request,
                        installation_id,
                        day=datetime.date.today().day,
                        month=datetime.date.today().month,
                        year=datetime.date.today().year):
    user_id = request.user.pk
    user = User.objects.get(id=user_id)
    print(datetime.date(year, month, day).strftime('%d.%m.%Y'))
    installation_images = None
    if installation_id == 0:
        installation = None
        initial_data = {
            'employee_1': user_id,
            'date': (datetime.date(year, month, day).strftime('%d.%m.%Y'))
        }
    else:
        installation = Installation.objects.get(id=installation_id)
        initial_data = None
        installation_images = InstallationImage.objects.filter(
            installation=installation_id)

    def get_installation_form(instance=None, data=None, initial=None):
        if not user.is_staff:
            return InstallationFormUser(instance=instance,
                                        data=data,
                                        initial=initial)
        else:
            return InstallationFormAdmin(instance=instance,
                                         data=data,
                                         initial=initial)

    if request.method != 'POST':
        installation_form = get_installation_form(instance=installation,
                                                  initial=initial_data)
        try:
            if not user.is_staff and installation.accepted != False:
                return HttpResponseRedirect(
                    reverse('installation_app:all_installation',
                            args=[
                                installation.date.day, installation.date.month,
                                installation.date.year
                            ]))
        except AttributeError:
            pass
    else:
        installation_form = get_installation_form(data=request.POST,
                                                  instance=installation)
        if installation_form.is_valid():
            new_installation = installation_form.save()
            installation_id = new_installation.id
            if request.FILES:
                new_installation_image = InstallationImage()
                new_installation_image.installation_id = installation_id
                new_installation_image.image = request.FILES['image']
                new_installation_image.save()
            if 'submit_and_return' in request.POST:
                installation_date = new_installation.date
                print(installation_date)
                return HttpResponseRedirect(
                    reverse('installation_app:all_installation',
                            args=[
                                installation_date.day, installation_date.month,
                                installation_date.year
                            ]))
            return HttpResponseRedirect(
                reverse('installation_app:installation_detail',
                        args=[installation_id]))
    context = {
        'installation_id': installation_id,
        'installation_form': installation_form,
        'installation': installation,
        'installation_images': installation_images
    }
    context.update(today_date_weekday())
    context.update(month_installation_count(user_id=user_id))
    context.update()
    return render(request, 'installation_app/installation_detail.html',
                  context)