Example #1
0
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')
Example #2
0
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()
Example #3
0
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)