def action(self): config_obj = ApplicationConfig.get_current_config() client = SpreadsheetConnector(config_obj.google_user_email, config_obj.google_user_password) worksheet = client.get_worksheet(config_obj.holidays_spreadsheet, 6) data = worksheet.GetRecords(1, 99999) # Magic Constant dates_new = set([ datetime.datetime.strptime(d.content['data'], '%Y-%m-%d').date() for d in data ]) dates_old = set(Holiday.all(cache=False)) dates_diff = dates_new.difference(dates_old) if dates_diff: holidays = [ Holiday(date=date) for date in dates_diff ] DBSession.add_all(holidays) INFO(u'%s Holidays added: %s' % (len(dates_diff), dates_diff)) return Response('ok')
class Team(ApiView): def get(self): team_id = self.request.matchdict.get('team_id') team = Team_m.query.get(team_id) if team: return team.to_dict() else: raise HTTPNotFound() @has_perm('can_edit_teams') def put(self): team_id = self.request.matchdict.get('team_id') team = Team_m.query.get(team_id) if not team: raise HTTPNotFound() try: json_team = self.request.json_body except ValueError: raise HTTPBadRequest('Expect json') team_schema = TeamUpdateSchema() try: team_des = team_schema.deserialize(json_team) except colander.Invalid, e: errors = e.asdict() raise HTTPBadRequest(errors) team.name = team_des.get('name') or team.name if 'users' in team_des: new_users = team_des['users'] old_users = DBSession.query(TeamMember.user_id).filter(TeamMember.team_id==team.id).all() users_delete = list(set(old_users) - set(new_users)) users_add = list(set(new_users) - set(old_users)) if users_delete: TeamMember.query.filter(TeamMember.team_id==team.id)\ .filter(TeamMember.user_id.in_(users_delete))\ .delete(synchronize_session=False) if users_add: DBSession.add_all([TeamMember(user_id=u_id, team_id=team.id) for u_id in users_add]) if team_des.get('swap_with_preview'): preview = Preview(self.request) if not preview.swap_avatar(type='teams', id=team.id): raise HTTPBadRequest('No preview to swap') return HTTPOk("OK")