Advertisement
Guest User

Untitled

a guest
May 21st, 2018
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.46 KB | None | 0 0
  1. from flask import current_app, request
  2. from flask_restful import Resource, abort
  3. from flask_restful.reqparse import RequestParser
  4. from werkzeug.exceptions import BadRequest
  5.  
  6. from hasoffers.core.model import Session, Order
  7. from hasoffers.core.util.helpers.google_services import recaptcha_confirm
  8.  
  9.  
  10. def recaptcha_type(value):
  11.     if not recaptcha_confirm(value, request.remote_addr):
  12.         raise ValueError('invalid captcha')
  13.     return value
  14.  
  15.  
  16. class GDPRAbuseResource(Resource):
  17.     get_parser = RequestParser()
  18.     get_parser.add_argument('name', type=unicode)
  19.     get_parser.add_argument('phone', type=unicode)
  20.     get_parser.add_argument('email', type=unicode)
  21.     # get_parser.add_argument('g-recaptcha-response', type=recaptcha_type, required=True)
  22.  
  23.     def get(self):
  24.         try:
  25.             query = self.get_query()
  26.             user = query.with_entities(Order.id, Order.name, Order.email, Order.phone,Order.ts_spawn).first()
  27.             if user:
  28.                 return {
  29.                     "data": {
  30.                         "name": user._name,
  31.                         "phone": user._phone,
  32.                         "email": user._email,
  33.                         "date": user.ts_spawn,
  34.                     }
  35.                 }
  36.             else:
  37.                 raise BadRequest('User with such params does not exist.')
  38.         except BadRequest as e:
  39.             Session.rollback()
  40.             raise abort(400, message=e.description)
  41.         except Exception as e:
  42.             current_app.structlogger.exception(e)
  43.             Session.rollback()
  44.             raise e
  45.  
  46.     def delete(self):
  47.         query = self. get_query()
  48.         query.update({Order.flags: Order.flags.op('|')(Order.Flags.deleted_by_user)},
  49.                      synchronize_session=False)
  50.         try:
  51.             Session.commit()
  52.         except Exception as e:
  53.             err_msg = 'Error while trying to delete user from db'
  54.             logger.exception(err_msg)
  55.             Session.rollback()
  56.             raise BadRequest(err_msg)
  57.  
  58.     def get_query(self):
  59.         args = self.get_parser.parse_args()
  60.  
  61.         if not args.name or not (args.email or args.phone):
  62.             raise BadRequest('One of required field is empty')
  63.         query = Order.query.filter(Order.name == args.name)
  64.         if args.phone:
  65.             query = query.filter(Order.phone == args.phone)
  66.         if args.email:
  67.             query = query.filter(Order.email == args.email)
  68.         return query
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement