Exemple #1
0
def job_new(request):
    if request.method == 'POST':
        form = JobForm(request.POST)
        if form.is_valid():
            job = form.save()
            return redirect('/client-manager/job/edit/{0}'.format(job.id))
    else:
        form = JobForm()
        
    data = {'form': form}
    return render_page(request, 'clientmanager/job_new.html', data)
Exemple #2
0
def pending_jobs(request):
    pending_id = choice_rassoc(JOB_PENDING, JOB_STATUS_CHOICES)
    qs = Job.objects.select_related().all()
    jobs = []
    for j in qs:
        pending_shifts = j.pending_shifts()
        if len(pending_shifts):
            jobs.append({'job': j, 'shifts': pending_shifts})
    job_url = '/shift-leader/pending-jobs/job/'
    shift_url = '/shift-leader/pending-jobs/shift/'
    
    return render_page(request, 'jobs_list.html', locals())
Exemple #3
0
def open_jobs_list(request):
    open_id = choice_rassoc(JOB_OPEN, JOB_STATUS_CHOICES)
    qs = Job.objects.select_related().all()
    jobs = []
    for j in qs:
        open_shifts = j.open_shifts()
        if len(open_shifts):
            jobs.append({'job': j, 'shifts': open_shifts})
    job_url = '/shift-leader/open-jobs/job/'
    shift_url = '/shift-leader/open-jobs/shift/'
    
    return render_page(request, 'jobs_list.html', locals())
Exemple #4
0
def pending_jobs_shift(request, shift_id):
    shift = get_object_or_404(Shift, pk=shift_id)
    
    errors = []
    if request.method == 'POST':
        if 'hire' in request.POST:
            try: 
                id = int(request.POST['hire'])
                contractor = Contractor.objects.get(id=id)
                shift.contractor_id = id
                
                if 'standby' in request.POST:
                    standby = map(int, request.POST.getlist('standby'))
                    
                    for sc in Contractor.objects.filter(id__in=standby):
                        shift.standby_contractors.add(sc)
                    
                shift.offers.all().delete()
                contractor.offers.all().delete()
                
                shift.status = choice_rassoc(SHIFT_ASSIGNED, SHIFT_STATUS_CHOICES)
                shift.save()

                if len(shift.job.pending_shifts()) == 0:
                    shift.job.status = choice_rassoc(JOB_ASSIGNED, JOB_STATUS_CHOICES)
                    shift.job.save()

                return redirect('/shift-leader/pending-jobs/')
                
                    
            except ValueError:
                errors.append('You must select a contractor')
            
    
    confirmed = []
    unknown = []
    for offer in shift.offers.all():
        if offer.confirmed == True:
            confirmed.append(offer.contractor)
        elif offer.confirmed == None:
            unknown.append(offer.contractor)
    return render_page(request, 'shiftleader/pending_jobs_shift.html', locals())
Exemple #5
0
def job_edit(request, job_id):
    if request.method == 'POST':
        return ajax_job_edit(request, job_id)

    job = get_object_or_404(Job, pk=job_id)
    job_form = JobForm(instance=job)
    shift_form = ShiftForm()

    existing_shifts = [{'title': s.title,
                        'form': ShiftForm(instance=s),
                        'roles': mk_role_forms(s)} for s in job.shifts.all()]
    
    data = {'job_title': job.title,
            'job_form': job_form,
            'existing_shifts': existing_shifts,
            'empty_roles': mk_role_forms(),
            'empty_shift': shift_form,
    }
    
    return render_page(request, 'clientmanager/job_edit.html', data)
Exemple #6
0
def contractors_detail(request, contractor_id):
    return render_page(request, 'shiftleader/contractors_detail.html')
Exemple #7
0
def contractors_search(request, query):
    return render_page(request, 'shiftleader/contractors_search.html')
Exemple #8
0
def open_jobs_job(request, job_id):
    try:
        job = Job.objects.select_related().get(id=job_id)
    except Job.DoesNotExist:
        raise Http404
    return render_page(request, 'shiftleader/open_jobs_job.html', {'job': job})
Exemple #9
0
def open_jobs_gantt(request):
    return render_page(request, 'shiftleader/open_jobs_gantt.html')
