Example #1
0
def work():
    sql_execute(
        '''ALTER TABLE "user" ALTER COLUMN number SET DEFAULT nextval('user_count_seq');'''
    )
    sql_execute(
        'ALTER TABLE "user" ADD phone_verified boolean DEFAULT FALSE NULL;')
    sql_execute(
        'ALTER TABLE "user" ADD change_nickname_chance int DEFAULT 0 NULL;')

    sql_execute('ALTER TABLE "user" ALTER COLUMN email DROP NOT NULL;')
    sql_execute('ALTER TABLE "user" ALTER COLUMN email SET DEFAULT NULL;')

    sql_execute('ALTER TABLE "user" ALTER COLUMN phone DROP NOT NULL;')
    sql_execute('ALTER TABLE "user" ALTER COLUMN phone SET DEFAULT null;')
    sql_execute('CREATE UNIQUE INDEX user_phone ON "user" (phone);')
    sql_execute('ALTER TABLE "user" ALTER COLUMN nickname DROP NOT NULL;')

    sql_execute('ALTER TABLE "user" RENAME COLUMN reputation TO repute;')
    sql_execute(
        'ALTER TABLE "user" ADD is_new_user BOOLEAN DEFAULT TRUE  NOT NULL;')

    # 注册的激活机制改了,变通一下吧
    for i in UserModel.select().where(UserModel.group == USER_GROUP.INACTIVE):
        i.group = USER_GROUP.NORMAL
        i.save()

    # 老用户全部设置为非新用户
    for i in UserModel.select().where(UserModel.is_new_user == False):
        i.is_new_user = True
        i.save()
Example #2
0
    def get_user_info(user_id: int):
        response = HttpUtils.make_get_request(
            "{}/{}".format(USER_MICROSERVICE_URL, user_id)
        )
        if response is None:
            return HttpUtils.error_message(500, "Can't retrieve info about yourself")

        user = UserModel()
        user.fill_from_json(response)
        return user
Example #3
0
def test_db():
    main_dir = os.path.split(os.path.abspath(__file__))[0]
    db_engine = sa.create_engine(f'sqlite:///{os.path.join(main_dir, "data/adarith.db?check_same_hread=False")}', echo=True)
    Base.metadata.create_all(db_engine)
    db_session = sessionmaker(bind=db_engine)
    db_session = db_session()
    
    UserModel.init_user(db_session)
    SettingModel.init_setting(db_session)
    QuestionModel.init_question(db_session)
Example #4
0
 def __init__(self):
     """
         initialize the
         loads imported functions into self parameters
     """
     self.view = CLIView()
     self.cli_model = CLIModel('model/cli_account_model.csv')
     self.accounts = AccountModel()
     self.user_model = UserModel('model/user_model.csv')
     self.transaction_model = TransactionModel()
     self.state = 0
     self.uid = ''
     self.account_number = ''
     self.account_type = ''
Example #5
0
    def update_password(self):
        try:
            um = UserModel(self.ansible_json)
        except Exception as error:
            gen_log.error(error.args)
            raise Exception('Args Wrong:%s' % error.args)
        else:
            play_tasks_list = list()
            play_tasks_list.append(um.change_password())

            try:
                result = yield self.run(play_tasks_list)
            except Exception as ex:
                raise ex
            else:
                raise Return(result)
Example #6
0
    async def qn_callback(self):
        """
        七牛回调
        :return:
        """
        from lib import qn
        ua = self.headers.get('User-Agent', None)
        if not (ua and ua.startswith('qiniu-callback')):
            return self.finish(RETCODE.FAILED)

        auth = self.headers.get('Authorization', None)
        if auth:
            content = str(await self._request.content.read(), 'utf-8')
            if qn.verify_callback(auth, str(self._request.url), content):
                # 鉴权成功,确认为七牛服务器回调
                info = json.loads(content)
                uid = binhex.to_bin(info['user_id'])
                # 说明一下,这个哈希值不是base64 hex等编码,具体比较奇怪看了就知道了
                # 总之因此直接使用了TextField来存放
                key = info['key']
                UploadModel.new(uid, key, info['size'], info['ext'],
                                info['type_name'], info['image_info'])
                if info['type_name'] == 'avatar':
                    # 更换用户头像
                    u = UserModel.get_by_pk(uid)
                    if u:
                        u.avatar = key
                        u.save()
                return self.finish(RETCODE.SUCCESS, key)

        self.finish(RETCODE.FAILED)
