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)