def view_sheet(request, sheet_id, editorMode = False): """ View the sheet with sheet_id. """ editor = request.GET.get('editor', '0') embed = request.GET.get('embed', '0') if editor != '1' and embed !='1' and editorMode is False: return catchall(request, sheet_id, True) sheet_id = int(sheet_id) sheet = get_sheet(sheet_id) if "error" in sheet and sheet["error"] != "Sheet updated.": return HttpResponse(sheet["error"]) sheet["sources"] = annotate_user_links(sheet["sources"]) # Count this as a view db.sheets.update({"id": sheet_id}, {"$inc": {"views": 1}}) try: owner = User.objects.get(id=sheet["owner"]) author = owner.first_name + " " + owner.last_name except User.DoesNotExist: author = "Someone Mysterious" sheet_class = make_sheet_class_string(sheet) sheet_collections = get_user_collections_for_sheet(request.user.id, sheet_id) if sheet["owner"] == request.user.id else None displayed_collection = Collection().load({"slug": sheet["displayedCollection"]}) if sheet.get("displayedCollection", None) else None embed_flag = "embed" in request.GET likes = sheet.get("likes", []) like_count = len(likes) if request.user.is_authenticated: can_edit_flag = can_edit(request.user, sheet) can_add_flag = can_add(request.user, sheet) viewer_is_liker = request.user.id in likes else: can_edit_flag = False can_add_flag = False viewer_is_liker = False canonical_url = request.get_full_path().replace("?embed=1", "").replace("&embed=1", "") return render_template(request,'sheets.html', None, { "sheetJSON": json.dumps(sheet), "sheet": sheet, "sheet_class": sheet_class, "can_edit": can_edit_flag, "can_add": can_add_flag, "title": sheet["title"], "author": author, "is_owner": request.user.id == sheet["owner"], "sheet_collections": sheet_collections, "displayed_collection": displayed_collection, "like_count": like_count, "viewer_is_liker": viewer_is_liker, "current_url": request.get_full_path, "canonical_url": canonical_url, "assignments_from_sheet":assignments_from_sheet(sheet_id), })
def new_sheet(request): if request.COOKIES.get("new_editor", None): sheet = { 'status': 'unlisted', 'title': '', 'sources': [{ "outsideText": "", "node": 1, }], 'nextNode': 2, 'options': { 'layout': "stacked", 'boxed': 0, 'language': "bilingual", 'numbered': 0, 'assignable': 0, 'divineNames': "noSub", 'collaboration': "none", 'highlightMode': 0, 'langLayout': "heRight", 'bsd': 0, } } responseSheet = save_sheet(sheet, request.user.id) return catchall(request, str(responseSheet["id"]), True) """ View an new, empty source sheet. """ if "assignment" in request.GET: sheet_id = int(request.GET["assignment"]) query = {"owner": request.user.id or -1, "assignment_id": sheet_id} existingAssignment = db.sheets.find_one(query) or [] if "id" in existingAssignment: return view_sheet(request, str(existingAssignment["id"]), True) if "assignable" in db.sheets.find_one({"id": sheet_id})["options"]: if db.sheets.find_one({"id": sheet_id})["options"]["assignable"] == 1: return assigned_sheet(request, sheet_id) owner_groups = get_user_groups(request.user.id) query = {"owner": request.user.id or -1} hide_video = db.sheets.count_documents(query) > 2 return render( request, 'sheets.html', { "can_edit": True, "new_sheet": True, "is_owner": True, "hide_video": hide_video, "owner_groups": owner_groups, "current_url": request.get_full_path, })
def view_sheet(request, sheet_id): """ View the sheet with sheet_id. """ panel = request.GET.get('panel', '0') if panel == '1': return catchall(request, sheet_id, True) sheet = get_sheet(sheet_id) if "error" in sheet: return HttpResponse(sheet["error"]) sheet["sources"] = annotate_user_links(sheet["sources"]) # Count this as a view db.sheets.update({"id": int(sheet_id)}, {"$inc": {"views": 1}}) try: owner = User.objects.get(id=sheet["owner"]) author = owner.first_name + " " + owner.last_name owner_groups = get_user_groups(request.user.id) if sheet["owner"] == request.user.id else None except User.DoesNotExist: author = "Someone Mysterious" owner_groups = None sheet_class = make_sheet_class_string(sheet) sheet_group = Group().load({"name": sheet["group"]}) if "group" in sheet and sheet["group"] != "None" else None embed_flag = "embed" in request.GET likes = sheet.get("likes", []) like_count = len(likes) if request.user.is_authenticated: can_edit_flag = can_edit(request.user, sheet) can_add_flag = can_add(request.user, sheet) can_publish_flag = sheet_group.can_publish(request.user.id) if sheet_group else False viewer_is_liker = request.user.id in likes else: can_edit_flag = False can_add_flag = False can_publish_flag = False viewer_is_liker = False canonical_url = request.get_full_path().replace("?embed=1", "").replace("&embed=1", "") return render(request,'sheets.html', {"sheetJSON": json.dumps(sheet), "sheet": sheet, "sheet_class": sheet_class, "can_edit": can_edit_flag, "can_add": can_add_flag, "can_publish": can_publish_flag, "title": sheet["title"], "author": author, "is_owner": request.user.id == sheet["owner"], "is_public": sheet["status"] == "public", "owner_groups": owner_groups, "sheet_group": sheet_group, "like_count": like_count, "viewer_is_liker": viewer_is_liker, "current_url": request.get_full_path, "canonical_url": canonical_url, "assignments_from_sheet":assignments_from_sheet(sheet_id), })
def view_sheet(request, sheet_id): """ View the sheet with sheet_id. """ panel = request.GET.get('panel', '0') if panel == '1': return catchall(request, sheet_id, True) sheet = get_sheet(sheet_id) if "error" in sheet: return HttpResponse(sheet["error"]) sheet["sources"] = annotate_user_links(sheet["sources"]) # Count this as a view db.sheets.update({"id": int(sheet_id)}, {"$inc": {"views": 1}}) try: owner = User.objects.get(id=sheet["owner"]) author = owner.first_name + " " + owner.last_name owner_groups = get_user_groups( request.user.id) if sheet["owner"] == request.user.id else None except User.DoesNotExist: author = "Someone Mysterious" owner_groups = None sheet_class = make_sheet_class_string(sheet) sheet_group = Group().load({ "name": sheet["group"] }) if "group" in sheet and sheet["group"] != "None" else None embed_flag = "embed" in request.GET likes = sheet.get("likes", []) like_count = len(likes) if request.user.is_authenticated: can_edit_flag = can_edit(request.user, sheet) can_add_flag = can_add(request.user, sheet) can_publish_flag = sheet_group.can_publish( request.user.id) if sheet_group else False viewer_is_liker = request.user.id in likes else: can_edit_flag = False can_add_flag = False can_publish_flag = False viewer_is_liker = False canonical_url = request.get_full_path().replace("?embed=1", "").replace( "&embed=1", "") return render( request, 'sheets.html', { "sheetJSON": json.dumps(sheet), "sheet": sheet, "sheet_class": sheet_class, "can_edit": can_edit_flag, "can_add": can_add_flag, "can_publish": can_publish_flag, "title": sheet["title"], "author": author, "is_owner": request.user.id == sheet["owner"], "is_public": sheet["status"] == "public", "owner_groups": owner_groups, "sheet_group": sheet_group, "like_count": like_count, "viewer_is_liker": viewer_is_liker, "current_url": request.get_full_path, "canonical_url": canonical_url, "assignments_from_sheet": assignments_from_sheet(sheet_id), })