Пример #1
0
def ajaxMessageAction(action):
    from models import Message

    gid = request.json['group'] if 'group' in request.json else -1
    group = Group.query.get(id=gid)

    if not group:
        group = current_user.student.group

    respDict = []

    if action == 'send':
        messageText = re.sub(' +', ' ', request.json['message'])

        if messageText:
            message = Message(datetime.now(), messageText)
            message.account = current_user
            message.group = group

            try:
                db.session.add(message)
                db.session.commit()
            except IntegrityError as ex:
                application.logger.error(ex)
                db.session.rollback()

    if action == 'read':
        msgList = []
        count = request.json['count'] if 'count' in request.json else 5

        if current_user.student and current_user.student.group or current_user.trainer:
            for msg in group.messages.order_by(
                    Message.timestamp.desc()).limit(count)[::-1]:
                msgList.append({
                    'account': {
                        'picture':
                        msg.account.picture,
                        'name':
                        msg.account.student.name
                        if msg.account.student else msg.account.trainer.name
                        if msg.account.trainer else msg.account.name
                    },
                    'message': {
                        'id':
                        msg.id,
                        'text':
                        msg.message,
                        'time':
                        msg.timestamp.strftime('%H:%M' if datetime.now().date(
                        ) == msg.timestamp.date() else '%d/%m/%Y %H:%M')
                    }
                })

        respDict.append({'chat': msgList})

    return json.dumps(respDict)