示例#1
0
    def get(self):
        manual = self.request.get("manual") == "1"
        num_months = 6

        now = datetime.datetime.now().date()
        this_week = now - datetime.timedelta(days=now.weekday())
        dmonth = this_week.month + num_months
        if dmonth > 11:
            dyear = this_week.year + 1
            dmonth = dmonth - 11
        else:
            dyear = this_week.year
        logging.info("{} {}".format(dyear,dmonth))
        end_date = datetime.date(year=dyear, month=dmonth, day=1)
        logging.info(end_date)
        assignments = Assignment.gql("WHERE end_date > :1 ORDER BY end_date", now )
        assignments = [ a for a in assignments if a.start_date.date() < end_date ]
        assignments = sorted(assignments, key=lambda a: a.project_name)
        one_week = datetime.timedelta(days=7)
        weeks = []
        while this_week < end_date:
            this_weeks_assignments = [] 
            for a in assignments:
                
                if a.start_date.date() <= this_week <= a.end_date.date() - datetime.timedelta(days=6):
#                    a.weeks_remaining = ((a.end_date.date() - this_week).days + 1)/7
#                    logging.info(a.weeks_remaining)
                    this_weeks_assignments.append(a)

            weeks.append((this_week, this_weeks_assignments))
            this_week += one_week
        logging.info(weeks)
        calendar = Calendar.get_or_insert("main", title="Main Calendar Data")
        calendar.data = pickle.dumps(weeks)
        calendar.timestamp = datetime.datetime.now()
        calendar.manual = manual
        calendar.put()

        #delete all the NewAssignments that are now in the calendar

        db.delete(NewAssignment.all(keys_only=True))
        if manual:
            self.redirect("/settings?status=calgen")