def getInfoPost(id, related, cursor): id = int(id) query = '''select threadId, userEmail, parent, datePost, message, isEdited, isDeleted, isSpam, isHighlighted, isApproved, forumShortName, likes, dislikes, likes - dislikes from Post where postId = %s limit 1 ; ''' % (id) cursor.execute(query) rowPost = cursor.fetchone() isEdited = True if rowPost[5] == 1 else False isDeleted = True if rowPost[6] == 1 else False isSpam = True if rowPost[7] == 1 else False isHighlighted = True if rowPost[8] == 1 else False isApproved = True if rowPost[9] == 1 else False userEmail = rowPost[1] threadId = rowPost[0] forumShortName = rowPost[10] d = { "date": datetime.strftime(rowPost[3], '%Y-%m-%d %H:%M:%S'), "dislikes": rowPost[12], "likes": rowPost[11], "points": rowPost[13], "forum": forumShortName, "id": id, "isEdited": isEdited, "isDeleted": isDeleted, "isSpam": isSpam, "isHighlighted": isHighlighted, "isApproved": isApproved, "message": rowPost[4], "parent": rowPost[2], "thread": threadId, "user": userEmail } if 'user' in related: from views.User import getInfoUser d.update({'user': getInfoUser(userEmail, ['followers', 'following', 'subscriptions'], cursor)}) del getInfoUser if 'forum' in related: d.update({'forum': getInfoForum(forumShortName, [], cursor)}) if 'thread' in related: d.update({'thread': getInfoThread(threadId, [], cursor)}) return d
def listThreadsForum(request): cursor = connection.cursor() #обязательные GET shortName = request.GET['forum'] #опциональные GET limit = request.GET.get('limit', None) orderDate = request.GET.get('order', 'desc') since = request.GET.get('since', None) related = request.GET.getlist('related', []) query = '''select threadId from Thread where forumShortName = '%s' ''' % (shortName) if since is not None: query += " and date >= '%s' " % (since) query += " order by date %s " % (orderDate) if limit is not None: query += " limit %s " % (limit) try: #выдаст исключение, если такого нет # getInfoForumTest(shortName, [], cursor); cursor.execute(query) rowsThread = cursor.fetchall() d = []; for row in rowsThread: from views.Thread import getInfoThread d.append(getInfoThread(row[0], related, cursor)) del getInfoThread code = 0 responseMessage = d except: code = 1 responseMessage = "Forum not found" response = { "code": code, "response": responseMessage} return JsonResponse(response)