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))
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]), ) )
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]) ) )
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))
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())
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())
def run(): earliest = date.today() - timedelta(days=7) purgable = Change.query(Change.for_date < earliest) purgable.map(lambda i: i.key.delete())
def get(self): return Change.get_week(), [Change.for_class, Change.for_date]
def get(self, date): date = ISO8601.parse(date) return Change.get_for_date(date), [Change.for_class]
def get(self, class_name): return Change.get_week_for_class(class_name), [Change.for_date]