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)
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)
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)
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)
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)
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)
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)