def delete(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) user_data = self.request.user_data row_affected = remove_like(event_id, user_data['id']) if row_affected == 0: return json_response(error='User Id or Event id not found') return json_response(data={'msg': 'deleted'})
def delete(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) user_id = int(self.request.GET.get('user_id', 0)) row_affected = remove_participation(event_id, user_id) if row_affected == 0: return json_response(error='Event not found') return json_response(data={'msg': 'deleted'})
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) try: validate(body_json, user_login_schema) username = body_json.get('username') encrypted_password = body_json.get('password') user_key = cache.get('{}_key'.format(username)) if user_key is None: log.info(user_key) return json_response(error='Invalid login operator') cache.delete('{}_key'.format(username)) password = decrypt(encrypted_password, user_key) user, is_valid = validate_user(username, password) if not is_valid: return json_response( error='Username does not exist or wrong password') token = string_generator(TOKEN_LENGTH) cache.set(token, { 'id': user['id'], 'role': get_user_role(user['id']), 'username': user['username'] }, time=SESSION_TIMEOUT) return json_response(data={'token': token, 'user_id': user['id']}) except ValidationError: return json_response(error='Input validation error')
def post(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) body_json = json.loads(self.request.body) try: validate(body_json, participation_schema) insert_participation(event_id, body_json['user_id']) return json_response(data={'msg': 'participated'}) except ValidationError: return json_response(error='Invalid behavior')
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) try: validate(body_json, user_logout_schema) if validate_token_func(body_json["token"], body_json["user_id"]): cache.delete(body_json["token"]) return json_response(data={'msg': 'logged out'}) return json_response(error='Bad request') except ValidationError: return json_response(error='Bad request')
def get(self, *args, **kwargs): username = self.kwargs.get('username') user = get_user_by_username(username) if user is None: return json_response(error='User not found') return json_response(data={ 'id': user.id, 'username': user.username, 'fullname': user.fullname })
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) username = body_json.get('username') if not validate_username(username): return json_response(error='Invalid username') if is_exist_username(username): return json_response(error='This username is already taken') random_key = string_generator(RANDOM_KEY_LENGTH) cache.set('{}_registerkey'.format(username), random_key) return json_response(data={'key': random_key})
def patch(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) body_json = json.loads(self.request.body) try: validate(body_json, event_patch_schema) event = update_event(event_id, body_json) if event is None: return json_response(error='update failed') return json_response(event) except ValidationError: return json_response(error='Invalid input')
def process_view(self, request, *args, **kwargs): if request.path[:9] == '/api/user' or request.path[:6] == '/media': return None header_token = request.META.get('HTTP_AUTHORIZATION', '') token = header_token[6:] user_data = cache.get(token) if user_data is None: return json_response(error='Unauthorized') if request.path[:6] == '/admin' and user_data['role'] != 2: return json_response(error='Permission denied') request.user_data = user_data return None
def post(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) incoming_files = self.request.FILES.getlist('image') if len(incoming_files) == 0: return json_response(error='no image found') for afile in incoming_files: ext = os.path.splitext(afile.name)[1] if not ext.lower() in VALID_IMAGE_EXTENSIONS: continue filename = default_storage.save(tempfile.NamedTemporaryFile(prefix='image').name.split('/')[-1] + ext, afile) image_id = insert_image('/media/' + filename) insert_image_to_event(event_id, image_id) return json_response(data={'msg': 'Upload images successful'})
def get(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) event = get_event_by_id(event_id) if event is None: return json_response(data={}) event = model_to_dict(event) event['count_like'] = get_event_like_count(event_id) event['count_participation'] = get_event_participation_count(event_id) user_data = self.request.user_data event['has_liked'] = is_user_liked_event(user_data['id'], event.get('id')) event['has_participated'] = is_user_participated_event(user_data['id'], event.get('id')) return json_response(data=event)
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) try: validate(body_json, event_schema) current_timestamp = int(time.time()) body_json["create_time"] = current_timestamp body_json["update_time"] = current_timestamp event = insert_event(body_json) if event is None: return json_response(error='missing data field or wrong data type') for channel in body_json["channels"]: insert_event_channel(event_id=event.id, channel_id=channel['id']) return json_response(data=event) except ValidationError: return json_response(error='missing data field or wrong data type')
def post(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) body_json = json.loads(self.request.body) try: validate(body_json, comment_schema) timestamp = time.time() comment_data = { 'user_id': body_json['user_id'], 'event_id': event_id, 'content': body_json['content'], 'create_time': timestamp, 'update_time': timestamp } insert_comment(comment_data) return json_response(data='Comment posted') except ValidationError: return json_response(error='Invalid input data')
def get(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) base = int(self.request.GET.get('base', 0)) offset = min(int(self.request.GET.get('offset', PAGING_SIZE)), PAGING_SIZE) likes = get_like_of_event(event_id, base, offset) users_id = [like.user_id for like in likes] user_data = get_user_by_ids(users_id) return json_response(data=user_data)
def get(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) base = self.request.GET.get('base', 0) offset = min(int(self.request.GET.get('offset', PAGING_SIZE)), PAGING_SIZE) comments = get_event_comments(event_id, base, offset) return json_response(data={ 'base': base, 'offset': len(comments), 'comments': comments })
def get(self, *args, **kwargs): raw_conditions = { 'start_date__gte': self.request.GET.get('from'), 'end_date__lte': self.request.GET.get('to'), 'location': self.request.GET.get('location') } base = int(self.request.GET.get('base', 0)) offset = min(int(self.request.GET.get('offset', PAGING_SIZE)), PAGING_SIZE) filtered_conditions = {k: v for k, v in raw_conditions.items() if v is not None} if self.request.GET.get('channels') is not None: channels = self.request.GET.get('channels').split(',') events = get_events_with_channels(filtered_conditions, channels, base, offset) else: events = get_events(filtered_conditions, base, offset) if events is None or len(events) == 0: return json_response(data=[]) user_data = self.request.user_data event_ids = [event['id'] for event in events] count_like_map = get_events_like_count(event_ids) count_participation_map = get_events_participation_count(event_ids) events_user_liked = get_events_user_liked(user_data['id']) events_user_participated = get_events_user_participated(user_data['id']) events_channels = get_events_channels(event_ids) event_images = get_events_images(event_ids) for event in events: event['channels'] = events_channels.get(event.get('id'), None) event['image_urls'] = event_images.get(event.get('id'), None) event['count_like'] = count_like_map[event.get('id')] if event.get('id') in count_like_map else 0 event['count_participation'] = count_participation_map[event.get('id')] if event.get( 'id') in count_participation_map else 0 event['has_liked'] = event['id'] in events_user_liked event['has_participated'] = event['id'] in events_user_participated return json_response(data=events)
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) try: validate(body_json, user_register_schema) username = body_json.get('username') random_key = cache.get('{}_registerkey'.format(username)) if random_key is None: return json_response(error='Invalid user register') password = decrypt(body_json.get('password'), random_key) salt = bcrypt.gensalt() email = body_json.get('email') if not validate_email(email): return json_response(error='Invalid email') fullname = body_json.get('fullname') if not validate_fullname(fullname): return json_response(error='Invalid fullname') user = insert_user({ 'username': username, 'email': email, 'fullname': fullname, 'salt': salt, 'salted_password': hasher(password, salt) }) if user is None: return json_response(error='Register user unsuccessful') return json_response(data={'msg': 'User registered'}) except ValidationError as exception: return json_response(error=exception.message)
def post(self, *args, **kwargs): body_json = json.loads(self.request.body) username = body_json.get('username') user = cache.get('{}_userinfo'.format(username)) if user is None: user = model_to_dict(get_user_by_username(username)) if user is None: return json_response(error='Username does not exist') random_key = cache.get('{}_key'.format(username)) if random_key is None: random_key = string_generator(RANDOM_KEY_LENGTH) cache.set('{}_key'.format(username), random_key, time=LOGIN_CACHE_TIMEOUT, noreply=True) cache.set('{}_userinfo'.format(username), user, time=SESSION_TIMEOUT, noreply=True) return json_response(data={'key': random_key})
def get(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) base = int(self.request.GET.get('base', 0)) offset = min(int(self.request.GET.get('offset', PAGING_SIZE)), PAGING_SIZE) list_participant = cache.get('participation_' + str(event_id)) if list_participant is None: list_participant = get_participation_of_event( event_id, base, offset) cache.set('participation_' + str(event_id), list_participant, SINGLE_DAY) users_id = [participant.user_id for participant in list_participant] user_data = get_user_by_ids(users_id) return json_response(data=user_data)
def delete(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) row_affected = delete_event(event_id) if row_affected is None or row_affected[0] == 0: return json_response(error='Event not found') return json_response(data={'msg': 'deleted event {}'.format(event_id)})
def post(self, *args, **kwargs): event_id = int(self.kwargs.get('event_id')) user_data = self.request.user_data insert_like(event_id, user_data['id']) return json_response(data={'msg': 'liked'})
def get(self, *args, **kwargs): base = int(self.request.GET.get('base', 0)) offset = min(int(self.request.GET.get('offset', PAGING_SIZE)), PAGING_SIZE) channels = get_channels(base, offset) return json_response(data=channels)
def _inner_function(*args, **kwargs): try: return func(*args, **kwargs) except Exception as exception: log.error(exception.message) return json_response(error=exception.message)