Ejemplo n.º 1
0
 def get(self, date):
     date = ISO8601.parse(date)
     template = environment.get_template('changes_for_date.htm')
     changes = Change.get_for_date(date)
     self.response.write(template.render(
         changes=changes,
         date=date))
Ejemplo n.º 2
0
 def get(self):
     template = environment.get_template("deleted_changes.htm")
     changes = Change.get_deleted().order(Change.purgeable_since, Change.for_date, Change.for_class)
     self.response.write(
         template.render(
             has_changes=changes.count(limit=1) > 0,
             changes=changes,
             changes_json=json_dumps([change.to_dict() for change in changes]),
         )
     )
Ejemplo n.º 3
0
 def get(self):
     template = environment.get_template('all_changes.htm')
     changes = Change.get_all().order(Change.for_date, Change.for_class)
     self.response.write(
         template.render(
             has_changes=changes.count(limit=1) > 0,
             changes=changes,
             changes_json=json_dumps([change.to_dict() for change in changes])
         )
     )
Ejemplo n.º 4
0
 def get(self):
     try:
         template = environment.get_template('all_changes.htm')
         changes = Change.get_week()
         classNames = sorted(unique(changes, 'for_class', attr=True))
         dates = sorted(unique(changes, 'for_date', attr=True))
         self.response.write(template.render(
             changes=None,
             classNames=classNames,
             dates=dates))
     except NeedIndexError:
         template = environment.get_template('errors/index_not_ready.htm')
         self.response.write(template.render(_empty_navbar=True))
Ejemplo n.º 5
0
    def post(self):
        if not users.get_current_user():
            self.fail(401, 'Authorization is required to access this resource.')
            return
        elif not users.is_current_user_admin():
            self.fail(403,
                'Administrative privileges are required to access this resource.')
            return

        data = json.loads(self.request.body)
        if 'items' in data:
            # old-style non-REST multiple submission endpoint
            # { for_date: …, items: [ { for_class: …, lessons: [ … ] } ] }
            if not ISO8601.is_valid(data['for_date']):
                self.fail(400, 'Invalid date')
                return
            else:
                common_date = ISO8601.parse(data['for_date'])
            resp = dict()
            for change_item in data['items']:
                lessons = lesson_pipeline(change_item['lessons'])
                c = Change(for_class=change_item['for_class'],
                    for_date=common_date,
                    lessons=json.dumps(lessons))
                c.put()
                resp[c.for_class] = c.key.urlsafe()
            self.jsonify(
                success=True,
                kind='Change',
                items=resp
            )
        else:
            # single submission (new frontend)
            # { for_date: …, for_class: …, lessons: [ … ] }
            if not ISO8601.is_valid(data['for_date']):
                self.fail(400, 'Invalid date')
                return
            else:
                for_date = ISO8601.parse(data['for_date'])

            lessons = lesson_pipeline(data['lessons'])
            c = Change(for_class=data['for_class'],
                for_date=for_date,
                lessons=json.dumps(lessons))
            c.put()
            self.jsonify(id=c.key.urlsafe())
Ejemplo n.º 6
0
def run():
    earliest = date.today() - timedelta(days=3)
    purgable = Change.query(Change.purgeable_since != None,
        Change.purgeable_since < earliest)
    purgable.map(lambda i: i.key.delete())
Ejemplo n.º 7
0
def run():
    earliest = date.today() - timedelta(days=7)
    purgable = Change.query(Change.for_date < earliest)
    purgable.map(lambda i: i.key.delete())
Ejemplo n.º 8
0
 def get(self):
     return Change.get_week(), [Change.for_class, Change.for_date]
Ejemplo n.º 9
0
 def get(self, date):
     date = ISO8601.parse(date)
     return Change.get_for_date(date), [Change.for_class]
Ejemplo n.º 10
0
 def get(self, class_name):
     return Change.get_week_for_class(class_name), [Change.for_date]