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)
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())
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())
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())
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)
def contractors_detail(request, contractor_id): return render_page(request, 'shiftleader/contractors_detail.html')
def contractors_search(request, query): return render_page(request, 'shiftleader/contractors_search.html')
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})
def open_jobs_gantt(request): return render_page(request, 'shiftleader/open_jobs_gantt.html')
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)
def unconfirm_shift(request, uid): offer = get_object_or_404(ShiftOffer, uid=uid) offer.confirmed = False offer.save() return render_page(request, 'confirmation.html')
def completed_detail(request, job_id): return render_page(request, 'shiftleader/completed_detail.html')
def completed_jobs(request): return render_page(request, 'shiftleader/completed_jobs.html')
def pending_jobs_job(request, job_id): return render_page(request, 'shiftleader/unassigned_detail.html')
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 = []
def control_panel(request): #list completed jobs awaiting finalization return render_page(request, 'clientmanager/control_panel.html')
def control_panel(request): return render_page(request, 'shiftleader/control_panel.html')
def job_open(request): data = {'jobs': Job.objects.all()} return render_page(request, 'clientmanager/job_open.html', data)
def open_jobs_calendar(request): return render_page(request, 'shiftleader/open_jobs_calendar.html')
def job_status(request, job_id): return render_page(request, 'clientmanager/job_status.html')
def control_panel(request): form = GoogleDocForm() data = {'form': form} return render_page(request, 'talentmanager/control_panel.html', data)