Example #1
0
def share_screenplay():
    resource_id = request.form['resource_id']
    collaborators = request.form['collaborators'].split(',')
    new_collaborators = Screenplay.add_access(resource_id, collaborators)

    if new_collaborators and request.form.get('sendEmail', '') == 'y':
        user = current_user.email
        subject = 'Rawscripts.com: ' + user + " has shared a screenplay with you."
        title = Screenplay.get_title(resource_id)

        # build email body and html
        script_url = url_for('editor', _external=True, resource_id=resource_id)
        body = script_url + "\n\n\n    	"
        body += "--- This screenplay written and sent from RawScripts.com."
        divArea = ''
        if request.form.get('addMsg', '') == 'y':
            divArea = "<div style='width:300px; margin-left:20px; font-size:12pt; font-family:serif'>"
            divArea += request.form.get('msg', '')
            divArea += "<br><b>--" + user + "</b></div>"

        replacements = {
            'SCRIPTTITLE': title, 'USER': user,
            'SCRIPTURL': script_url, 'TEXTAREA': divArea}
        with app.open_resource('static/text/notify.txt') as f:
            html = f.read()
        for key, val in replacements.items():
            html = html.replace(key, val)

        msg = Message(subject, recipients=new_collaborators, body=body, html=html)
        mail.send(msg)

        # TODO: send the danged email
    output = ",".join(new_collaborators)
    return Response(output, mimetype='text/plain')
Example #2
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')
def rename_screenplay():
    resource_id = get_resource_id_from_request()
    rename = request.form.get('rename', None)
    if rename is None:
        rename = request.json.get('rename', None)
    Screenplay.rename(resource_id, rename)
    return Response('done', mimetype='text/plain')
Example #4
0
def share_screenplay():
    resource_id = get_resource_id_from_request()
    collaborators_raw = request.form.get('collaborators', None)
    if collaborators_raw is None:
        collaborators_raw = request.json.get('collaborators', None)
    collaborators = collaborators_raw.split(',')
    new_collaborators = Screenplay.add_access(resource_id, collaborators)

    if new_collaborators and request.json.get('sendEmail', '') == 'y':
        user = current_user.email
        subject = 'Rawscripts.com: ' + user + " has shared a screenplay with you."
        title = Screenplay.get_title(resource_id)

        # build email body and html
        script_url = url_for('editor', _external=True, resource_id=resource_id)
        body = script_url + "\n\n\n    	"
        body += "--- This screenplay written and sent from RawScripts.com."
        divArea = ''

        replacements = {
            'SCRIPTTITLE': title, 'USER': user,
            'SCRIPTURL': script_url, 'TEXTAREA': divArea}
        with app.open_resource('static/text/notify.txt') as f:
            html = f.read()
        for key, val in replacements.items():
            html = html.replace(key, val)

        msg = Message(subject, recipients=new_collaborators, body=body, html=html)
        mail.send(msg)

        # TODO: send the danged email
    output = ",".join(new_collaborators)
    return Response(output, mimetype='text/plain')
def rename_screenplay():
    resource_id = get_resource_id_from_request()
    rename = request.form.get('rename', None)
    if rename is None:
        rename = request.json.get('rename', None)
    Screenplay.rename(resource_id, rename)
    return Response('done', mimetype='text/plain')
Example #6
0
def remove_access_to_screenplay():
    resource_id = request.json['resource_id']
    collaborator = request.json['removePerson'].lower()
    screenplay = Screenplay.get_by_resource_id(resource_id)
    if not current_user.owns_screenplay(screenplay):
        if not current_user.is_collaborator_on_screenplay(screenplay):
            return Response(collaborator, mimetype='text/plain')
        collaborator = current_user.email.lower()
    Screenplay.remove_access(resource_id, collaborator)
    return jsonify(collaborator=collaborator, resource_id=resource_id)
