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 change_folder():
    resource_ids = request.json.get('resource_id', None)
    folder_id = request.json.get('folder_id', None)
    if resource_ids is None or folder_id is None:
        return Response('0', mimetype='text/plain')
    user = current_user.email
    for resource_id in resource_ids.split(','):
        if Screenplay.get_users_permission(resource_id, user) != 'owner':
            continue
        Screenplay.set_folder(resource_id, folder_id)
    return Response('1', mimetype='text/plain')
def change_folder():
    resource_ids = request.json.get('resource_id', None)
    folder_id = request.json.get('folder_id', None)
    if resource_ids is None or folder_id is None:
        return Response('0', mimetype='text/plain')
    user = current_user.email
    for resource_id in resource_ids.split(','):
        if Screenplay.get_users_permission(resource_id, user) != 'owner':
            continue
        Screenplay.set_folder(resource_id, folder_id)
    return Response('1', mimetype='text/plain')
Example #4
0
 def decorated_function(*args, **kwargs):
     from flask_models import Screenplay
     resource_id = get_resource_id_from_request()
     user = current_user.email
     permission = Screenplay.get_users_permission(resource_id, user)
     allowable_permissions = ['owner', 'ownerDeleted']
     if allow_collab:
         allowable_permissions.append('collab')
     if permission is None or permission not in allowable_permissions \
        or resource_id is None:
         return abort(403)
     return func(*args, **kwargs)
Example #5
0
 def decorated_function(*args, **kwargs):
     from flask_models import Screenplay
     resource_id = get_resource_id_from_request()
     user = current_user.email
     permission = Screenplay.get_users_permission(resource_id, user)
     allowable_permissions = ['owner', 'ownerDeleted']
     if allow_collab:
         allowable_permissions.append('collab')
     if permission is None or permission not in allowable_permissions \
        or resource_id is None:
         return abort(403)
     return func(*args, **kwargs)
def titlepage_save():
    user_email = get_current_user_email_with_default()
    resource_id = request.form['resource_id']
    permission = Screenplay.get_users_permission(resource_id, user_email)
    if permission != 'owner':
        return redirect(url_for('scriptlist'))

    obj = TitlePageData.get_or_create(resource_id)
    fields = [ 'title', 'written_by', 'contact' ]
    for field in fields:
        if field in request.form:
            setattr(obj, field, request.form[field][:64*12])
    db.session.commit()
    return Response('1', mimetype='text/plain')
def titlepage():
    resource_id = request.args.get('resource_id')
    if not current_user.is_authenticated() and resource_id != 'Demo':
        return redirect(url_for('welcome'))

    user_email = get_current_user_email_with_default()

    permission = Screenplay.get_users_permission(resource_id, user_email)
    if permission != 'owner' and resource_id != 'Demo':
        return redirect(url_for('scriptlist'))

    fields = TitlePageData.get_fields_by_resource_id(resource_id)
    screenplay_title = Screenplay.get_title(resource_id)
    return render_template('titlepage.html', user=user_email,
                           screenplay_title=screenplay_title, **fields)
def export_screenplay():
    user = current_user.name
    resource_id = request.args.get('resource_id')
    export_format = request.args.get('export_format')
    title_page = request.args.get('title_page', '0')
    if resource_id == 'Demo':
        return
    permission = Screenplay.get_users_permission(resource_id, user)
    if permission not in ['owner', 'collab']:
        return

    include_title_page = title_page == '1'
    export_file = Screenplay.export_to_file(resource_id, export_format, include_title_page)
    _file, title, content_type = export_file
    response = make_response(_file.getvalue())
    response.headers['Content-Type'] = content_type
    response.headers['Content-Disposition'] = \
        'attachment; filename="{}.{}"'.format(title, export_format)
    return response
Example #9
0
def export_screenplay():
    user = current_user.name
    resource_id = request.args.get('resource_id')
    export_format = request.args.get('export_format')
    title_page = request.args.get('title_page', '0')
    if resource_id == 'Demo':
        return
    permission = Screenplay.get_users_permission(resource_id, user)
    if permission not in ['owner', 'collab']:
        return

    include_title_page = title_page == '1'
    export_file = Screenplay.export_to_file(resource_id, export_format,
                                            include_title_page)
    _file, title, content_type = export_file
    response = make_response(_file.getvalue())
    response.headers['Content-Type'] = content_type
    response.headers['Content-Disposition'] = \
        'attachment; filename="{}.{}"'.format(title, export_format)
    return response
Example #10
0
def save_screenplay():
    resource_id = request.form['resource_id']
    if resource_id == 'Demo':
        return Response('demo', mimetype='text/plain')

    failed = Response('0', mimetype='text/plain')

    user_email = current_user.name
    permission = Screenplay.get_users_permission(resource_id, user_email)
    if permission != 'owner':
        return failed

    latest_version_number = Screenplay.get_latest_version_number(resource_id)
    new_version_number = latest_version_number + 1

    expected_version_number = request.form.get('expected_version_number', None)
    if expected_version_number is not None:
        expected_version_number = int(expected_version_number)
        if Screenplay.version_exists(resource_id, expected_version_number):
            return failed
        if expected_version_number > (latest_version_number + 5):
            return failed
        new_version_number = expected_version_number

    data = request.form['data']
    # set some limit on how much data can be saved
    if len(data) > 800 * 1000:
        return failed
    autosave  = (int(request.form['autosave']) == 1)
    now = datetime.utcnow()
    new_save = ScriptData(resource_id=resource_id,
                          data=data,
                          version=new_version_number,
                          timestamp=now,
                          export='[[],[]]',
                          tag='',
                          autosave=autosave)
    db.session.add(new_save)
    Screenplay.set_last_updated(resource_id, now)
    db.session.commit()
    return jsonify(success=True, versionSaved=new_version_number)
Example #11
0
def editor():
    resource_id = request.args.get('resource_id')
    if not current_user.is_authenticated() and resource_id != 'Demo':
        return redirect(url_for('welcome'))

    user_email = get_current_user_email_with_default()

    permission = Screenplay.get_users_permission(resource_id, user_email)
    if permission is None and resource_id != 'Demo':
        return redirect(url_for('scriptlist'))

    notification = ShareNotify.query. \
                       filter_by(resource_id=resource_id, user=user_email).first()
    if notification:
        notification.opened = True
        notification.timeopened = datetime.utcnow()
        db.session.commit()

    EOV = 'editor' if permission == 'owner' else 'viewer'
    sign_out = '/user/sign-out'
    return render_template('editor.html', user=user_email, mode="PRO",
                           resource_id=resource_id, EOV=EOV, sign_out=sign_out)