Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
def get_engineering_day_form(wbs):
	
	form = EngineeringDayForm()
	form.auto_id = "id_engineering_day_%s" % wbs.id + "_%s"
	return form.as_table()