Example #7
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 #9
0
def remove_access_to_screenplay():
    resource_id = get_resource_id_from_request()
    collaborator = request.form.get('removePerson', None)
    if not collaborator:
        collaborator = request.json.get('removePerson', None)
    collaborator = collaborator.lower()
    screenplay = Screenplay.get_by_resource_id(resource_id)
    if not current_user.owns_screenplay(screenplay):
        if not current_user.is_collaborator_on_screenplay(screenplay):
            return Response(collaborator, mimetype='text/plain')
        collaborator = current_user.email.lower()
    Screenplay.remove_access(resource_id, collaborator)
    return jsonify(collaborator=collaborator, resource_id=resource_id)
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)
Example #11
0
def email_screenplay():
    resource_id = get_resource_id_from_request()
    title_page = request.form.get('title_page', None)
    if title_page is None:
        title_page = request.json.get('title_page', None)
    subject = "Screenplay"
    body_message = ""
    raw_recipients = request.form.get('recipients', None)
    if raw_recipients is None:
        raw_recipients = request.json.get('recipients', None)
    print request.json
    recipients = raw_recipients.split(',')

    # Build email body and html
    body = body_message + "\n\n\n    	"
    body += "--- This screenplay written and sent from RawScripts.com."
    body += " Check it out---"
    with app.open_resource('static/text/email.txt') as f:
        html_template = f.read()
    html = html_template.replace("FILLERTEXT", body_message)

    # get pdf file to attach
    include_title_page = title_page == '1'
    export_file = Screenplay.export_to_file(resource_id, 'pdf', include_title_page)
    _file, title, content_type = export_file
    filename = title + '.pdf'

    msg = Message(subject, recipients=recipients, body=body, html=html)
    msg.attach(filename, content_type, _file.getvalue())
    try:
        mail.send(msg)
    except:
        return Response('failed', mimetype='text/plain')
    return Response('sent', mimetype='text/plain')
def new_screenplay():
    filename = request.form.get('filename', None)
    if filename is None:
        filename = request.json.get('filename', None)
    user = current_user.name
    screenplay = Screenplay.create(filename, user)
    return Response(screenplay.resource_id, mimetype='text/plain')
def email_screenplay():
    resource_id = get_resource_id_from_request()
    title_page = request.form.get('title_page', None)
    if title_page is None:
        title_page = request.json.get('title_page', None)
    subject = "Screenplay"
    body_message = ""
    raw_recipients = request.form.get('recipients', None)
    if raw_recipients is None:
        raw_recipients = request.json.get('recipients', None)
    recipients = raw_recipients.split(',')

    # Build email body and html
    body = body_message + "\n\n\n    	"
    body += "--- This screenplay written and sent from RawScripts.com."
    body += " Check it out---"
    with app.open_resource('static/text/email.txt') as f:
        html_template = f.read()
    html = html_template.replace("FILLERTEXT", body_message)

    # get pdf file to attach
    include_title_page = title_page == '1'
    export_file = Screenplay.export_to_file(resource_id, 'pdf',
                                            include_title_page)
    _file, title, content_type = export_file
    filename = title + '.pdf'

    msg = Message(subject, recipients=recipients, body=body, html=html)
    msg.attach(filename, content_type, _file.getvalue())
    try:
        mail.send(msg)
    except:
        return Response('failed', mimetype='text/plain')
    return Response('sent', mimetype='text/plain')
Example #14
0
def new_screenplay():
    filename = request.form.get('filename', None)
    if filename is None:
        filename = request.json.get('filename', None)
    user = current_user.name
    screenplay = Screenplay.create(filename, user)
    return Response(screenplay.resource_id, mimetype='text/plain')
Example #15
0
def email_screenplay():
    resource_id = request.form['resource_id']
    title_page = request.form['title_page']
    subject = request.form['subject']
    body_message = request.form['body_message']
    recipients = request.form['recipients'].split(',')

    # Build email body and html
    body = body_message + "\n\n\n    	"
    body += "--- This screenplay written and sent from RawScripts.com."
    body += " Check it out---"
    with app.open_resource('static/text/email.txt') as f:
        html_template = f.read()
    html = html_template.replace("FILLERTEXT", body_message)

    # get pdf file to attach
    include_title_page = title_page == '1'
    export_file = Screenplay.export_to_file(resource_id, 'pdf', include_title_page)
    _file, title, content_type = export_file
    filename = title + '.pdf'

    msg = Message(subject, recipients=recipients, body=body, html=html)
    msg.attach(filename, content_type, _file.getvalue())
    mail.send(msg)

    return Response('sent', mimetype='text/plain')
Example #16
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 = UsersScripts.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)
    screenplays = UsersScripts.query.filter_by(resource_id=resource_id).all()
    for screenplay in screenplays:
        screenplay.last_updated = now
    db.session.commit()
    if expected_version_number is None:
        return Response('1', mimetype='text/plain')
    return jsonify(success=True, versionSaved=new_version_number)
Example #17
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 #18
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 #19
0
def notes_view():
    resource_id = request.args.get('resource_id')
    title = Screenplay.get_title(resource_id)
    notes = Note.get_by_resource_id(resource_id)
    output = [[n.row, n.col, json.loads(n.data), n.thread_id] for n in notes]
    j = json.dumps(output)
    # TODO: figure out correct permission here
    f = False # is allowed to delete threads? defaulting to NO
    return render_template('mobile/MobileViewNotes.html', j=j, title=title, f=f,
                           user=current_user.name, sign_out='/user/sign-out')
