def create(self, request, project_number, wbs_id): """ Create a new Engineering Day """ log.debug("POST request from user %s to create a new engineering day" % request.user) proj = Project.objects.get(project_number=project_number) if not check_project_write_acl(proj, request.user): log.debug("Refusing POST request for project %s from user %s" % ( project_number, request.user )) return rc.FORBIDDEN # Go ahead and create the engineering day.... form = EngineeringDayForm(request.POST) t = form.save() wbs.engineering_days.add(t) wbs.save() return t
def create(self, request, project_number, wbs_id): """ Create a new Engineering Day """ log.debug("POST request from user %s to create a new engineering day" % request.user) proj = Project.objects.get(project_number=project_number) if not check_project_write_acl(proj, request.user): log.debug("Refusing POST request for project %s from user %s" % (project_number, request.user)) return rc.FORBIDDEN # Go ahead and create the engineering day.... form = EngineeringDayForm(request.POST) t = form.save() wbs.engineering_days.add(t) wbs.save() return t
def add_wip_engineering_day(request, wip_report, work_item_id): work_item = get_object_or_404(WIPItem, id=work_item_id) wip_report = WIPReport.objects.get(name=wip_report) if request.method == 'POST': form = EngineeringDayForm(request.POST) if form.is_valid(): t = form.save(commit=False) logging.debug('''resource => %s, work_date => %s, day_type => %s''' % ( t.resource, t.work_date, t.day_type )) available_resources = get_resources_for_engineering_day(request, wip_report, t.work_date.strftime("%Y"), t.work_date.strftime("%m"), t.work_date.strftime("%d"), t.day_type, as_json=False) logging.debug('''Resource ID is: %s''' % t.resource.id ) logging.debug('''Available resources are: %s''' % available_resources ) if t.resource.id not in [ r['pk'] for r in available_resources ]: logging.debug('''User has tried to book %s on %s when he hasn't got the correct skillset''' % ( t.resource, t.work_date )) return HttpResponse( handle_generic_error("Sorry - this resource hasn't got the skillset to work on this task")) if EngineeringDay.objects.filter(work_date=t.work_date, resource=t.resource, day_type__in=[ t.day_type, 2]).count() > 0: logging.debug('''User has tried to book %s on %s when he has existing engineering days booked''' % ( t.resource, t.work_date )) return HttpResponse( handle_generic_error("Sorry - this resource is already booked at this time.")) # Check the rota, make sure resource isn't on holiday or training etc try: rota = RotaItem.objects.get(date=t.work_date, person=t.resource) if rota.activity.unavailable_for_projects: return HttpResponse( handle_generic_error("Sorry - this resource has an entry in the Rota stopping you booking this Engineering Day.")) except RotaItem.DoesNotExist: pass t.save() work_item.engineering_days.add(t) work_item.save() logging.debug('''Booked engineering day for %s on %s''' % ( t.resource, t.work_date )) return HttpResponse( return_json_success() ) else: return HttpResponse( handle_form_errors(form.errors))
def get_engineering_day_form(wbs): form = EngineeringDayForm() form.auto_id = "id_engineering_day_%s" % wbs.id + "_%s" return form.as_table()