Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
for p in Person.objects.filter(last_name='Grad'):
app = TAApplication(posting=post, person=p, category=random.choice(['GTA1','GTA2']), current_program='CMPT', sin='123456789',
base_units=random.choice([3,4,5]))
app.save()
will_ta = []
for i,o in enumerate(random.sample(offerings, 5)):
t = random.choice(TAKEN_CHOICES)[0]
e = random.choice(EXPER_CHOICES)[0]
cp = CoursePreference(app=app, course=o.course, rank=i+1, taken=t, exper=e)
cp.save()
if random.random() < 0.07*(5-i):
will_ta.append(o)
if will_ta and random.random() < 0.75:
c = TAContract(status=random.choice(['NEW','OPN','ACC']))
c.first_assign(app, post)
c.save()
for o in will_ta:
tac = TACourse(course=o, contract=c, bu=app.base_units)
tac.description = tac.default_description()
tac.save()
# RAs
s = Semester.current()
superv = list(m.person for m in Member.objects.filter(role='INST').select_related('person'))
empl = list(itertools.chain(Person.objects.filter(last_name='Grad'),
random.sample(list(Person.objects.filter(last_name='Student')), 10)))
cats = [c for c,d in HIRING_CATEGORY_CHOICES if c not in HIRING_CATEGORY_DISABLED]
config = SemesterConfig.get_config([unit], s)
acct = Account(account_number=12349, position_number=12349, title='NSERC RA', unit=unit)
def financials(request, grad_slug):
grad, _ = _can_view_student(request, grad_slug, funding=True)
if grad is None:
return ForbiddenResponse(request)
current_status = GradStatus.objects.filter(student=grad, hidden=False).order_by('-start')[0]
grad_status_qs = GradStatus.objects.filter(student=grad, hidden=False, status__in=STATUS_ACTIVE).select_related('start','end')
scholarships_qs = Scholarship.objects.filter(student=grad, removed=False).select_related('start_semester','end_semester')
promises_qs = Promise.objects.filter(student=grad, removed=False).select_related('start_semester','end_semester')
other_fundings = OtherFunding.objects.filter(student=grad, removed=False).select_related('semester')
contracts = TAContract.objects.filter(application__person=grad.person).exclude(status__in=STATUSES_NOT_TAING).select_related('posting__semester')
appointments = RAAppointment.objects.filter(person=grad.person, deleted=False)
program_history = GradProgramHistory.objects.filter(student=grad).select_related('start_semester', 'program')
financial_comments = FinancialComment.objects.filter(student=grad, removed=False).select_related('semester')
# initialize earliest starting and latest ending semesters for display.
# Falls back on current semester if none
all_semesters = itertools.chain( # every semester we have info for
(s.start for s in grad_status_qs),
(s.end for s in grad_status_qs),
(p.start_semester for p in promises_qs),
(p.end_semester for p in promises_qs),
(s.start_semester for s in scholarships_qs),
(s.end_semester for s in scholarships_qs),
(o.semester for o in other_fundings),
(c.posting.semester for c in contracts),
(c.semester for c in financial_comments),
if contract.count() > 0:
contract = contract[0]
application = contract.application
cnum = contract.tacourse_set.all().count()
if cnum > num:
num = 0
else:
num = num - contract.tacourse_set.all().count()
old_status = contract.get_status_display()
if contract.status not in ['NEW', 'OPN']:
# after editing, revert to open
contract.status = 'OPN'
editing = True
else:
# creating new contract
contract = TAContract()
application = TAApplication.objects.get(person__userid=userid, posting=posting)
old_status = None
editing = False
TACourseFormset = inlineformset_factory(TAContract, TACourse, extra=num, can_delete=editing, form=TACourseForm, formset=BaseTACourseFormSet)
formset = TACourseFormset(instance=contract)
if request.method == "POST":
form = TAContractForm(request.POST, instance=contract)
if request.is_ajax():
if('appt_cat' in request.POST):
index = posting.cat_index(request.POST['appt_cat'])
results = posting.salary()[index] + ',' + posting.scholarship()[index] + ',' + str(posting.accounts()[index])
return HttpResponse(results)
if('course' in request.POST):
course = request.POST['course']
if apps:
app = apps[0]
else:
app = TAApplication(posting=posting, person=p)
app.category = self.CATEGORY_MAP[cat]
app.base_units = app_bu or 0
app.sin = sin
app.save()
# create TAContract
contracts = TAContract.objects.filter(posting=posting, application=app)
if contracts:
contract = contracts[0]
else:
contract = TAContract(posting=posting, application=app)
try:
pos_id = self.positions[posnum]
except KeyError:
pos_id = posting.config['accounts'][self.CATEGORY_INDEX[app.category]]
contract.sin = sin
contract.pay_start = payst or offering.semester.start
contract.pay_end = payen or offering.semester.end
contract.appt_category = app.category
contract.position_number_id = pos_id
contract.appt = self.INITIAL_MAP[initial]
contract.pay_per_bu = "%.2f" % (salary/bu)
contract.scholarship_per_bu = "%.2f" % (schol/bu)
contract.deadline = posting.deadline()
contract.appt_cond = bool(cond)
#update rank
applicant = applicants[i]
applicant.rank = formset[i]['rank'].value()
applicant.save()
if not applicant.assigned_course:
#create new TACourse if bu field is nonempty
if formset[i]['bu'].value() != '' and formset[i]['bu'].value() != '0':
#create new TAContract if there isn't one
contracts = TAContract.objects.filter(application=applicants[i], posting=posting)
if contracts.count() > 0: #count is 1
# if we've added to the contract, we've invalidated it.
contract = contracts[0]
contract.status = "NEW"
else:
contract = TAContract(created_by=request.user.username)
contract.first_assign(applicants[i], posting)
bu = formset[i]['bu'].value()
tacourse = TACourse(course=offering, contract=contract, bu=bu)
try:
tacourse.description = tacourse.default_description()
except ValueError:
# handle the case where no appropriate default CourseDescription object can be found
descr_error = True
formset[i]._errors['bu'] = formset[i].error_class(["Can't find a contract description to assign to the contract."])
else:
tacourse.save()
contract.save()
else:
#update bu for existing TACourse
if formset[i]['bu'].value() != '' and formset[i]['bu'].value() != '0':
old_bu = decimal.Decimal(formset[i]['bu'].value())
#TeachingEquivalent.objects.all(),
#TeachingIntention.objects.all(),
#TeachingCapability.objects.all(),
FormGroup.objects.all(),
FormGroupMember.objects.all(),
Form.objects.all(),
Sheet.objects.all(),
Field.objects.all(),
FormSubmission.objects.all(),
SheetSubmission.objects.all(),
FieldSubmission.objects.all(),
TAPosting.objects.all(),
TAApplication.objects.all(),
CoursePreference.objects.all(),
CourseDescription.objects.all(),
TAContract.objects.all(),
TACourse.objects.all(),
RAAppointment.objects.all(),
Project.objects.all(),
SemesterConfig.objects.all(),
)
data = serializers.serialize("json", objs, sort_keys=True, indent=1)
fh = open(filename, "w")
fh.write(data)
fh.close()
def save(self, *args, **kwargs):
super(TAContract, self).save(*args, **kwargs)
# set SIN field on any GradStudent objects for this person
from grad.models import GradStudent
for gs in GradStudent.objects.filter(person=self.application.person):
dummy_sins = ['999999999', '000000000', '123456789']
if (('sin' not in gs.config
or ('sin' in gs.config and gs.config['sin'] in dummy_sins))
and not self.sin in dummy_sins ):
gs.person.set_sin(self.sin)
gs.person.save()
from tacontracts.models import TAContract as NewTAContract
NewTAContract.update_ta_members(self.application.person, self.posting.semester_id)
# If the status of this contract is Cancelled or Rejected, find all the TACourses
# it applies to and set their BUs to 0.
def print_all_applications(request,post_slug):
posting = get_object_or_404(TAPosting, slug=post_slug, unit__in=request.units)
applications = TAApplication.objects.filter(posting=posting).order_by('person')
for application in applications:
application.courses = CoursePreference.objects.filter(app=application).exclude(rank=0).order_by('rank')
application.skills = SkillLevel.objects.filter(app=application).select_related('skill')
application.campuses = CampusPreference.objects.filter(app=application)
application.contracts = TAContract.objects.filter(application=application)
application.previous_experience = TACourse.objects.filter(contract__application__person=application.person) \
.exclude(contract__application=application).select_related('course__semester')
application.grad_programs = GradStudent.objects \
.filter(program__unit__in=request.units, person=application.person)
context = {
'applications': applications,
'posting': posting,
}
return render(request, 'ta/print_all_applications.html', context)