def scriptcontent(): resource_id = request.form['resource_id'] if resource_id == 'Demo': latest_version = ScriptData.get_latest_version('Demo') lines = [["Fade in:", 1], ["INT. ", 0]] if latest_version is not None: lines = json.loads(latest_version.data) return jsonify(title='Duck Soup', lines=lines, notes=[], sharedwith=[], contacts=[], autosave='true') user_email = get_current_user_email_with_default() permission = Screenplay.get_users_permission(resource_id, user_email) if permission not in ['owner', 'collab']: return 'not found' title = Screenplay.get_title(resource_id) latest_version = ScriptData.get_latest_version(resource_id) sharedwith = Screenplay.get_all_collaborators(resource_id) user = current_user.name unread_notes = UnreadNote.query. \ filter_by(resource_id=resource_id, user=user).all() unread_msg_ids = set([n.msg_id for n in unread_notes]) note_rows = Note.get_by_resource_id(resource_id) notes = [note.to_dict(unread_msg_ids) for note in note_rows] return jsonify(title=title, lines=json.loads(latest_version.data), lastSavedVersionNumber=latest_version.version, notes=notes, sharedwith=sharedwith, autosave='true')
def new_note_notification(resource_id, from_user, thread_id, msg_id): for peer in Screenplay.get_all_collaborators(resource_id): if peer.lower() == from_user.lower(): continue unread = UnreadNote(resource_id=resource_id, user=peer, thread_id=thread_id, msg_id=msg_id) db.session.add(unread) db.session.commit()
def list(): user = current_user.email # count all unread notes by resource_id unread_notes = {} for unread_note in UnreadNote.query.filter_by(user=user).all(): r_id = unread_note.resource_id if r_id not in unread_notes: unread_notes[r_id] = 0 unread_notes[r_id] += 1 share_notifications = ShareNotify.get_by_email(user) unopened_screenplays = set( [n.resource_id for n in share_notifications if not n.opened]) shared = [] read_only = current_user.read_only_screenplays for screenplay in sorted(read_only, key=lambda obj: obj.last_updated, reverse=True): if screenplay.is_trashed or screenplay.is_hard_deleted: continue resource_id = screenplay.resource_id obj = { 'resource_id': resource_id, 'title': screenplay.title, 'last_updated': format_time(screenplay.last_updated), 'owner': screenplay.owner.email, 'new_notes': unread_notes.get(resource_id, 0), 'unopened': resource_id in unopened_screenplays } shared.append(obj) owned = [] screenplays = current_user.screenplays for screenplay in sorted(screenplays, key=lambda obj: obj.last_updated, reverse=True): if screenplay.is_hard_deleted: continue resource_id = screenplay.resource_id obj = { 'resource_id': resource_id, 'title': screenplay.title, 'last_updated': format_time(screenplay.last_updated), 'is_trashed': screenplay.is_trashed, 'shared_with': Screenplay.get_all_collaborators(resource_id), 'new_notes': unread_notes.get(resource_id, 0), 'folder': screenplay.get_folder() } owned.append(obj) folders = [[f.name, str(f.id)] for f in current_user.folders] output = [owned, shared, folders] return json.dumps(output)
def list(): user = current_user.email # count all unread notes by resource_id unread_notes = {} for unread_note in UnreadNote.query.filter_by(user=user).all(): r_id = unread_note.resource_id if r_id not in unread_notes: unread_notes[r_id] = 0 unread_notes[r_id] += 1 share_notifications = ShareNotify.get_by_email(user) unopened_screenplays = set([n.resource_id for n in share_notifications if not n.opened]) shared = [] read_only = current_user.read_only_screenplays for screenplay in sorted(read_only, key=lambda obj: obj.last_updated, reverse=True): if screenplay.is_trashed or screenplay.is_hard_deleted: continue resource_id = screenplay.resource_id obj = { 'resource_id': resource_id, 'title': screenplay.title, 'last_updated': format_time(screenplay.last_updated), 'owner': screenplay.owner.email, 'new_notes': unread_notes.get(resource_id, 0), 'unopened': resource_id in unopened_screenplays } shared.append(obj) owned = [] screenplays = current_user.screenplays for screenplay in sorted(screenplays, key=lambda obj: obj.last_updated, reverse=True): if screenplay.is_hard_deleted: continue resource_id = screenplay.resource_id obj = { 'resource_id': resource_id, 'title': screenplay.title, 'last_updated': format_time(screenplay.last_updated), 'is_trashed': screenplay.is_trashed, 'shared_with': Screenplay.get_all_collaborators(resource_id), 'new_notes': unread_notes.get(resource_id, 0), 'folder': screenplay.get_folder() } owned.append(obj) folders = [[f.name, str(f.id)] for f in current_user.folders] output = [owned, shared, folders] return json.dumps(output)