def myProfilePage(): if not session['logged_in']: return 'You are not logged in' subscriptions = db.getSubscriptions(session['username']) if subscriptions is None: return 'You have no subscriptions' s_rels, s_com_rels = [], [] s_item_ids, s_com_item_ids = [], [] for s in subscriptions: s_item_ids.append(s['item']) s_rels.extend( db.getChildRels(s['item'], { 'comment_parent': None, 'time_linked': { '$gte': s['seen'] }, })) if s['comments']: s_com_item_ids.append(s['item']) s_com_rels.extend( db.getCommentRels(s['item'], {'time_linked': { '$gte': s['comment_seen'] }})) new_rels = list( db.dbcon.relations.Relation.find({ 'parent': { '$in': s_item_ids }, 'comment_parent': None, }).sort('time_linked', -1).limit(10)) new_com_rels = list( db.dbcon.relations.Relation.find({ 'comment_parent': { '$in': s_com_item_ids } }).sort('time_linked', -1).limit(10)) items = set([db.getItem(rel.parent) for rel in new_rels + s_rels]) items.update( [db.getItem(rel.comment_parent) for rel in new_com_rels + s_com_rels]) new_dict = { 's_rels': db.prepareForClient(s_rels), 's_com_rels': db.prepareForClient(s_com_rels), 'new_rels': db.prepareForClient(new_rels), 'new_com_rels': db.prepareForClient(new_com_rels), 'items': db.prepareForClient(items) } return render_template('profile.html', nd=new_dict, tab='view-tab')
def retrieveRel(rel_id): rel_id = ObjectId(rel_id) rel = db.getrel(rel_id) if rel is None: return 'This rel does not exist' rel_dict = {'rel': rel} if request.args['parent']: rel_dict['parent'] = db.getItem(rel.parent) if request.args['child']: rel_dict['child'] = db.getItem(rel.child) #session['current_rel'] = rel_id return jsonify(db.prepareForClient(rel_dict))
def item_page_with_rels(item_id, rel_ids): rel_ids = rel_ids.split('-') rel_ids = [ObjectId(rel_id) for rel_id in rel_ids] rels = [db.getRel(rel_id, True) for rel_id in rel_ids] items = set([ObjectId(rel["child"]) for rel in rels] + [ObjectId(rel["parent"]) for rel in rels]) items = [db.getItem(item, True) for item in items] return item_page(item_id, items, rels)
def retrieveItem(item_id): item_id = ObjectId(item_id) item = db.getItem(item_id, in_json=True) if item is None: return 'This item does not exist' session['current_item'] = item_id return jsonify({'item': item})
def postComment(): username = request.form['username'] body = request.form['body'] item_id = ObjectId(request.form['item']) if db.getUser(username) is None: return 'You must have a valid user account to post' if len(request.form['body']) < 1: return if db.getItem(item_id) is None: return 'Reply error' #insert comment comment_dict = { 'body': unicode(body), 'user': unicode(username), 'item': item_id } if request.form['reply_to']: comment_dict['reply_to'] = ObjectId(request.form['reply_to']) new_comment = db.addComment(comment_dict) db.processCommentVote(new_comment._id, username, 'up') ret_dict = { "comment": db.prepareForClient([new_comment])[0] } return jsonify(ret_dict)
def viewItem(item_id): item_id = ObjectId(item_id) if db.getItem(item_id) is None: return 'This item does not exist' session['current_item'] = item_id need = {"parent_items": True, "child_items": True, "child_rels": True} item_info = db.getItemInfo(item_id, need, True) item_info['comment_rels'] = db.getCommentRels(item_id) item_info['comment_items'] = db.prepareForClient( [db.getItem(rel['child']) for rel in item_info['comment_rels']]) item_info['comment_rels'] = db.prepareForClient(item_info['comment_rels']) if session['logged_in']: db.markSeen(session['username'], item_id, True) return render_template('view.html', ii=item_info, tab='view-tab')
def discoverPage(): new_rels = list(db.dbcon.relations.Relation.find({ 'comment_parent': None }).sort('time_linked', -1).limit(10)) new_com_rels = list(db.dbcon.relations.Relation.find({ 'comment_parent': {"$ne": None} }).sort('time_linked', -1).limit(10)) items = set([db.getItem(rel.parent) for rel in new_rels]) items.update([db.getItem(rel.comment_parent) for rel in new_com_rels]) new_dict = { 'new_rels': db.prepareForClient(new_rels), 'new_com_rels': db.prepareForClient(new_com_rels), 'items': db.prepareForClient(items) } return render_template('discover.html', nd=new_dict, tab='view-tab')
def addLink(): l_item_id, parent_id, username = ObjectId(request.form['link_item']), ObjectId(request.form['parent']), request.form['username'] user, l_item, parent = db.getUser(username), db.getItem(l_item_id), db.getItem(parent_id) if user is None: return "Not a user" if l_item is None or parent is None: return "invalid ids" new_rel = db.addRel(parent._id, l_item._id, username) db.processVote(new_rel._id, request.form['username'], 'up') rel_child = db.getItem(new_rel['child']) # child_user = db.getUser(rel_child['user']) ret_dict = { "new_rel": db.prepareForClient([db.getRel(new_rel._id)])[0], "rel_child": db.prepareForClient([rel_child])[0] } return jsonify(ret_dict)
def viewItem(item_id): item_id = ObjectId(item_id) if db.getItem(item_id) is None: return 'This item does not exist' session['current_item'] = item_id need = { "parent_items": True, "child_items": True, "child_rels": True } item_info = db.getItemInfo(item_id, need, True) item_info['comment_rels'] = db.getCommentRels(item_id) item_info['comment_items'] = db.prepareForClient([db.getItem(rel['child']) for rel in item_info['comment_rels']]) item_info['comment_rels'] = db.prepareForClient(item_info['comment_rels']) if session['logged_in']: db.markSeen(session['username'], item_id, True) return render_template('view.html', ii=item_info, tab='view-tab')
def myProfilePage(): if not session['logged_in']: return 'You are not logged in' subscriptions = db.getSubscriptions(session['username']) if subscriptions is None: return 'You have no subscriptions' s_rels, s_com_rels = [], [] s_item_ids, s_com_item_ids = [], [] for s in subscriptions: s_item_ids.append(s['item']) s_rels.extend(db.getChildRels(s['item'], { 'comment_parent': None, 'time_linked': {'$gte': s['seen']}, })) if s['comments']: s_com_item_ids.append(s['item']) s_com_rels.extend(db.getCommentRels(s['item'], { 'time_linked': {'$gte': s['comment_seen']} })) new_rels = list(db.dbcon.relations.Relation.find({ 'parent': {'$in': s_item_ids}, 'comment_parent': None, }).sort('time_linked', -1).limit(10)) new_com_rels = list(db.dbcon.relations.Relation.find({ 'comment_parent': {'$in': s_com_item_ids} }).sort('time_linked', -1).limit(10)) items = set([db.getItem(rel.parent) for rel in new_rels + s_rels]) items.update([db.getItem(rel.comment_parent) for rel in new_com_rels + s_com_rels]) new_dict = { 's_rels': db.prepareForClient(s_rels), 's_com_rels': db.prepareForClient(s_com_rels), 'new_rels': db.prepareForClient(new_rels), 'new_com_rels': db.prepareForClient(new_com_rels), 'items': db.prepareForClient(items) } return render_template('profile.html', nd=new_dict, tab='view-tab')
def editItem(): item_id = ObjectId(request.form['item_id']) username = request.form['username'] if db.getItem(item_id).user != unicode(username): return "Not edited" new_item = db.editItem(item_id, request.form['body'], request.form['tldr']) ret_dict = { "item": db.prepareForClient([new_item])[0] } return jsonify(ret_dict)
def discoverPage(): new_rels = list( db.dbcon.relations.Relation.find({ 'comment_parent': None }).sort('time_linked', -1).limit(10)) new_com_rels = list( db.dbcon.relations.Relation.find({ 'comment_parent': { "$ne": None } }).sort('time_linked', -1).limit(10)) items = set([db.getItem(rel.parent) for rel in new_rels]) items.update([db.getItem(rel.comment_parent) for rel in new_com_rels]) new_dict = { 'new_rels': db.prepareForClient(new_rels), 'new_com_rels': db.prepareForClient(new_com_rels), 'items': db.prepareForClient(items) } return render_template('discover.html', nd=new_dict, tab='view-tab')
def item_page(item_id, initial_items=[], initial_rels=[]): item_id = ObjectId(item_id) if db.getItem(item_id) is None: return 'This item does not exist' session['current_item'] = item_id need = {"parent_items": True, "child_items": True, "child_rels": True} node_dict = db.getItemInfo(item_id, need, True) node_dict.update({ "initial_items": initial_items, "initial_rels": initial_rels }) # node_dict['users'][:] = [d['name'] for d in node_dict['users']] if session['logged_in']: db.markSeen(session['username'], item_id) # return render_template('page.html', nd=node_dict, tab='browse-tab') return render_template('page-bb.html', nd=node_dict, tab='browse-tab')
def item_page(item_id, initial_items=[], initial_rels=[]): item_id = ObjectId(item_id) if db.getItem(item_id) is None: return 'This item does not exist' session['current_item'] = item_id need = { "parent_items": True, "child_items": True, "child_rels": True } node_dict = db.getItemInfo(item_id, need, True) node_dict.update({ "initial_items": initial_items, "initial_rels": initial_rels }) # node_dict['users'][:] = [d['name'] for d in node_dict['users']] if session['logged_in']: db.markSeen(session['username'], item_id) # return render_template('page.html', nd=node_dict, tab='browse-tab') return render_template('page-bb.html', nd=node_dict, tab='browse-tab')
def transfer(): user_lookup = {} item_lookup = {} rel_lookup = {} global db db = connect_db() mon.init('localhost', 27017, 'conversion') dd = mon.createInitialDb() user_lookup[0] = mon.getUser(dd['admin']) lite_items = query_db('SELECT * FROM items') lite_rels = query_db('SELECT * FROM relations') lite_comments = query_db('SELECT * FROM comments') lite_users = query_db('SELECT * FROM users') lite_votes = query_db('SELECT * FROM votes') for lu in lite_users: print lu['username'] if lu['username'] == 'NKessel': user_lookup[3] = user_lookup[1] # print lu['date_registered'] dr = datetime.strptime(lu['date_registered'], '%Y-%m-%d %H:%M:%S') # print str(dr) u, error = mon.addUser(unicode(lu['username']), unicode(lu['email']), unicode(lu['password']), dr) print 'inserted users: ' + str(u) if u: user_lookup[lu['id']] = u for li in lite_items: # print 'uid lookup: ' + str(li['user_id'])+ ' -- ' + str(user_lookup[li['user_id']]) #print li['time_submitted'] ts = datetime.strptime(li['time_submitted'].split('.')[0], '%Y-%m-%d %H:%M:%S') if not li['body']: li['body'] = li['title'] li['title'] = "" i = mon.addItem({ 'body': unicode(li['body']), 'tldr': unicode(li['title']), 'user': user_lookup[li['user_id']].name, "time_submitted": ts, "upvotes": li['upvotes'], "downvotes": li['downvotes'] }) print 'inserted items: ' + str(li['id']) + ' -- ' + str(i) item_lookup[li['id']] = i for lr in lite_rels: print lr.get('time_submitted', "no time") #tl = datetime.strptime(lr['time_linked'].split('.')[0], '%Y-%m-%d %H:%M:%S') if lr['parent'] == 0: rp = mon.root._id else: rp = item_lookup[lr['parent']]._id if lr['child'] == 0: rc = mon.root._id else: rc = item_lookup[lr['child']]._id lb = user_lookup.get(lr['linked_by'], None) if lb: lb = lb.name else: lb = mon.getUser(item_lookup[lr['child']].user).name r = mon.addRel(rp, rc, lb) r.upvotes = lr['upvotes'] r.downvotes = lr['downvotes'] # r.time_linked = tl r.save() print 'inserted rels: ' + str(lr['id']) + ' -- ' + str(r) rel_lookup[lr['id']] = r for lc in lite_comments: rel = rel_lookup.get(lc['rel_id'], None) if rel is None: continue rel = mon.getRel(rel._id) if lc['head_item'] == 0: cp = mon.root._id else: cp = item_lookup[lc['head_item']]._id rel.comment_parent = cp rel.save() item = mon.getItem(rel.child) item.tags.append(u'comment') item.save() for lv in lite_votes: user = mon.getUser(user_lookup[lv['user_id']].name) rel = rel_lookup.get(lv['rel_id'], None) if rel is None: continue rel_id = rel._id if lv['vote_type'] == 'up': is_upvote = True else: is_upvote = False user.votes.append({ 'rel': rel_id, 'is_upvote': is_upvote }) user.save() db.close()
def transfer(): user_lookup = {} item_lookup = {} rel_lookup = {} global db db = connect_db() mon.init("localhost", 27017, "conversion") dd = mon.createInitialDb() user_lookup[0] = mon.getUser(dd["admin"]) lite_items = query_db("SELECT * FROM items") lite_rels = query_db("SELECT * FROM relations") lite_comments = query_db("SELECT * FROM comments") lite_users = query_db("SELECT * FROM users") lite_votes = query_db("SELECT * FROM votes") for lu in lite_users: print lu["username"] if lu["username"] == "NKessel": user_lookup[3] = user_lookup[1] # print lu['date_registered'] dr = datetime.strptime(lu["date_registered"], "%Y-%m-%d %H:%M:%S") # print str(dr) u, error = mon.addUser(unicode(lu["username"]), unicode(lu["email"]), unicode(lu["password"]), dr) print "inserted users: " + str(u) if u: user_lookup[lu["id"]] = u for li in lite_items: # print 'uid lookup: ' + str(li['user_id'])+ ' -- ' + str(user_lookup[li['user_id']]) # print li['time_submitted'] ts = datetime.strptime(li["time_submitted"].split(".")[0], "%Y-%m-%d %H:%M:%S") if not li["body"]: li["body"] = li["title"] li["title"] = "" i = mon.addItem( { "body": unicode(li["body"]), "tldr": unicode(li["title"]), "user": user_lookup[li["user_id"]].name, "time_submitted": ts, "upvotes": li["upvotes"], "downvotes": li["downvotes"], } ) print "inserted items: " + str(li["id"]) + " -- " + str(i) item_lookup[li["id"]] = i for lr in lite_rels: print lr.get("time_submitted", "no time") # tl = datetime.strptime(lr['time_linked'].split('.')[0], '%Y-%m-%d %H:%M:%S') if lr["parent"] == 0: rp = mon.root._id else: rp = item_lookup[lr["parent"]]._id if lr["child"] == 0: rc = mon.root._id else: rc = item_lookup[lr["child"]]._id lb = user_lookup.get(lr["linked_by"], None) if lb: lb = lb.name else: lb = mon.getUser(item_lookup[lr["child"]].user).name r = mon.addRel(rp, rc, lb) r.upvotes = lr["upvotes"] r.downvotes = lr["downvotes"] # r.time_linked = tl r.save() print "inserted rels: " + str(lr["id"]) + " -- " + str(r) rel_lookup[lr["id"]] = r for lc in lite_comments: rel = rel_lookup.get(lc["rel_id"], None) if rel is None: continue rel = mon.getRel(rel._id) if lc["head_item"] == 0: cp = mon.root._id else: cp = item_lookup[lc["head_item"]]._id rel.comment_parent = cp rel.save() item = mon.getItem(rel.child) item.tags.append(u"comment") item.save() for lv in lite_votes: user = mon.getUser(user_lookup[lv["user_id"]].name) rel = rel_lookup.get(lv["rel_id"], None) if rel is None: continue rel_id = rel._id if lv["vote_type"] == "up": is_upvote = True else: is_upvote = False user.votes.append({"rel": rel_id, "is_upvote": is_upvote}) user.save() db.close()