Esempio n. 1
0
async def broadcast(user_id, role_name, send_message, *args, **kwargs):
    session = db.Session()
    role = session.query(db.Role).get(role_name)
    if role:
        for user in role.users:
            if user.user_id != user_id:
                await send_message(user.user_id, *args, **kwargs)
Esempio n. 2
0
def has_role(user_id, role_name):
    session = db.Session()
    user = (session.query(
        db.User).filter(db.User.user_id == user_id,
                        db.User.roles.any(name=role_name)).one_or_none())

    return user
Esempio n. 3
0
def get_role(role_name: str, *, session: db.Session = None):
    session = session or db.Session()

    if not (role := session.query(db.Role).get(role_name)):
        role = db.Role(name=role_name)
        session.add(role)
        session.commit()
Esempio n. 4
0
 async def role(message: Message):
     user_id, role_name = message.get_args().split()
     session = db.Session()
     if user := session.query(db.User).get(user_id):
         auth.add_role(user, role_name, session=session)
         await message.answer(str(user))
         if (auth.has_role(user.user_id, auth.CASHIER)
                 and user.user_id != message.chat.id):
             await helpers.start(user.user_id)
Esempio n. 5
0
 async def delete(message: Message):
     user_id = message.get_args()
     session = db.Session()
     if user := session.query(db.User).get(user_id):
         session.delete(user)
         session.commit()
         await message.answer(f"deleted: {user_id}")
         await bot.obj.send_message(
             user.user_id,
             "Бувай!",
             reply_markup=kbd.remove,
         )
Esempio n. 6
0
def sign_in(contact: Contact):
    session = db.Session()

    if SignMode.enabled() or not get_role(ADMIN, session=session).users:
        user = add_user(contact, session=session)

        if SignMode.one():
            SignMode.set(SignMode.OFF)

        if user.phone_number in _admins:
            add_role(user, ADMIN, session=session)

        return user
Esempio n. 7
0
 async def users(message: Message):
     session = db.Session()
     users_repr = [str(u) for u in session.query(db.User)]
     text = "\n".join(users_repr)
     await message.answer(text)
Esempio n. 8
0
            raise ValueError(f"no user: {user_id}")

    @dispatcher.message_handler(commands=["receipt"])
    @auth.require(auth.ADMIN)
    @helpers.error_handler
    async def receipt_(message: Message):
        args = message.get_args().split()
        if len(args) > 0:
            if not (receipt_id := await receipt.search_receipt(args[0])):
                return
        else:
            return
        if len(args) == 2:
            recipient = args[1]
            if recipient.startswith("+"):
                session = db.Session()
                if (user := session.query(db.User).filter(
                        db.User.phone_number == recipient).scalar()):
                    user_id = user.user_id
                else:
                    return
            elif recipient.isnumeric():
                user_id = int(recipient)
            else:
                return
        else:
            user_id = message.chat.id

        receipt_data = await receipt.get_receipt_data(receipt_id)
        receipt_qr, receipt_url, receipt_text = receipt_data
        await helpers.send_receipt(