Exemple #10
0
def upload(request):
    if request.method != 'POST':
        raise Http404
    form = GoogleDocForm(request.POST, request.FILES)
    if not form.is_valid():
        data = {'form': form}
        return render_page(request, 'talentmanager/control_panel.html', data)
    else:
        # Connect to Google
        gd_client = gdata.spreadsheet.service.SpreadsheetsService()
        gd_client.email = form.cleaned_data['google_username']
        gd_client.password = form.cleaned_data['google_password']
        gd_client.source = 'shift.ttforbes.com'
        gd_client.ProgrammaticLogin()
        
        q = gdata.spreadsheet.service.DocumentQuery()
        q['title'] = form.cleaned_data['document_name']
        #q['title-exact'] = 'true'
        feed = gd_client.GetSpreadsheetsFeed(query=q)
        spreadsheet_id = feed.entry[0].id.text.rsplit('/',1)[1]
        feed = gd_client.GetWorksheetsFeed(spreadsheet_id)
        worksheet_id = feed.entry[0].id.text.rsplit('/',1)[1]

        rows = gd_client.GetListFeed(spreadsheet_id, worksheet_id).entry

        def shorthand(key): return key.replace(' ', '').lower()
        
        attrs = dict((shorthand(a.field_name), a) for a in Attribute.objects.all())
        
        errors = []
        
        for row in rows:
            # get the contractor if he/she exists
            firstname = row.custom['firstname'].text
            lastname = row.custom['lastname'].text
            contact_email = row.custom['contactemail'].text
            payment_email = row.custom['paymentemail'].text
            phone = row.custom['phone'].text
            location = row.custom['location'].text
            m,d,y = row.custom['birthdate'].text.split('/')
            birthdate = datetime.date(int(y), int(m), int(d))

            # get Contractor object
            try:
                contractor = Contractor.objects.get(user__first_name=firstname,
                                                    user__last_name=lastname)
            except Contractor.DoesNotExist:
                user = User.objects.create(first_name=firstname,
                                           last_name=lastname,
                                           username=contact_email,
                                           email=contact_email)
                contractor = Contractor(user=user)
                
            # populate/update contractor info
            contractor.birthdate = birthdate
            contractor.contact_email = contact_email
            contractor.payment_email = payment_email
            contractor.phone = phone
            contractor.location = location
            contractor.user.email = contact_email
            contractor.user.username = contact_email
            contractor.save()

            full_name = '{0} {1}'.format(firstname, lastname)
            
            # blow away old attributes
            contractor.attributes.all().delete()
            
            vals = []
            local_errors = []
            
            for key in row.custom:
                cell = row.custom[key].text
                if key in attrs and cell != None:
                    try:
                        attr = attrs[key]
                        val = attr.mk_val(cell)
                        val.contractor = contractor
                        vals.append(val)
                    except:
                        local_errors.append('Could not set {0} = {1}'.format(key,cell))
                
            ContractorAttributeVal.objects.bulk_create(vals)

            if len(local_errors) > 0:
                errors.append({'contractor': full_name,
                               'errors': local_errors})
                
        data = {'form': form}
        if len(errors) > 0:
            data['errors'] = errors
        else:
            data['success'] = 1
            
        return render_page(request, 'talentmanager/control_panel.html', data)
Exemple #11
0
def unconfirm_shift(request, uid):
    offer = get_object_or_404(ShiftOffer, uid=uid)
    offer.confirmed = False
    offer.save()
    return render_page(request, 'confirmation.html')    
Exemple #12
0
def completed_detail(request, job_id):
    return render_page(request, 'shiftleader/completed_detail.html')
Exemple #13
0
def completed_jobs(request):
    return render_page(request, 'shiftleader/completed_jobs.html')
Exemple #14
0
def pending_jobs_job(request, job_id):
    return render_page(request, 'shiftleader/unassigned_detail.html')
Exemple #15
0
        
        for id in standby:
            offer = ShiftOffer(contractor_id=id, shift=shift)
            offer.save()
            #send_confirmation_email(offer)
            
        shift.status = choice_rassoc(SHIFT_PENDING, SHIFT_STATUS_CHOICES)
        shift.save()
        
        if len(shift.job.open_shifts()) == 0:
            shift.job.status = choice_rassoc(JOB_PENDING, JOB_STATUS_CHOICES)
            shift.job.save()

        return redirect('/shift-leader/pending-jobs/shift/%s' % shift.id)
            
    return render_page(request, 'shiftleader/open_jobs_shift.html', data)


@admin_required('shiftleader')
def contractors_search(request, query):
    return render_page(request, 'shiftleader/contractors_search.html')

@admin_required('shiftleader')
def contractors_detail(request, contractor_id):
    return render_page(request, 'shiftleader/contractors_detail.html')

@admin_required('shiftleader')
def pending_jobs(request):
    pending_id = choice_rassoc(JOB_PENDING, JOB_STATUS_CHOICES)
    qs = Job.objects.select_related().all()
    jobs = []
Exemple #16
0
def control_panel(request):
    #list completed jobs awaiting finalization
    return render_page(request, 'clientmanager/control_panel.html')
Exemple #17
0
def control_panel(request):
    return render_page(request, 'shiftleader/control_panel.html')
Exemple #18
0
def job_open(request):
    data = {'jobs': Job.objects.all()}
    return render_page(request, 'clientmanager/job_open.html', data)
Exemple #19
0
def open_jobs_calendar(request):
    return render_page(request, 'shiftleader/open_jobs_calendar.html')
Exemple #20
0
def job_status(request, job_id):
    return render_page(request, 'clientmanager/job_status.html')
Exemple #21
0
def control_panel(request):
    form = GoogleDocForm()
    data = {'form': form}
    return render_page(request, 'talentmanager/control_panel.html', data)