Example #20
0
def share_screenplay():
    resource_id = get_resource_id_from_request()
    collaborators_raw = request.form.get('collaborators', None)
    if collaborators_raw is None:
        collaborators_raw = request.json.get('collaborators', None)
    collaborators = collaborators_raw.split(',')
    new_collaborators = Screenplay.add_access(resource_id, collaborators)

    send_email = request.form.get('sendEmail', None)
    if not send_email:
        send_email = request.json.get('sendEmail', None)

    if new_collaborators and send_email == 'y':
        user = current_user.email
        subject = 'Rawscripts.com: ' + user + " has shared a screenplay with you."
        title = Screenplay.get_title(resource_id)

        # build email body and html
        script_url = url_for('editor', _external=True, resource_id=resource_id)
        body = script_url + "\n\n\n    	"
        body += "--- This screenplay written and sent from RawScripts.com."
        divArea = ''

        replacements = {
            'SCRIPTTITLE': title,
            'USER': user,
            'SCRIPTURL': script_url,
            'TEXTAREA': divArea
        }
        with app.open_resource('static/text/notify.txt') as f:
            html = f.read()
        for key, val in replacements.items():
            html = html.replace(key, val)

        msg = Message(subject,
                      recipients=new_collaborators,
                      body=body,
                      html=html)
        mail.send(msg)

        # TODO: send the danged email
    output = ",".join(new_collaborators)
    return Response(output, mimetype='text/plain')
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
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)
Example #23
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 #24
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 #25
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 #26
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')
Example #28
0
def notes_view():
    resource_id = request.args.get('resource_id')
    title = Screenplay.get_title(resource_id)
    notes = Note.get_by_resource_id(resource_id)
    output = [[n.row, n.col, json.loads(n.data), n.thread_id] for n in notes]
    j = json.dumps(output)
    # TODO: figure out correct permission here
    f = False  # is allowed to delete threads? defaulting to NO
    return render_template('mobile/MobileViewNotes.html',
                           j=j,
                           title=title,
                           f=f,
                           user=current_user.name,
                           sign_out='/user/sign-out')
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)
Example #30
0
 def index(self):
     query = User.query.with_entities(db.extract('year', User.firstUse),
                                      db.extract('month', User.firstUse),
                                      db.func.count()). \
                 group_by(db.extract('year', User.firstUse),
                          db.extract('month', User.firstUse)). \
                 order_by(db.extract('year', User.firstUse),
                          db.extract('month', User.firstUse))
     months = []
     users = 0
     for row in query.all():
         year, month, count = row
         months.append({'year': year, 'month': month, 'count':count})
         users += count
     scripts = Screenplay.count()
     return self.render('stats.html', months=months, users=users, scripts=scripts)
Example #31
0
def convert_process():
    fileformat = request.form["ff"]
    filename = "Untitled"
    if "filename" in request.form:
        filename = request.form["filename"]
        filename = filename.replace("%20", " ").replace("C:\\fakepath\\", "")
    data = request.files["script"]
    content = None
    if fileformat == "celtx":
        content = Celtx(data)
    elif fileformat == "fdx":
        content = FinalDraft(data)
    else:
        content = Text(data)
    screenplay = Screenplay.create(filename, current_user.name, content)
    origin = _get_origin()
    return render_template("UploadComplete.html", url=screenplay.resource_id, origin=origin)
Example #32
0
def convert_process():
    fileformat = request.form['ff']
    filename = 'Untitled'
    if 'filename' in request.form:
        filename = request.form['filename']
        filename = filename.replace('%20', ' ').replace('C:\\fakepath\\', '')
    data = request.files['script']
    content = None
    if fileformat == 'celtx':
        content = Celtx(data)
    elif fileformat == 'fdx':
        content = FinalDraft(data)
    else:
        content = Text(data)
    screenplay = Screenplay.create(filename, current_user.name, content)
    origin = _get_origin()
    return render_template('UploadComplete.html', url=screenplay.resource_id,
                           origin=origin)
Example #33
0
 def index(self):
     query = User.query.with_entities(db.extract('year', User.firstUse),
                                      db.extract('month', User.firstUse),
                                      db.func.count()). \
                 group_by(db.extract('year', User.firstUse),
                          db.extract('month', User.firstUse)). \
                 order_by(db.extract('year', User.firstUse),
                          db.extract('month', User.firstUse))
     months = []
     users = 0
     for row in query.all():
         year, month, count = row
         months.append({'year': year, 'month': month, 'count': count})
         users += count
     scripts = Screenplay.count()
     return self.render('stats.html',
                        months=months,
                        users=users,
                        scripts=scripts)
