def import_pst_proposals(request, *args, **kws): if request.method == 'POST': pst = PstImport() # pcode is in PST format pcodes = request.POST.getlist('proposals') pst.importProposalsByPcode(pcodes) return HttpResponse(json.dumps({"success" : "ok"}) , content_type = 'application/json')
def import_semester(request, *args, **kws): if request.method == 'POST': pst = PstImport() semester = request.POST.get('semester') srp = request.POST.get('srp', 'false') == 'true' if semester is not None: if srp: proposals = Proposal.objects.filter(semester__semester = semester).exclude(pst_proposal_id = 0).exclude(pst_proposal_id = None) map(pst.fetchSRPScore, proposals) map(pst.fetchComments, proposals) else: pst.importProposals(semester) return HttpResponse(json.dumps({"success" : "ok"}) , content_type = 'application/json')
def import_semester(request, *args, **kws): if request.method == 'POST': pst = PstImport() semester = request.POST.get('semester') srp = request.POST.get('srp', 'false') == 'true' disposition = request.POST.get('disposition', 'false') == 'true' if semester is not None: if srp: pst.importSRPRelatedInfo(semester) elif disposition: pst.importDispositions(semester) else: pst.importProposals(semester) return HttpResponse(json.dumps({"success" : "ok"}) , content_type = 'application/json')
def setUp(self): self.pst = PstImport() # too lazy to fix fixtures, so add new rx's here: r = Receiver(name = 'RcvrWide12_18' , abbreviation = 'KuWide' , freq_low = 12.0 , freq_hi = 18.0 , code = 'D' ) r.save() r = Receiver(name = 'Rcvr_MBA1_5' , abbreviation = 'MBA1.5' , freq_low = 80.0 , freq_hi = 100.0 , code = 'G' ) r.save()
class TestPstImport(TestCase): fixtures = ['scheduler.json'] def setUp(self): self.pst = PstImport() # too lazy to fix fixtures, so add new rx's here: r = Receiver(name = 'RcvrWide12_18' , abbreviation = 'KuWide' , freq_low = 12.0 , freq_hi = 18.0 , code = 'D' ) r.save() r = Receiver(name = 'Rcvr_MBA1_5' , abbreviation = 'MBA1.5' , freq_low = 80.0 , freq_hi = 100.0 , code = 'G' ) r.save() def test_importProposal(self): proposal = self.pst.importProposal('GBT/12A-002') self.assertTrue(proposal is not None) self.assertTrue(len(proposal.sci_categories.all()) > 0) self.assertTrue(len(proposal.session_set.all()) > 0) s = proposal.session_set.all().order_by('name')[0] self.assertEquals("GBT12A-002 - 01", s.name) self.assertTrue(len(proposal.source_set.all()) > 0) src = proposal.source_set.all()[0] self.assertAlmostEquals(4.79908, src.ra, 1) self.assertAlmostEquals(4.7932, s.target.ra, 4) self.assertAlmostEquals(-0.2146, s.target.dec, 4) self.assertTrue(len(s.sources.all()) > 0) self.assertTrue(len(s.receivers.all()) > 0) self.assertTrue(len(s.receivers_granted.all()) > 0) self.assertEquals(s.receivers.all()[0].name , s.receivers_granted.all()[0].name) self.assertTrue(len(s.backends.all()) > 0) self.assertTrue(s.allotment is not None) self.assertTrue(s.target is not None) self.assertTrue(s.next_semester is not None) self.assertEqual('Open - Low Freq', s.session_type.type) self.assertEqual('Poor', s.weather_type.type) self.assertEqual('spectral line', s.observing_type.type) # test the reports self.pst.report() reports = ImportReport.objects.all() self.assertEqual(1, len(reports)) self.assertTrue(0 < len(reports[0].report)) proposal.delete() def test_importProposal_GBT13A_072(self): "Had problems import this ones resources." proposal = self.pst.importProposal('GBT/13A-072') for s in proposal.session_set.all(): self.assertTrue(len(s.receivers.all()) > 0) def test_semesterFromPcode(self): self.assertEquals("12A", self.pst.semesterFromPcode("GBT/12A-002")) self.assertEquals("12B", self.pst.semesterFromPcode("GBT/12B-012")) self.assertEquals("12B", self.pst.semesterFromPcode("VLBA/12B-012")) self.assertEquals(None, self.pst.semesterFromPcode("Chewbacca")) def test_proposalUsesGBT(self): # GBT/12A-002 pId = 5813 self.assertEquals(True, self.pst.proposalUsesGBT(pId, "GBT")) # VLBA only pId = 5821 self.assertEquals(False, self.pst.proposalUsesGBT(pId, "VLBA")) def test_importProposals(self): self.pst.importProposals('12A') ps = Proposal.objects.all() expSessTypes = [ 'Fixed' , 'Open - High Freq 1' , 'Open - High Freq 2' , 'Open - Low Freq' , 'Windowed' ] expObsTypes = [ 'continuum' , 'pulsar' , 'radar' , 'spectral line' , 'vlbi'] self.checkProposals(ps, expSessTypes, expObsTypes) def test_importProposals_13A(self): self.pst.importProposals('13A') ps = Proposal.objects.all() expSessTypes = [ 'Fixed' , 'Open - High Freq 1' , 'Open - High Freq 2' , 'Open - Low Freq' , 'Windowed' ] expObsTypes = [ u'continuum' , u'pulsar' , u'radar' , u'spectral line' , u'vlbi'] self.checkProposals(ps, expSessTypes, expObsTypes) def checkProposals(self, ps, expSessTypes, expObsTypes): self.assertTrue(len(ps) > 0) stypes = [] otypes = [] wtypes = [] noObsType = 0 for p in ps: self.assertTrue(len(p.session_set.all()) > 0) # make sure all vlbi/a sessions are fixed if 'vlbi' in p.pcode.lower() or 'vlba' in p.pcode.lower(): for s in p.session_set.all(): self.assertEqual('Fixed', s.session_type.type) for s in p.session_set.all(): self.assertTrue(s.session_type is not None) self.assertTrue(s.observing_type is not None) self.assertTrue(s.weather_type is not None) # collect the various types being set if s.session_type is not None and \ s.session_type.type not in stypes: stypes.append(s.session_type.type) if s.observing_type is not None and \ s.observing_type.type not in otypes: otypes.append(s.observing_type.type) if s.weather_type is not None and \ s.weather_type.type not in wtypes: wtypes.append(s.weather_type.type) if s.observing_type is None: noObsType += 1 p.delete() self.assertEqual(0, noObsType) # make sure the types we are setting are reasonable self.assertEquals(expObsTypes, sorted(otypes)) self.assertEquals(expSessTypes, sorted(stypes)) self.assertEquals(['Excellent', 'Good', 'Poor'], sorted(wtypes)) self.assertEqual(0, len(self.pst.badFrontends)) self.assertEqual(0, len(self.pst.badBackends)) def test_importProposals_12B(self): self.pst.importProposals('12B') ps = Proposal.objects.all() self.assertTrue(len(ps) > 0) # before cleaning up, check a few things p = Proposal.objects.get(pcode = 'GBT12B-352') # one of the few exceptions where they use a different pi self.assertTrue(p.pi is not None) self.assertTrue(p.contact is not None) self.assertTrue(p.pi != p.contact) # clean up for p in ps: self.assertTrue(len(p.session_set.all()) > 0) p.delete() self.assertEqual(0, len(self.pst.badFrontends)) self.assertEqual(0, len(self.pst.badBackends))