Example #7
0
File: user.py Project: yisan/Icarus
 async def on_update(cls,
                     info: QueryInfo,
                     values: 'ValuesToWrite',
                     when_before_update: List[Callable[[IDList],
                                                       Awaitable]],
                     when_complete: List[Callable[[], Awaitable]],
                     perm: PermInfo = None):
     if 'password' in values:
         ret = UserModel.gen_password_and_salt(values['password'])
         values.update(ret)
Example #8
0
File: user.py Project: yisan/Icarus
    async def signup_confirm_by_email(self):
        """ 确认并创建账户 """
        vpost: SignupConfirmByEmailDataModel = self._.validated_post

        password = await UserModel.check_reg_code_by_email(vpost.email, vpost.code)
        if not password:
            return self.finish(RETCODE.FAILED, '验证码不正确')

        u = UserModel.new(None, password, {'email': vpost.email}, auto_nickname=True)
        await self.signup_cleanup(u)
Example #9
0
    def post(self):
        user = UserModel()
        user_json = json_decode(self.request.body)

        user.user_name = user_json['user_name']
        user.name = user_json['user_name_cn']
        user.user_password = user_json['user_password']
        user.email = user_json['email']
        user.mobile = user_json['mobile']
        user.join_date = user_json['date']

        result = yield user.add_user()

        if result == 1:
            self.write(self.return_json(0, '已注册'))
        elif result == -1:
            self.write(self.return_json(-1, '用户名已存在'))
Example #10
0
File: user.py Project: yisan/Icarus
    async def signup_by_direct(self):
        if self.current_user:
            return self.finish(RETCODE.PERMISSION_DENIED)  # 已登录用户凑什么热闹

        vpost: SignupDirectDataModel = self._.validated_post
        extra_values = {
            'email': vpost.email,
            'ip_registered': await get_fuzz_ip(self)
        }

        u = UserModel.new(vpost.nickname, vpost.password, extra_values=extra_values, is_for_tests=False, auto_nickname=False)
        await self.signup_cleanup(u)
Example #11
0
def work():
    try:
        db.execute_sql(
            'ALTER TABLE public.comment ADD reply_to_cmt_id BYTEA NULL;')
    except:
        db.rollback()

    for i in UserModel.select().execute():
        try:
            UserNotifRecord.create(id=i.id, update_time=int(time.time()))
        except peewee.IntegrityError:
            db.rollback()
Example #12
0
File: user.py Project: yisan/Icarus
    async def change_password(self):
        if self.current_user:
            vpost: ChangePasswordDataModel = self._.validated_post

            u: UserModel = self.current_user
            if UserModel.auth_by_mail(u.email, vpost.old_password):
                u.set_password(vpost.password)
                k = u.refresh_key()
                self.finish(RETCODE.SUCCESS, k['key'])
            else:
                self.finish(RETCODE.FAILED, {'old_password': ['旧密码不正确']})
        else:
            self.finish(RETCODE.PERMISSION_DENIED)
Example #13
0
def es_update_topic(id):
    post: TopicModel = TopicModel.get_by_id(id)
    if not post: return
    u: UserModel = UserModel.get_by_id(post.user_id)
    if not u: return

    body = get_post_base_body(post)
    body.update({
        'user_nickname': u.nickname,
        'content': post.content,
        'brief': post.content[:100]
    })
    es.index(index=INDEX_NAME, doc_type="doc", id=to_hex(post.id), body=body)
Example #14
0
def signup():
    """회원가입"""
    # flask request 값 가져오기
    username = request.form["username"]
    password = request.form["password"]
    name = request.form["name"]
    email = request.form["email"]

    # sqlalchemy를 이용하여 db에 사용자 저장하기
    user = UserModel(username, password, name, email)
    session.add(user)
    session.commit()
    
    return "SUCCESS"
