def month(self, year, month, chrt, planet = -1, pos = None): self.flags = astrology.SEFLG_SPEED+astrology.SEFLG_SWIEPH if chrt.options.topocentric: self.flags += astrology.SEFLG_TOPOCTR lastday = 1 for day in range(1, 31): valid = util.checkDate(year, month, day) if valid: lastday = day valid = util.checkDate(year, month, day+1) if valid: lastday = day+1 self.day(year, month, day, chrt, planet, pos) else: break else: break #lastday in month-first day in next month time1 = chart.Time(year, month, lastday, 0, 0, 0, False, chrt.time.cal, chart.Time.GREENWICH, True, 0, 0, False, chrt.place, False) year, month = util.incrMonth(year, month) time2 = chart.Time(year, month, 1, 0, 0, 0, False, chrt.time.cal, chart.Time.GREENWICH, True, 0, 0, False, chrt.place, False) cnt = len(self.transits) if planet == Transits.NONE: self.cycle(time1, chrt, time2) else: self.cycleplanet(time1, chrt, time2, planet, pos) self.order(cnt)
def month(self, year, month, chrt, planet = -1, pos = None): self.flags = astrology.SEFLG_SPEED+astrology.SEFLG_SWIEPH if chrt.options.topocentric: self.flags += astrology.SEFLG_TOPOCTR lastday = 1 for day in range(1, 31): valid = util.checkDate(year, month, day) if valid: lastday = day valid = util.checkDate(year, month, day+1) if valid: lastday = day+1 self.day(year, month, day, chrt, planet, pos) else: break else: break #lastday in month-first day in next month time1 = chart.event.DateTime(year, month, lastday, 0, 0, 0, False, chrt.time.cal, chart.event.DateTime.GREENWICH, True, 0, 0, False, chrt.place, False) year, month = util.incrMonth(year, month) time2 = chart.event.DateTime(year, month, 1, 0, 0, 0, False, chrt.time.cal, chart.event.DateTime.GREENWICH, True, 0, 0, False, chrt.place, False) cnt = len(self.transits) if planet == Transits.NONE: self.cycle(time1, chrt, time2) else: self.cycleplanet(time1, chrt, time2, planet, pos) self.order(cnt)
def onIncrMonth(self, event): y, m = util.incrMonth(self.chart.time.origyear, self.chart.time.origmonth) self.show(y, m, self.chart.time.origday, self.chart.time.hour, self.chart.time.minute, self.chart.time.second)
def compute(self, typ, by, bm, bd, chrt): if typ == Revolutions.SOLAR: year = by if bm > chrt.time.month or (bm == chrt.time.month and bd > chrt.time.day): year+= 1 month = chrt.time.month day = chrt.time.day trans = transits.Transits() trans.month(year, month, chrt, astrology.SE_SUN) # if not found => checking previous or next month if len(trans.transits) == 0: if day < 4: year, month = util.decrMonth(year, month) else: year, month = util.incrMonth(year, month) trans = transits.Transits() trans.month(year, month, chrt, astrology.SE_SUN) if len(trans.transits) > 0: self.createRevolution(year, month, trans) return True return False elif typ == Revolutions.LUNAR: trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_MOON) if len(trans.transits) > 0: second = False if bd > trans.transits[0].day: # There can be more than one lunar in a month!! if len(trans.transits) > 1: if bd > trans.transits[1].day: by, bm = util.incrMonth(by, bm) trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_MOON) else: second = True else: by, bm = util.incrMonth(by, bm) trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_MOON) if len(trans.transits) > 0: if second: self.createRevolution(by, bm, trans, 1) else: self.createRevolution(by, bm, trans) return True return False elif typ == Revolutions.MERCURY: for i in range(14): trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_MERCURY) if len(trans.transits) > 0: if not (i == 0 and bd > trans.transits[0].day): self.createRevolution(by, bm, trans) return True by, bm = util.incrMonth(by, bm) return False elif typ == Revolutions.VENUS: for i in range(16): trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_VENUS) if len(trans.transits) > 0: if not (i == 0 and bd > trans.transits[0].day): self.createRevolution(by, bm, trans) return True by, bm = util.incrMonth(by, bm) return False elif typ == Revolutions.MARS: for i in range(26): trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_MARS) if len(trans.transits) > 0: if not (i == 0 and bd > trans.transits[0].day): self.createRevolution(by, bm, trans) return True by, bm = util.incrMonth(by, bm) return False elif typ == Revolutions.JUPITER: for i in range(12*12): trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_JUPITER) if len(trans.transits) > 0: if not (i == 0 and bd > trans.transits[0].day): self.createRevolution(by, bm, trans) return True by, bm = util.incrMonth(by, bm) return False elif typ == Revolutions.SATURN: for i in range(30*12): trans = transits.Transits() trans.month(by, bm, chrt, astrology.SE_SATURN) if len(trans.transits) > 0: if not (i == 0 and bd > trans.transits[0].day): self.createRevolution(by, bm, trans) return True by, bm = util.incrMonth(by, bm) return False return False
def onIncrMonth(self, event): y, self.m = util.incrMonth(self.y+self.cnt, self.m) if y != self.y+self.cnt: self.cnt +=1 self.show(self.y, self.m, self.d, self.t, self.cnt)