def test_findConflicts(self): s = self.proposal.session_set.all()[0] src0 = self.proposal.source_set.all()[0] tpcode = self.proposal.pcode # create a new proposal w/ sessions and sources newP = createProposal() newS = self.createSession(newP) newS.grade = SessionGrade.objects.get(grade = 'A') newS.receivers.add(Receiver.objects.get(abbreviation = 'Q')) newS.receivers.add(Receiver.objects.get(abbreviation = '800')) newS.save() # make conflict src1 = self.createSrc(newP) src1.target_name = src0.target_name src1.ra = src0.ra src1.dec = src0.dec src1.save() # make another conflict src2 = self.createSrc(newP) src2.target_name = src0.target_name + "!" src2.ra = src0.ra + (src0.ra*0.0002) src2.dec = src0.dec - (src0.dec*0.0002) src2.save() # turn the crank sc = SourceConflicts() sc.findConflicts() cf = sc.conflicts # check the results self.assertEqual(2, len(cf)) self.assertEqual(['GBT10A-009','GBT12A-002'], sorted(cf.keys())) # we've already tested these results below in the other test scf1 = cf['GBT12A-002']['conflicts'] self.assertEqual(2, len(scf1)) # but not for conflicts for this newly created proposal c = cf['GBT10A-009'] self.assertEqual('GBT10A-009', c['proposal'].pcode) self.assertEqual('800', c['lowestRx'].abbreviation) self.assertAlmostEqual(0.0090175344, c['searchRadius'], 5) # the conflicts are the mirror of eachother scf2 = c['conflicts'] self.assertAlmostEqual(2, len(scf2)) for i in range(2): self.assertEqual(scf1[i]['targetSrc'] , scf2[i]['searchedSrc']) self.assertEqual(scf2[i]['targetSrc'] , scf1[i]['searchedSrc']) self.assertAlmostEqual(scf1[i]['distance'] , scf2[i]['distance'], 5)
def test_findConflicts(self): s = self.proposal.session_set.all()[0] src0 = self.proposal.source_set.all()[0] tpcode = self.proposal.pcode # create a new proposal w/ sessions and sources newP = createProposal() newP.pi = Author.objects.all()[0] newP.save() newS = self.createSession(newP) newS.grade = SessionGrade.objects.get(grade = 'A') newS.receivers.add(Receiver.objects.get(abbreviation = 'Q')) newS.receivers.add(Receiver.objects.get(abbreviation = '800')) newS.save() # second session isn't graded newS2 = self.createSession(newP) newS2.grade = None newS2.receivers.add(Receiver.objects.get(abbreviation = 'Q')) newS2.receivers.add(Receiver.objects.get(abbreviation = '800')) newS2.save() # make conflict src1 = self.createSrc(newP) src1.target_name = src0.target_name src1.ra = src0.ra src1.dec = src0.dec src1.save() # make another conflict src2 = self.createSrc(newP) src2.target_name = src0.target_name + "!" src2.ra = src0.ra + (src0.ra*0.0002) src2.dec = src0.dec - (src0.dec*0.0002) src2.save() # turn the crank sc = SourceConflicts() sc.findConflicts() cf = sc.conflicts # now create the report ps = Proposal.objects.all() filename = '12A' scr = SourceConflictsReport('sourceConflictsReport-%s-all.pdf' % filename) sc.filterConflicts(0) scr.report(sc.filteredConflicts, semester = '12A', level = 0)
dt = datetime.now() days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] return '%s, %s' % (days[dt.weekday()], dt.strftime('%B %d, %Y')) if __name__ == '__main__': import argparse parser = argparse.ArgumentParser(description='Command line tool for running GB PHT Source Conflict Reports. Specify at least a semester or pcode.') parser.add_argument('-s','--semester', dest="semester", help='Semester of the proposals you wish to check for source conflicts.') parser.add_argument('-p','--pcode', dest="pcode", help='Run source conflicts for a given pcode (Ex. GBT12B-100)') parser.add_argument('-l','--level', dest="level", type = int, default = -1, help='Level of conflicts to check. Options are "0", "1", "2" (defaults to all).') args = parser.parse_args() sc = SourceConflicts(semester = args.semester) if args.pcode is not None: sc.findConflicts(proposals = Proposal.objects.filter(pcode = args.pcode)) filename = args.pcode else: sc.findConflicts( # Uncomment for testing. #proposals = Proposal.objects.filter(semester__semester = args.semester)[:5] ) filename = args.semester levelMap = ['all', 'sameReceiver', 'sameReceiver-proprietaryPeriod'] if args.level == -1: sc.filterConflicts(0) scr = SourceConflictsReport('sourceConflictsReport-%s-all.pdf' % filename) scr.report(sc.filteredConflicts, semester = args.semester, pcode = args.pcode, level = 0) sc.filterConflicts(1) scr = SourceConflictsReport('sourceConflictsReport-%s-sameReceiver.pdf' % filename)