コード例 #1
0
ファイル: views.py プロジェクト: mmccarty/nell
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')
コード例 #2
0
ファイル: views.py プロジェクト: mmccarty/nell
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')
コード例 #3
0
ファイル: views.py プロジェクト: nrao/nell
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')
コード例 #4
0
    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()             
コード例 #5
0
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))