Example #15
0
    def post(self):
        attrib = reqparse.RequestParser()
        attrib.add_argument('username', type=str, required=True)
        attrib.add_argument('password', type=str, required=True)

        data = attrib.parse_args()

        user = UserModel.find_user_by_username(data['username'])

        if (user):
            res = user.verify_password(data['password'], user.password)
            if (res):
                access_token = create_access_token(identity=user.user_id)
                return {"token": access_token}, 200
            return {"message": "Username or Password is incorrect"}, 401
Example #16
0
def es_update_wiki(id):
    post: WikiArticleModel = WikiArticleModel.get_by_id(id)
    if not post: return
    if post.flag: return
    u: UserModel = UserModel.get_by_id(post.user_id)
    if not u: return

    body = get_post_base_body(post)
    body.update({
        'user_nickname': u.nickname,
        'content': post.content,
        'ref': post.ref,
        'brief': post.content[:100]
    })
    es.index(index=INDEX_NAME, doc_type="doc", id=to_hex(post.id), body=body)
Example #17
0
def es_update_comment(id):
    post: CommentModel = CommentModel.get_by_id(id)
    if not post: return
    u: UserModel = UserModel.get_by_id(post.user_id)
    if not u: return

    p = POST_TYPES.get_post(post.related_type, post.related_id)

    body = get_post_base_body(post)
    body.update({
        'user_nickname': u.nickname,
        'content': post.content,
        'brief': post.content[:100],
        'related_title': p.get_title() if p else None,
        'related_type': post.related_type,
        'related_id': to_hex(post.related_id)
    })
    es.index(index=INDEX_NAME, doc_type="doc", id=to_hex(post.id), body=body)
Example #18
0
def work():
    sql_execute(
        'ALTER TABLE "topic" ADD COLUMN "update_time" BIGINT NULL DEFAULT NULL ;'
    )
    sql_execute(
        'ALTER TABLE "user" ADD COLUMN "ip_registered" inet NULL DEFAULT NULL;'
    )
    sql_execute('drop table "notif";')
    sql_execute('drop table "mention";')
    sql_execute('drop table "user_notif_record";')

    db.create_tables([UserNotifLastInfo], safe=True)
    for i in UserModel.select().execute():
        try:
            UserNotifLastInfo.create(id=i.id, update_time=int(time.time()))
        except peewee.IntegrityError as e:
            print(e)
            db.rollback()
Example #19
0
def signup():
    """회원가입"""
    # flask request 값 가져오기
    username = request.json["username"]
    password = request.json["password"]
    name = request.json["name"]
    email = request.json["email"]

    user = session.query(UserModel).filter(UserModel.username == username).one_or_none()
    if user is not None:
        return Response("이미 존재하는 username입니다.", status=400)

    # sqlalchemy를 이용하여 db에 사용자 저장하기
    user = UserModel(username, password, name, email)
    session.add(user)
    session.commit()
    
    return Response("SUCCESS", status=201)
Example #20
0
File: user.py Project: yisan/Icarus
    async def validate_password_reset(self):
        """
        忘记密码后,进入重设流程时,通过此接口提交校验码和新密码
        :return:
        """
        vpost: ValidatePasswordResetPostDataModel = self._.validated_post

        user = await UserModel.check_reset_key(vpost.uid, vpost.code)
        if user:
            info = UserModel.gen_password_and_salt(vpost.password)
            user.password = info['password']
            user.salt = info['salt']
            user.reset_key = None
            user.save()

            UserToken.clear_by_user_id(user.id)
            t: UserToken = await self.setup_user_token(user.id)
            self.finish(RETCODE.SUCCESS, {'id': user.id, 'nickname': user.nickname, 'access_token': t.get_token()})
        else:
            self.finish(RETCODE.FAILED)
Example #21
0
    def create_user(self, req):
        try:
            user_resp = UserModel(**req).save()
            return json.dumps({'id': str(user_resp.id)})

        except NotUniqueError as notUniqueErr:
            logger.exception('******** Erro ao criar um usuário: ' + str(req))
            logger.exception('Trace: ' + str(notUniqueErr) + '\n')
            return json.dumps(errors['EmailAlreadyExistsError'])
        except FieldDoesNotExist as notExistErr:
            logger.exception('******** Erro ao criar um usuário: ' + str(req))
            logger.exception('Trace: ' + str(notExistErr) + '\n')
            return json.dumps(errors['FieldDoesNotExist'])
        except SchemaValidationError as schemaVal:
            logger.exception('******** Erro ao criar um usuário: ' + str(req))
            logger.exception('Trace: ' + str(schemaVal) + '\n')
            return json.dumps(errors['SchemaValidationError'])
        except Exception as genericErr:
            logger.exception('******** Erro ao criar um usuário: ' + str(req))
            logger.exception('Trace: ' + str(genericErr) + '\n')
            return json.dumps(errors['InternalServerError'])
