def destroy(self, request, *args, **kwargs): try: token = request.data.get('token') auth_user = get_user_by_token(token) if auth_user: iaer = self.get_object() if iaer: try: response = super(IaerViewSet, self).destroy(request, *args, **kwargs) print("168: " + str(response.status_code)) if response.status_code != status.HTTP_204_NO_CONTENT: iaer.id = -1 except Exception as e: iaer.id = -1 save_error_log(request, e) event_json = IaerSerializer(iaer).data return json_response(event_json, CODE_SUCCESS, MSG_DELETE_IAER_SUCCESS) else: return simple_json_response(CODE_NO_CONTENT, MSG_204) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def destroy(self, request, *args, **kwargs): try: token = request.data.get('token') user = get_user_by_token(token) if user: red_envelope = self.get_object() if red_envelope: try: response = super(RedEnvelopeViewSet, self).destroy(request, *args, **kwargs) if response.status_code != status.HTTP_204_NO_CONTENT: red_envelope.id = -1 except Exception as e: red_envelope.id = -1 save_error_log(request, e) event_json = RedEnvelopeSerializer(red_envelope).data return json_response(event_json, CODE_SUCCESS, MSG_DELETE_RED_ENVELOPE_SUCCESS) else: return simple_json_response(CODE_NO_CONTENT, MSG_204) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def update(self, request, *args, **kwargs): token = request.data.get('token') home_show_current = request.data.get('home_show_current', False) home_show_this_month = request.data.get('home_show_this_month', False) home_show_this_year = request.data.get('home_show_this_year', False) monthly_fund = request.data.get('monthly_fund', 0) yearly_fund = request.data.get('yearly_fund', 0) try: auth_user = get_user_by_token(token) if auth_user: user = User.objects.get(auth_user=auth_user) if Setting.objects.filter(user_id=user.id): setting = Setting.objects.get(user_id=user.id) else: setting = Setting() setting.home_show_current = home_show_current setting.home_show_this_month = home_show_this_month setting.home_show_this_year = home_show_this_year setting.monthly_fund = monthly_fund setting.yearly_fund = yearly_fund setting.user = user setting.save() return json_response( SettingSerializer(setting).data, CODE_SUCCESS, MSG_UPDATE_SETTING_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def reset_password_with_verify_code_view(request): code = request.data.get('verify_code') email = request.data.get('email') password = request.data.get('password') try: if not code: return simple_json_response(CODE_EMPTY_VERIFY_CODE, MSG_EMPTY_VERIFY_CODE) elif not email: return simple_json_response(CODE_EMPTY_EMAIL, MSG_EMPTY_EMAIL) elif not password: return simple_json_response(CODE_EMPTY_PASSWORD, MSG_EMPTY_PASSWORD) elif not validate_email(email): return simple_json_response(CODE_INVALID_EMAIL, MSG_INVALID_EMAIL) elif len(password) < MIN_PASSWORD_LEN: return simple_json_response(CODE_INVALID_PASSWORD, MSG_INVALID_PASSWORD) user = get_user(email=email) if user: user = User.objects.get(auth_user=user) if Verify.objects.filter(user=user, email_verify_code=code.lower()): verify = Verify.objects.filter(user=user, email_verify_code=code.lower())[0] if (time.time() - float(format(verify.created, 'U'))) > VERIFY_CODE_EXPIRED_TIME: return simple_json_response(CODE_EXPIRED_VERIFY_CODE, MSG_EXPIRED_VERIFY_CODE) else: user.auth_user.set_password(password) user.auth_user.save() user.save() return simple_json_response(CODE_SUCCESS, MSG_RESET_PASSWORD_SUCCESS) else: return simple_json_response(CODE_INCORRECT_VERIFY_CODE, MSG_INCORRECT_VERIFY_CODE) else: return simple_json_response(CODE_USER_NOT_EXISTS, MSG_USER_NOT_EXISTS) except Exception as e: return save_error_log(request, e)
def form_valid(self, form): if form.is_valid(): try: category = form.cleaned_data['category'] if category == '收入': money = form.cleaned_data['money'] else: money = 0 - form.cleaned_data['money'] remark = form.cleaned_data['remark'] token = self.request.session['token'] user = get_user_by_token(token) if user: iaer = form.save(commit=False) iaer.user = User.objects.get(auth_user=user) iaer.money = money iaer.category = category iaer.remark = remark iaer.created = timezone.now() iaer.save() self.object = iaer return super().form_valid(form) else: return invalid_token_response() except Exception as e: return save_error_log(self.request, e)
def login_view(request): username = request.data.get('username', '').lower() password = request.data.get('password') token = request.data.get('token') try: if token: auth_user = Token.objects.get(key=token).user else: auth_user = authenticate(username=username, password=password) if not auth_user and validate_email(username): auth_user = get_user(email=username) if not auth_user: auth_user = authenticate(username=user.username, password=password) if auth_user: user = User.objects.get(auth_user=auth_user) if user: if auth_user.is_active: response_data = UserSerializer(user).data if Token.objects.filter(user=auth_user): response_data['token'] = Token.objects.get(user=auth_user).key return json_response(response_data, CODE_SUCCESS, MSG_LOGIN_SUCCESS) else: return invalid_token_response() else: return simple_json_response(CODE_NOT_ACTIVE, MSG_NOT_ACTIVE_USER) else: return simple_json_response(CODE_INCORRECT_USER_NAME_OR_PASSWORD, MSG_INCORRECT_USER_NAME_OR_PASSWORD) else: return simple_json_response(CODE_INCORRECT_USER_NAME_OR_PASSWORD, MSG_INCORRECT_USER_NAME_OR_PASSWORD) except Exception as e: return save_error_log(request, e)
def create(self, request, *args, **kwargs): try: category = request.data.get('category') money = request.data.get('money') remark = request.data.get('remark') token = request.data.get('token') date = request.data.get('date') auth_user = get_user_by_token(token) if auth_user: iaer = Iaer() iaer.user = User.objects.get(auth_user=auth_user) iaer.money = money iaer.category = category iaer.remark = remark iaer.created = timezone.now() if int(money) > 0: iaer.money_type = 1 else: iaer.money_type = 0 try: iaer.date = datetime.strptime(date, '%Y-%m-%d').date() except ValueError: print("date format error: %s" % date) iaer.save() response = IaerSerializer(iaer).data return json_response(response, CODE_SUCCESS, MSG_ADD_IAER_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def get_queryset(self): user = User.objects.get(id=self.kwargs['pk']) try: self.request.session['token'] = Token.objects.get( user=user.auth_user).key return Iaer.objects.filter(user=user) except Exception as e: return save_error_log(self.request, e)
def retrieve(self, request, *args, **kwargs): token = request.query_params.get('token') try: auth_user = get_user_by_token(token) if auth_user: response = super(UserViewSet, self).retrieve(request, *args, **kwargs).data return json_response(response, CODE_SUCCESS, MSG_GET_USER_DETAIL_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def update(self, request, *args, **kwargs): token = request.data.get('token') user_name = request.data.get('user_name') phone = request.data.get('phone') email = request.data.get('email') gender = request.data.get('gender') birthday = request.data.get('birthday') hobbies = request.data.get('hobbies') base64 = request.data.get('base64') try: user = get_user_by_token(token) if user: if AuthUser.objects.filter(user=user): user = AuthUser.objects.get(user=user) if email: if AuthUser.objects.filter( username__iexact=email ) or AuthUser.objects.filter(email__iexact=email): return simple_json_response( CODE_DUPLICATE_USER, MSG_DUPLICATE_EMAIL) else: user.email = email user.save() if user_name: user.user_name = user_name if phone: if AuthUser.objects.filter(phone=phone): return simple_json_response( CODE_DUPLICATE_PHONE, MSG_DUPLICATE_PHONE) else: user.phone = phone if gender: user.gender = gender if birthday: user.birthday = birthday if hobbies: user.hobbies = hobbies if base64: image_name = user.username + time.strftime( '%Y%m%d%H%M%S') + PROFILE_FOOTER_IMAGE user.save() response_data = UserSerializer(user).data response_data['token'] = Token.objects.get(user=user).key return json_response(response_data, CODE_SUCCESS, MSG_UPDATE_USER_INFO_SUCCESS) return invalid_token_response() except Exception as e: return save_error_log(request, e)
def create(self, request, *args, **kwargs): try: serializer = self.get_serializer(data=request.data) username = request.data.get('username') user_name = request.data.get('user_name') password = request.data.get('password') email = request.data.get('email') first_name = request.data.get('first_name', '') last_name = request.data.get('last_name', '') base64 = request.data.get('base64', '') if not username: return simple_json_response(CODE_EMPTY_USER, MSG_EMPTY_USERNAME) elif not user_name: return simple_json_response(CODE_EMPTY_BABY_NAME, MSG_EMPTY_BABY_NAME) elif not email: return simple_json_response(CODE_EMPTY_EMAIL, MSG_EMPTY_EMAIL) elif not password: return simple_json_response(CODE_EMPTY_PASSWORD, MSG_EMPTY_PASSWORD) elif not validate_email(email): return simple_json_response(CODE_INVALID_EMAIL, MSG_INVALID_EMAIL) elif len(password) < MIN_PASSWORD_LEN: return simple_json_response(CODE_INVALID_PASSWORD, MSG_INVALID_PASSWORD) elif AuthUser.objects.filter(username__iexact=username) or AuthUser.objects.filter(username__iexact=email): return simple_json_response(CODE_DUPLICATE_USER, MSG_DUPLICATE_USER) elif AuthUser.objects.filter(email__iexact=email) or AuthUser.objects.filter(email__iexact=username): return simple_json_response(CODE_DUPLICATE_EMAIL, MSG_DUPLICATE_EMAIL) elif serializer.is_valid(): auth_user = AuthUser() auth_user.email = email.lower() auth_user.is_active = True auth_user.is_staff = True auth_user.set_password(password) auth_user.username = username.lower() auth_user.first_name = first_name auth_user.last_name = last_name self.request.user = auth_user self.perform_create(serializer) response_data = serializer.data response_data['token'] = Token.objects.create(user=auth_user).key user = User.objects.get(auth_user = auth_user) user.locale = response_data['locale'] user.created = timezone.now() if base64: image_name = username + time.strftime('%Y%m%d%H%M%S') + PROFILE_FOOTER_IMAGE user.save() return json_response(response_data, CODE_SUCCESS, MSG_CREATE_USER_SUCCESS) else: return simple_json_response(CODE_INVALID_REQUEST, MSG_400) except Exception as e: return save_error_log(request, e)
def list(self, request, *args, **kwargs): try: serializer = self.get_serializer(data=request.data) serializer.is_valid() token = request.data.get('token') auth_user = get_user_by_token(token) if auth_user: return json_response(super(UserViewSet, self).list(request, *args, **kwargs).data, CODE_SUCCESS, MSG_GET_USERS_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def list(self, request, *args, **kwargs): try: token = request.query_params.get('token') user = get_user_by_token(token) if user: year = datetime.now().year month = datetime.now().month response_data = super(IaerViewSet, self).list(request, *args, **kwargs).data income = 0 expenditure = 0 for iaer in self.get_queryset(): if iaer.money > 0: income += iaer.money else: expenditure -= iaer.money response_data['current_income'] = income response_data['current_expenditure'] = expenditure if int(self.request.query_params.get('top_list_size', 0)) == 0: this_month_income = 0 this_month_expenditure = 0 for iaer in self.get_queryset().filter( Q(date__year=year) & Q(date__month=month)): if iaer.money > 0: this_month_income += iaer.money else: this_month_expenditure -= iaer.money response_data['this_month_income'] = this_month_income response_data[ 'this_month_expenditure'] = this_month_expenditure this_year_income = 0 this_year_expenditure = 0 for iaer in self.get_queryset().filter(date__year=year): if iaer.money > 0: this_year_income += iaer.money else: this_year_expenditure -= iaer.money response_data['this_year_income'] = this_year_income response_data[ 'this_year_expenditure'] = this_year_expenditure return json_response(response_data, CODE_SUCCESS, MSG_GET_IAERS_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def list(self, request, *args, **kwargs): try: token = request.query_params.get('token') user = get_user_by_token(token) if user: total = 0 queryset = self.get_queryset() for rer in queryset: total += int(rer.money) response_data = super(RedEnvelopeViewSet, self).list(request, *args, **kwargs).data response_data['total'] = total return json_response(response_data, CODE_SUCCESS, MSG_GET_RED_ENVELOPES_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def retrieve(self, request, *args, **kwargs): token = request.query_params.get('token') try: auth_user = get_user_by_token(token) if auth_user: user = User.objects.get(auth_user=auth_user) if Setting.objects.filter(user_id=user.id): setting = Setting.objects.get(user_id=user.id) else: setting = Setting() setting.created = timezone.now() setting.user = user setting.save() return json_response( SettingSerializer(setting).data, CODE_SUCCESS, MSG_GET_SETTING_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)
def send_verify_code_view(request): email = request.data.get('email') try: if not email: return simple_json_response(CODE_EMPTY_EMAIL, MSG_EMPTY_EMAIL) elif not User.objects.filter(auth_user__email=email.lower()) and \ not User.objects.filter(auth_user__username=email.lower()): return simple_json_response(CODE_INVALID_EMAIL, MSG_NO_SUCH_EMAIL) user = None if User.objects.filter(auth_user__email=email.lower()): user = User.objects.get(auth_user__email=email.lower()) elif User.objects.filter(auth_user__username=email.lower()): user = User.objects.get(auth_user__username=email.lower()) verify_code = get_random_string(length=6, allowed_chars='0123456789').lower() send_email(user, email, verify_code) return simple_json_response(CODE_SUCCESS, MSG_SEND_VERIFY_CODE_SUCCESS) except Exception as e: return save_error_log(request, e)
def create(self, request, *args, **kwargs): try: money_from = request.data.get('money_from') money = request.data.get('money') remark = request.data.get('remark') token = request.data.get('token') user = get_user_by_token(token) if user: red_envelope = RedEnvelope() red_envelope.user = User.objects.get(auth_user=user) red_envelope.money = money red_envelope.money_from = money_from red_envelope.remark = remark red_envelope.created = timezone.now() red_envelope.save() response = RedEnvelopeSerializer(red_envelope).data return json_response(response, CODE_SUCCESS, MSG_ADD_RED_ENVELOPE_SUCCESS) else: return invalid_token_response() except Exception as e: return save_error_log(request, e)