def revision_history():
    user = current_user.name
    resource_id = request.args.get('resource_id')
    version = request.args.get('version')
    revisions = ResourceVersion.get_historical_metadata(resource_id, version)
    data = []
    for revision in revisions:
        d = {'updated': revision.timestamp.strftime("%b %d")}
        d['version'] = revision.version
        d['autosave_class'] = 'autosave' if revision.autosave else 'manualsave'
        exports, tag = revision.get_exports_and_tags()
        d['export'] = exports
        d['tag'] = tag
        d['emailed'] = '' if exports.startswith('[[],') else 'Emailed'
        d['tagged'] = '' if tag == '' else 'Tag'
        data.append(d)

    title = Screenplay.get_title(resource_id)
    return render_template('revisionhistory.html', user=user, mode="PRO",
                           resource_id=resource_id, r=data, title=title)
Example #35
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)
Example #36
0
def revision_history():
    user = current_user.name
    resource_id = request.args.get('resource_id')
    version = request.args.get('version')
    revisions = ResourceVersion.get_historical_metadata(resource_id, version)
    data = []
    for revision in revisions:
        d = {'updated': revision.timestamp.strftime("%b %d")}
        d['version'] = revision.version
        d['autosave_class'] = 'autosave' if revision.autosave else 'manualsave'
        exports, tag = revision.get_exports_and_tags()
        d['export'] = exports
        d['tag'] = tag
        d['emailed'] = '' if exports.startswith('[[],') else 'Emailed'
        d['tagged'] = '' if tag == '' else 'Tag'
        data.append(d)

    title = Screenplay.get_title(resource_id)
    return render_template('revisionhistory.html',
                           user=user,
                           mode="PRO",
                           resource_id=resource_id,
                           r=data,
                           title=title)
Example #37
0
def new_screenplay():
    filename = request.form['filename']
    user = current_user.name
    screenplay = Screenplay.create(filename, user)
    return Response(screenplay.resource_id, mimetype='text/plain')
Example #38
0
def revisionduplicate_screenplay():
    resource_id = request.form['resource_id']
    version = int(request.form['version'])
    screenplay = Screenplay.duplicate(resource_id, version, current_user.name)
    url = '/editor?resource_id=' + screenplay.resource_id
    return Response(url, mimetype='text/plain')
Example #39
0
def duplicate_screenplay():
    resource_id = request.form['resource_id']
    version = Screenplay.get_latest_version_number(resource_id)
    screenplay = Screenplay.duplicate(resource_id, version, current_user.name)
    url = '/editor?resource_id=' + screenplay.resource_id
    return Response(url, mimetype='text/plain')
def undelete_screenplay():
    resource_id = get_resource_id_from_request()
    Screenplay.remove_from_trash(resource_id)
    return Response(resource_id, mimetype='text/plain')
Example #41
0
def remove_access_to_screenplay():
    resource_id = request.form['resource_id']
    collaborator = request.form['removePerson'].lower()
    Screenplay.remove_access(resource_id, collaborator)
    return Response(collaborator, mimetype='text/plain')
def revisionduplicate_screenplay():
    resource_id = request.form['resource_id']
    version = int(request.form['version'])
    screenplay = Screenplay.duplicate(resource_id, version, current_user.name)
    url = '/editor?resource_id=' + screenplay.resource_id
    return Response(url, mimetype='text/plain')
def duplicate_screenplay():
    resource_id = get_resource_id_from_request()
    version = Screenplay.get_latest_version_number(resource_id)
    screenplay = Screenplay.duplicate(resource_id, version, current_user.name)
    url = '/editor?resource_id=' + screenplay.resource_id
    return Response(url, mimetype='text/plain')
def hard_delete_screenplay():
    resource_id = get_resource_id_from_request()
    Screenplay.hard_delete(resource_id)
    return Response(resource_id, mimetype='text/plain')
Example #45
0
def undelete_screenplay():
    resource_id = get_resource_id_from_request()
    Screenplay.remove_from_trash(resource_id)
    return Response(resource_id, mimetype='text/plain')
Example #46
0
def hard_delete_screenplay():
    resource_id = get_resource_id_from_request()
    Screenplay.hard_delete(resource_id)
    return Response(resource_id, mimetype='text/plain')