Example #22
0
File: user.py Project: yisan/Icarus
    async def request_password_reset(self):
        """
        申请重置密码 / 忘记密码
        :return:
        """
        vpost: RequestResetPasswordDataModel = self._.validated_post

        try:
            user: UserModel = UserModel.get(UserModel.nickname == vpost.nickname, UserModel.email == vpost.email)
        except UserModel.DoesNotExist:
            user = None

        if user:
            if await user.can_request_reset_password():
                key = user.gen_reset_key()
                user.reset_key = key
                user.save()
                await mail.send_password_reset(user)
                return self.finish(RETCODE.SUCCESS, {'id': user.id, 'nickname': user.nickname})

        self.finish(RETCODE.FAILED)
Example #23
0
    def post(self):
        user = UserModel()
        user_json = json_decode(self.request.body)
        user.user_name = user_json['user_name']
        user.user_password = user_json['user_password']

        user_exist = yield user.get_id_by_name()
        if user_exist == 0:
            self.write(self.return_json(-1, '用户名不存在'))
            return

        eq_password = yield user.get_password()
        if eq(eq_password, user.user_password):
            user_name = self.request.headers['User-Name']
            session_id = self.create_signed_value('user-key', user_name)
            session = SessionUtil(session_id,
                                  self.application.async_session_pool)
            yield session.set_session()
            self.set_secure_cookie('user-key', user_name, expires_days=1)
            self.write(self.return_json(0, 'login'))
        else:
            self.write(self.return_json(1, '用户名或者密码错误'))
Example #24
0
def createdb():
    db.create_all()
    admin = {"username": "******", "password": "******"}
    user = UserModel(**admin)
    user.save_user()
Example #25
0
 def get_current_user(self):
     email = self.get_argument("email", "")
     token = self.get_argument("token", "")
     user = UserModel.get_current_user(email, token)
     self.user = user
     return bool(self.user)
Example #26
0
from model.state_model import StateModel
from model.user_model import UserModel
from model.transaction_model import TransactionModel
from model.account_model import AccountModel

from controller.button_controller import ButtonController
from controller.login_controller import LoginController
from controller.transaction_controller import TransactionController

from constants import *

if __name__ == "__main__":
    root = Tk()
    atm_View = atm_view(root)

    state_model = StateModel()
    account_model = AccountModel()
    trans_model = TransactionModel()
    usr_db = UserModel(USER_DB_FILE)

    atm_btn_controller = ButtonController(atm_View, state_model)
    atm_login_ctrl = LoginController(atm_View, state_model, usr_db)
    atm_trans_ctrl = TransactionController(atm_View, state_model, account_model, trans_model)
    
    state_model.state = "Card"

    cwd = os.getcwd()
    print(cwd)
    mainloop()
Example #27
0
    async def get_user_data(self):
        code = self.params
        print(code)
        code = code['code']
        if code == 'undefined':
            self.finish(RETCODE.FAILED)
            return
        otoken, _ = await self.github.get_access_token(code)
        github = GithubClient(
            client_id=config.CLIENT_ID,
            client_secret=config.CLIENT_SECRET,
            access_token=otoken,
        )
        response = await github.request('GET', 'user')
        # response = json.loads(response)
        if response['id']:
            try:
                account = UserOAuth.get(UserOAuth.login_id == response['id'],
                                        UserOAuth.platform == 'github')
            except UserOAuth.DoesNotExist:
                account = None

            if account:
                if account.user_id:  # 返回用户已有信息
                    u = UserModel.get_by_pk(account.user_id)
                    if u:
                        expires = 30
                        u.refresh_key()
                        self.setup_user_key(u.key, expires)
                        self.finish(
                            RETCODE.SUCCESS, {
                                'oauthcode': 0,
                                'user_id': account.user_id,
                                'state': account.state,
                                'access_token': u.key
                            })
                else:
                    self.finish(
                        RETCODE.SUCCESS, {
                            'oauthcode': 1,
                            'state': account.state,
                            'oauth_id': account.id,
                            'login_id': account.login_id,
                            'platform': account.platform
                        })
            else:
                ins = [{
                    'login_id': response['id'],
                    'time': time.time(),
                    'platform': 'github',
                    'state': POST_STATE.APPLY
                }]
                if not isinstance(config.LONG_ID_GENERATOR,
                                  config.SQLSerialGenerator):
                    ins[0]['id'] = config.LONG_ID_GENERATOR().to_bin()

                UserOAuth.insert_many(ins).execute()
                self.finish(
                    RETCODE.SUCCESS, {
                        'oauthcode': 1,
                        'oauth_id': ins[0]['id'],
                        'state': ins[0]['state'],
                        'login_id': ins[0]['login_id'],
                        'platform': ins[0]['platform']
                    })
        else:
            self.finish(RETCODE.NOT_FOUND)
