def getInfoForum(shortname, related, cursor): query = '''select forumId, userEmail, shortName, name from Forum where shortName = '%s' limit 1 ; ''' % (shortname) cursor.execute(query) rowForum = cursor.fetchone() forumId = rowForum[0] userEmail = rowForum[1] name = rowForum[3] shortname = rowForum[2] d = { "id": forumId, "user": userEmail, "name": name, "short_name": shortname } if 'user' in related: from views.User import getInfoUser d.update({'user': getInfoUser(userEmail, ['followers', 'following', 'subscriptions'], cursor)}) del getInfoUser return d
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 listUsersForum(request): cursor = connection.cursor() #обязательные GET shortName = request.GET['forum'] #опциональные GET limit = request.GET.get('limit', None) order = request.GET.get('order', 'desc') since_id = request.GET.get('since_id', None) query = '''select p.userEmail userEmail, u.name as uname, u.userId as userId from Post p join User u on p.userEmail = u.email where p.forumShortName = '%s' group by uname, userId ''' % (shortName) if since_id is not None: query += " and userId >= %s " % (since_id) query += " order by uname %s , userId %s" % (order, order) if limit is not None: query += " limit %s " % (limit) try: #выдаст исключение, если такого нет # getInfoForumTest(shortName, [], cursor); cursor.execute(query) rowsUser = cursor.fetchall() d = []; for row in rowsUser: from views.User import getInfoUser d.append(getInfoUser(row[0], ['followers', 'following', 'subscriptions'], cursor)) del getInfoUser code = 0 responseMessage = d except: code = 1 responseMessage = "Forum not found" response = { "code": code, "response": responseMessage} return JsonResponse(response)
def getInfoThread(id, related, cursor): id = int(id) query = '''select date, forumShortName, isClosed, isDeleted, message, slug, title, userEmail, likes, dislikes, points, posts from Thread where threadId = %s limit 1 ; ''' % (id) cursor.execute(query) rowThread = cursor.fetchone() isClosed = True if rowThread[2] == 1 else False isDeleted = True if rowThread[3] == 1 else False forumShortName = rowThread[1] userEmail = rowThread[7] d = { "date": datetime.strftime(rowThread[0], '%Y-%m-%d %H:%M:%S'), "forum": forumShortName, "id": id, "isClosed": isClosed, "isDeleted": isDeleted, "message": rowThread[4], "slug": rowThread[5], "title": rowThread[6], "user": userEmail, "dislikes": rowThread[9], "likes": rowThread[8], "points": rowThread[10], "posts": rowThread[11] } if 'user' in related: from views.User import getInfoUser d.update({'user': getInfoUser(userEmail, ['followers', 'following', 'subscriptions'], cursor)}) del getInfoUser if 'forum' in related: from views.Forum import getInfoForum d.update({'forum': getInfoForum(forumShortName, [], cursor)}) del getInfoForum return d