Example #28
0
 def get_user_by_token(self: Union['BaseUserViewMixin', 'BaseView'],
                       token) -> Type[BaseUser]:
     t = UserToken.get_by_token(token)
     if t: return UserModel.get_by_pk(t.user_id)
Example #29
0
 def post(self):
     email = self.get_argument("email", None)
     password = self.get_argument("password", None)
     result = UserModel.sign_in(email, password)
     self.write(result)
Example #30
0
def send_possible_covid_contact():
    """
    This is the unique method to send the possible covid19 contacts email.
    :return: the flask response that looks like {"result": "OK"} with status code 200

    {
            "friends": ["[email protected]],
            "contacts": [{
                                    "email": user.email,
                                    "name": user.firstname,
                                    "restaurant_name": restaurant.name,
                                    "date": start,
                                }],
            "past_restaurants": [{
                            "email": restaurant["owner_email"],
                            "name": restaurant["name"],
                            "date": start,
                        }],
            "reservation_restaurants": [{
                        "email": restaurant["owner_email"],
                        "name": restaurant["name"],
                        "date": date,
                        "customer_email": customer_email,
                    }],
        }
    """
    json_request = request.get_json()
    current_app.logger.debug("Request with body\n{}".format(json_request))

    json_friends = json_request["friends"]
    current_app.logger.debug("List of friend is: {}".format(json_friends))
    for json_friend in json_friends:
        DispatcherMessage.send_message(
            EMAIL_TO_FRIEND,
            [
                json_friend,
                "",
                "",
            ],
        )

    # A message to the friends, it take the following paramiters
    # to_email, date_possible_contact, restaurant_name
    json_users = json_request["contacts"]
    contacts = []
    for json_user in json_users:
        user_positive = UserModel()
        user_positive.fill_from_json(json_user)
        contacts.append(user_positive)

    # A message to the restaurants booking
    # to_email, to_name, email_user, restaurant_name
    json_restaurant = json_request["past_restaurants"]
    restaurants = []
    for json_rest in json_restaurant:
        restaurant = PastRestaurantsModel()
        restaurant.fill_from_json(json_rest)
        restaurants.append(restaurant)
        DispatcherMessage.send_message(
            NEW_POSITIVE_WAS_IN_RESTAURANT,
            [
                restaurant.owner_email,
                restaurant.owner_email,
                str(restaurant.date_booking),
                restaurant.name,
            ],
        )

    json_restaurant = json_request["reservation_restaurants"]
    restaurants = []
    for json_rest in json_restaurant:
        restaurant = FutureRestaurantsModel()
        restaurant.fill_from_json(json_rest)
        restaurants.append(restaurant)
        DispatcherMessage.send_message(
            NEW_COVID_TO_RESTAURANT_BOOKING,
            [
                restaurant.owner_email,
                restaurant.owner_email,
                str(restaurant.date_booking),
                restaurant.name,
            ],
        )

    return {"result": "OK"}, 200
Example #31
0
def nickname_exists_check(name):
    if list(UserModel.select().where(UserModel.nickname == name)):
        raise ValidationError('此昵称已被占用')
    return True
Example #32
0
def email_exists_check(email):
    if list(UserModel.select().where(UserModel.email == email)):
        raise ValidationError('此邮箱已注册')
    return True