def instagram_callback():
    instagram = get_instagram_auth()
    state = instagram.authorization_url(InstagramOAuth.get_auth_uri(), access_type='offline')
    instagram = get_instagram_auth(state=state)
    if 'code' in request.url:
        code_url = (((request.url.split('&'))[0]).split('='))[1]
        token = instagram.fetch_token(InstagramOAuth.get_token_uri(),
                                      authorization_url=request.url,
                                      code=code_url,
                                      client_secret=InstagramOAuth.get_client_secret())
        response = instagram.get('https://api.instagram.com/v1/users/self/media/recent/?access_token=' + token.get('access_token', '')).json()
        for el in response.get('data'):
            response_file = urlopen(el['images']['standard_resolution']['url'])

            filename = str(time.time()) + '.jpg'
            file_path = os.path.realpath('.') + '/static/temp/' + filename
            fh = open(file_path, "wb")
            fh.write(response_file.read())
            fh.close()
            img = UploadedFile(file_path, filename)
            print img
            background_url = upload(img, '/image/' + filename)
            print background_url

    return 'Not implemented'
def save_resized_image(image_file, width_, height_, basewidth, aspect, height_size, upload_path,
                       ext='jpg', remove_after_upload=False):
    """
    Save the resized version of the background image
    :param upload_path:
    :param ext:
    :param remove_after_upload:
    :param height_size:
    :param aspect:
    :param basewidth:
    :param height_:
    :param width_:
    :param image_file:
    :return:
    """
    filename = '{filename}.{ext}'.format(filename=time.time(), ext=ext)

    img = Image.open(image_file)
    if aspect == 'on':
        width_percent = (basewidth / float(img.size[0]))
        height_size = int((float(img.size[1]) * float(width_percent)))

    img = img.resize((basewidth, height_size), PIL.Image.ANTIALIAS)
    img.save(image_file)
    file = UploadedFile(file_path=image_file, filename=filename)

    if remove_after_upload:
        os.remove(image_file)

    return upload(file, upload_path)
def placeholder_upload():
    if request.method == 'POST':
        placeholder_image = request.form['placeholder']
        filename = request.form['file_name']
        if placeholder_image:
            placeholder_file = uploaded_file(file_content=placeholder_image)
            placeholder = upload(
                placeholder_file,
                'placeholders/original/' + filename
            )
            temp_img_file = placeholder.replace('/serve_', '')

            basewidth = 300
            img = Image.open(temp_img_file)
            wpercent = (basewidth / float(img.size[0]))
            hsize = int((float(img.size[1]) * float(wpercent)))
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            try:
                os.mkdir(app.config['TEMP_UPLOADS_FOLDER'])
            except OSError as exc:
                if exc.errno != errno.EEXIST:
                    raise exc
                pass
            img.save(app.config['TEMP_UPLOADS_FOLDER'] + '/temp.png')
            file_name = temp_img_file.rsplit('/', 1)[1]
            thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name)
            background_thumbnail_url = upload(
                thumbnail_file,
                'placeholders/thumbnail/' + filename
            )
            shutil.rmtree(path=app.config['TEMP_UPLOADS_FOLDER'])
            placeholder_db = DataGetter.get_custom_placeholder_by_name(request.form['name'])
            if placeholder_db:
                placeholder_db.url = placeholder
                placeholder_db.thumbnail = background_thumbnail_url
            else:
                placeholder_db = CustomPlaceholder(name=request.form['name'],
                                                   url=placeholder,
                                                   thumbnail=background_thumbnail_url)
            save_to_db(placeholder_db, 'Custom Placeholder saved')

            return jsonify({'status': 'ok', 'placeholder': placeholder, 'id': placeholder_db.id})
        else:
            return jsonify({'status': 'no logo'})
def instagram_callback():
    instagram = get_instagram_auth()
    state = instagram.authorization_url(InstagramOAuth.get_auth_uri(), access_type='offline')
    instagram = get_instagram_auth(state=state)
    if 'code' in request.url:
        code_url = (((request.url.split('&'))[0]).split('='))[1]
        token = instagram.fetch_token(InstagramOAuth.get_token_uri(),
                                      authorization_url=request.url,
                                      code=code_url,
                                      client_secret=InstagramOAuth.get_client_secret())
        response = instagram.get(
            'https://api.instagram.com/v1/users/self/media/recent/?access_token=' + token.get('access_token',
                                                                                              '')).json()
        for el in response.get('data'):
            filename, uploaded_file = uploaded_file_provided_by_url(el['images']['standard_resolution']['url'])
            upload(uploaded_file, '/image/' + filename)

    flash("OAuth Authorization error. Please try again later.")
    return redirect(url_for('admin.login_view'))
def save_file_provided_by_url(url):
    response_file = urlopen(url)
    filename = str(time.time()) + '.jpg'
    file_path = os.path.realpath('.') + '/static/temp/' + filename
    fh = open(file_path, "wb")
    fh.write(response_file.read())
    fh.close()
    img = UploadedFile(file_path, filename)
    background_url = upload(img, '/image/' + filename)
    return background_url
def create_event_bgimage_upload():
    if request.method == 'POST':
        background_image = request.form['bgimage']
        if background_image:
            background_file = uploaded_file(file_content=background_image)
            background_url = upload(
                background_file,
                UPLOAD_PATHS['temp']['event'].format(uuid=uuid4())
            )
            return jsonify({'status': 'ok', 'background_url': background_url})
        else:
            return jsonify({'status': 'no bgimage'})
Example #7
0
def export_order_csv_task(event_id):
    try:
        os.mkdir(app.config['TEMP_UPLOADS_FOLDER'])
    except OSError as exc:
        if exc.errno != errno.EEXIST:
            raise exc
    filename = "order-{}.csv".format(uuid.uuid1().hex)
    file_path = app.config['TEMP_UPLOADS_FOLDER'] + "/" + filename
    with open(file_path, "w") as temp_file:
        temp_file.write(OrderCsv.export(event_id))
    order_csv_file = UploadedFile(file_path=file_path, filename=filename)
    order_csv_url = upload(order_csv_file, UPLOAD_PATHS['exports']['csv'].format(event_id=event_id))
    return order_csv_url
Example #8
0
def export_xcal_task(event_id):
    event = DataGetter.get_event(event_id)
    try:
        os.mkdir(app.config['TEMP_UPLOADS_FOLDER'])
    except OSError as exc:
        if exc.errno != errno.EEXIST:
            raise exc
    filename = "xcal.xcs"
    file_path = app.config['TEMP_UPLOADS_FOLDER'] + "/" + filename
    with open(file_path, "w") as temp_file:
        temp_file.write(XCalExporter.export(event_id))
    xcal_file = UploadedFile(file_path=file_path, filename=filename)
    event.xcal_url = upload(xcal_file, UPLOAD_PATHS['exports']['xcal'].format(event_id=event_id))
    save_to_db(event)
def update_user_details(first_name=None, last_name=None, facebook_link=None, twitter_link=None, file_url=None):
    user = login.current_user
    if not user.user_detail.facebook:
        user.user_detail.facebook = facebook_link
    if not user.user_detail.firstname:
        user.user_detail.firstname = first_name
    if not user.user_detail.lastname:
        user.user_detail.lastname = last_name
    if not user.user_detail.avatar_uploaded:
        filename, img = uploaded_file_provided_by_url(file_url)
        background_url = upload(img, '/image/' + filename)
        user.user_detail.avatar_uploaded = background_url
    if not user.user_detail.twitter:
        user.user_detail.twitter = twitter_link
    save_to_db(user)
Example #10
0
def save_event_image(image_url, upload_path, ext='png', remove_after_upload=False):
    """
    Save the image
    :param ext:
    :param remove_after_upload:
    :param upload_path:
    :param image_url:
    :return:
    """
    filename = '{filename}.{ext}'.format(filename=get_image_file_name(), ext=ext)
    file_path = get_path_of_temp_url(image_url)
    logo_file = UploadedFile(file_path, filename)
    url = upload(logo_file, upload_path)
    if remove_after_upload:
        os.remove(file_path)
    return url if url else ''
def export_event_json(event_id, settings):
    """
    Exports the event as a zip on the server and return its path
    """
    # make directory
    exports_dir = app.config['BASE_DIR'] + '/static/uploads/exports/'
    if not os.path.isdir(exports_dir):
        os.mkdir(exports_dir)
    dir_path = exports_dir + 'event%d' % event_id
    if os.path.isdir(dir_path):
        shutil.rmtree(dir_path, ignore_errors=True)
    os.mkdir(dir_path)
    # save to directory
    for e in EXPORTS:
        if e[0] == 'event':
            data = _order_json(marshal(e[1].get(event_id), e[2]), e)
            _download_media(data, 'event', dir_path, settings)
        else:
            data = marshal(e[1].list(event_id), e[2])
            for count in range(len(data)):
                data[count] = _order_json(data[count], e)
                _download_media(data[count], e[0], dir_path, settings)
        data_str = json.dumps(data, indent=4, ensure_ascii=False).encode('utf-8')
        fp = open(dir_path + '/' + e[0], 'w')
        fp.write(data_str)
        fp.close()
    # add meta
    data_str = json.dumps(
        _generate_meta(), sort_keys=True,
        indent=4, ensure_ascii=False
    ).encode('utf-8')
    fp = open(dir_path + '/meta', 'w')
    fp.write(data_str)
    fp.close()
    # make zip
    shutil.make_archive(dir_path, 'zip', dir_path)
    dir_path = dir_path + ".zip"

    storage_path = UPLOAD_PATHS['exports']['zip'].format(
        event_id=event_id
    )
    uploaded_file = UploadedFile(dir_path, dir_path.rsplit('/', 1)[1])
    storage_url = upload(uploaded_file, storage_path)

    if get_settings()['storage_place'] != "s3" and get_settings()['storage_place'] != 'gs':
        storage_url = app.config['BASE_DIR'] + storage_url.replace("/serve_", "/")
    return storage_url
def photo_upload(event_id, speaker_id):
    speaker = get_speaker_or_throw(speaker_id)
    photo = request.form['photo']
    if photo:
        photo_file = uploaded_file(file_content=photo)
        photo = upload(
            photo_file,
            UPLOAD_PATHS['speakers']['photo'].format(
                event_id=int(event_id), id=int(speaker.id)
            ))
        speaker.photo = photo
        save_to_db(speaker)
        return jsonify({'status': 'ok', 'photo': photo})
    else:
        speaker.photo = None
        save_to_db(speaker)
        return jsonify({'status': 'Removed'})
def bgimage_upload(event_id, speaker_id):
    if request.method == 'POST':
        background_image = request.form['bgimage']
        if background_image:
            background_file = uploaded_file(file_content=background_image)
            background_url = upload(
                background_file,
                UPLOAD_PATHS['speakers']['photo'].format(
                    event_id=int(event_id), id=int(speaker_id)
                ))
            return jsonify({'status': 'ok', 'background_url': background_url})
        else:
            return jsonify({'status': 'no bgimage'})
    elif request.method == 'DELETE':
        speaker = DataGetter.get_speaker(int(speaker_id))
        speaker.photo = ''
        save_to_db(speaker)
        return jsonify({'status': 'ok'})
def bgimage_upload(user_id):
    if request.method == 'POST':
        background_image = request.form['bgimage']
        if background_image:
            background_file = uploaded_file(file_content=background_image)
            background_url = upload(
                background_file,
                UPLOAD_PATHS['user']['avatar'].format(
                    user_id=user_id
                ))
            return jsonify({'status': 'ok', 'background_url': background_url})
        else:
            return jsonify({'status': 'no bgimage'})
    elif request.method == 'DELETE':
        profile = DataGetter.get_user(int(user_id))
        profile.avatar_uploaded = ''
        save_to_db(profile)
        return jsonify({'status': 'ok'})
Example #15
0
def create_user_oauth(user, user_data, token, method):
    if user is None:
        user = User()
        user.email = user_data['email']
    if method == 'Google':
        user.avatar = user_data['picture']
    if method == 'Facebook':
        user.avatar = user_data['picture']['data']['url']
    user.tokens = json.dumps(token)
    user.is_verified = True
    save_to_db(user, "User created")
    user_detail = UserDetail.query.filter_by(user_id=user.id).first()
    if 'http' in user.avatar:
        f_name, uploaded_file = uploaded_file_provided_by_url(user.avatar)
        avatar = upload(uploaded_file, 'users/%d/avatar' % int(user.id))
        user_detail.avatar_uploaded = avatar

    user_detail.firstname = user_data['name']
    save_to_db(user, "User Details Updated")
    return user
 def bgimage_upload(self, event_id):
     if request.method == 'POST':
         background_image = request.form['bgimage']
         if background_image:
             background_file = uploaded_file(file_content=background_image)
             background_url = upload(
                 background_file,
                 UPLOAD_PATHS['event']['background_url'].format(
                     event_id=event_id
                 ))
             event = DataGetter.get_event(event_id)
             event.background_url = background_url
             save_to_db(event)
             return jsonify({'status': 'ok', 'background_url': background_url})
         else:
             return jsonify({'status': 'no bgimage'})
     elif request.method == 'DELETE':
         event = DataGetter.get_event(event_id)
         event.background_url = ''
         save_to_db(event)
         return jsonify({'status': 'ok'})
 def logo_upload(self, event_id):
     if request.method == 'POST':
         logo_image = request.form['logo']
         if logo_image:
             logo_file = uploaded_file(file_content=logo_image)
             logo = upload(
                 logo_file,
                 UPLOAD_PATHS['event']['logo'].format(
                     event_id=event_id
                 ))
             event = DataGetter.get_event(event_id)
             event.logo = logo
             save_to_db(event)
             return jsonify({'status': 'ok', 'logo': logo})
         else:
             return jsonify({'status': 'no logo'})
     elif request.method == 'DELETE':
         event = DataGetter.get_event(event_id)
         event.logo = ''
         save_to_db(event)
         return jsonify({'status': 'ok'})
Example #18
0
def save_resized_image(image_file, basewidth, aspect, height_size, upload_path,
                       ext='jpg', remove_after_upload=False):
    """
    Save the resized version of the background image
    :param upload_path:
    :param ext:
    :param remove_after_upload:
    :param height_size:
    :param aspect:
    :param basewidth:
    :param image_file:
    :return:
    """
    filename = '{filename}.{ext}'.format(filename=get_image_file_name(), ext=ext)

    img = Image.open(image_file)
    if aspect == 'on':
        width_percent = (basewidth / float(img.size[0]))
        height_size = int((float(img.size[1]) * float(width_percent)))

    img = img.resize((basewidth, height_size), PIL.Image.ANTIALIAS)

    temp_file_relative_path = 'static/media/temp/' + generate_hash(str(image_file)) + get_image_file_name() + '.jpg'
    temp_file_path = app.config['BASE_DIR'] + '/' + temp_file_relative_path

    img.save(temp_file_path)

    file = UploadedFile(file_path=temp_file_path, filename=filename)

    if remove_after_upload:
        os.remove(image_file)

    uploaded_url = upload(file, upload_path)

    os.remove(temp_file_path)

    return uploaded_url
def save_resized_image(image_file,
                       width_,
                       height_,
                       basewidth,
                       aspect,
                       height_size,
                       upload_path,
                       ext='jpg',
                       remove_after_upload=False):
    """
    Save the resized version of the background image
    :param upload_path:
    :param ext:
    :param remove_after_upload:
    :param height_size:
    :param aspect:
    :param basewidth:
    :param height_:
    :param width_:
    :param image_file:
    :return:
    """
    filename = '{filename}.{ext}'.format(filename=time.time(), ext=ext)

    img = Image.open(image_file)
    if aspect == 'on':
        width_percent = (basewidth / float(img.size[0]))
        height_size = int((float(img.size[1]) * float(width_percent)))

    img = img.resize((basewidth, height_size), PIL.Image.ANTIALIAS)
    img.save(image_file)
    file = UploadedFile(file_path=image_file, filename=filename)

    if remove_after_upload:
        os.remove(image_file)

    return upload(file, upload_path)
Example #20
0
 def add_session_media(request, media):
     media_file = DataManager.get_files_from_request(request, media)
     url = upload(media_file, UPLOAD_PATHS['temp']['event'].format(uuid=uuid4()))
     return url
Example #21
0
def _upload_media(task_handle, event_id, base_path):
    """
    Actually uploads the resources
    """
    global UPLOAD_QUEUE
    total = len(UPLOAD_QUEUE)
    ct = 0

    for i in UPLOAD_QUEUE:
        # update progress
        ct += 1
        update_state(task_handle, 'Uploading media (%d/%d)' % (ct, total))
        # get upload infos
        name, dao = i['srv']
        id_ = i['id']
        if name == 'event':
            item = dao.get(event_id)
        else:
            item = dao.get(event_id, id_)
        # get cur file
        field = i['field']
        path = getattr(item, field)
        if path.startswith('/'):
            # relative files
            path = base_path + path
            if os.path.isfile(path):
                filename = path.rsplit('/', 1)[1]
                file = UploadedFile(path, filename)
            else:
                file = ''  # remove current file setting
        else:
            # absolute links
            try:
                filename = UPLOAD_PATHS[name][field].rsplit('/', 1)[1]
                if is_downloadable(path):
                    r = requests.get(path, allow_redirects=True)
                    file = UploadedMemory(r.content, filename)
                else:
                    file = None
            except:
                file = None
        # don't update current file setting
        if file is None:
            continue
        # upload
        try:
            if file == '':
                raise Exception()
            key = UPLOAD_PATHS[name][field]
            if name == 'event':
                key = key.format(event_id=event_id)
            else:
                key = key.format(event_id=event_id, id=id_)
            print key
            new_url = upload(file, key)
        except Exception:
            print traceback.format_exc()
            new_url = None
        setattr(item, field, new_url)
        save_to_db(item, msg='Url updated')
    # clear queue
    UPLOAD_QUEUE = []
    return
def edit_view(event_id, speaker_id):
    speaker = get_speaker_or_throw(speaker_id)
    event = DataGetter.get_event(event_id)
    form_elems = DataGetter.get_custom_form_elements(event_id)
    if not form_elems:
        flash("Speaker form has been incorrectly configured for this event. Editing has been disabled", "danger")
        return redirect(url_for('.index_view', event_id=event_id))
    speaker_form = json.loads(form_elems.speaker_form)
    if request.method == 'GET':
        return render_template('gentelella/admin/event/speakers/edit.html',
                               speaker=speaker, event_id=event_id,
                               event=event, speaker_form=speaker_form)
    if request.method == 'POST':
        # set photo
        if 'photo' in request.files and request.files['photo'].filename != '':
            speaker_img_file = request.files['photo']
            speaker_img = upload(
                speaker_img_file,
                UPLOAD_PATHS['speakers']['photo'].format(
                    event_id=int(event_id), id=int(speaker.id)
                ))
            speaker.photo = speaker_img
        logo = request.form.get('photo', None)
        print logo
        if logo != '' and logo:
            filename = '{}.png'.format(time.time())
            filepath = '{}/static/{}'.format(path.realpath('.'),
                                             logo[len('/serve_static/'):])
            logo_file = UploadedFile(filepath, filename)
            print logo_file
            logo = upload(logo_file, 'events/%d/speakers/%d/photo' % (int(event_id), int(speaker.id)))
            speaker.photo = logo
            image_sizes = DataGetter.get_image_sizes_by_type(type='profile')
            if not image_sizes:
                image_sizes = ImageSizes(full_width=150,
                                         full_height=150,
                                         icon_width=35,
                                         icon_height=35,
                                         thumbnail_width=50,
                                         thumbnail_height=50,
                                         type='profile')
            save_to_db(image_sizes, "Image Sizes Saved")
            filename = '{}.jpg'.format(time.time())
            filepath = '{}/static/{}'.format(path.realpath('.'),
                                             logo[len('/serve_static/'):])
            logo_file = UploadedFile(filepath, filename)

            temp_img_file = upload_local(logo_file,
                                         'events/{event_id}/speakers/{id}/temp'.format(
                                             event_id=int(event_id), id=int(speaker.id)))
            temp_img_file = temp_img_file.replace('/serve_', '')

            basewidth = image_sizes.full_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.full_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            large_file = UploadedFile(file_path=temp_img_file, filename=file_name)
            profile_thumbnail_url = upload(
                large_file,
                UPLOAD_PATHS['speakers']['thumbnail'].format(
                    event_id=int(event_id), id=int(speaker.id)
                ))

            basewidth = image_sizes.thumbnail_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.thumbnail_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name)
            profile_small_url = upload(
                thumbnail_file,
                UPLOAD_PATHS['speakers']['small'].format(
                    event_id=int(event_id), id=int(speaker.id)
                ))

            basewidth = image_sizes.icon_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.icon_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            icon_file = UploadedFile(file_path=temp_img_file, filename=file_name)
            profile_icon_url = upload(
                icon_file,
                UPLOAD_PATHS['speakers']['icon'].format(
                    event_id=int(event_id), id=int(speaker.id)
                ))
            shutil.rmtree(path='static/media/' + 'events/{event_id}/speakers/{id}/temp'.format(
                event_id=int(event_id), id=int(speaker.id)))
            speaker.thumbnail = profile_thumbnail_url
            speaker.small = profile_small_url
            speaker.icon = profile_icon_url
            save_to_db(speaker, "Speaker photo saved")
        # set other fields
        speaker.name = request.form.get('name', None)
        speaker.short_biography = request.form.get('short_biography', None)
        speaker.long_biography = request.form.get('long_biography', None)
        speaker.email = request.form.get('email', None)
        speaker.mobile = request.form.get('mobile', None)
        speaker.website = request.form.get('website', None)
        speaker.twitter = request.form.get('twitter', None)
        speaker.facebook = request.form.get('facebook', None)
        speaker.github = request.form.get('github', None)
        speaker.linkedin = request.form.get('linkedin', None)
        speaker.organisation = request.form.get('organisation', None)
        speaker.featured = True if request.form.get('featured', 'false') == 'true' else False
        speaker.position = request.form.get('position', None)
        speaker.country = request.form.get('country', None)
        speaker.city = request.form.get('city', None)
        if request.form.get('heard_from', None) == "Other":
            speaker.heard_from =  request.form.get('other_text', None)
        else:
            speaker.heard_from =  request.form.get('heard_from', None)
        speaker.sponsorship_required = request.form.get('sponsorship_required', None)
        speaker.speaking_experience = request.form.get('speaking_experience', None)
        save_to_db(speaker, "Speaker has been updated")
        flash("Speaker has been saved", "success")

    return redirect(url_for('.index_view', event_id=event_id))
def edit_view(event_id, speaker_id):
    speaker = get_speaker_or_throw(speaker_id)
    event = DataGetter.get_event(event_id)
    form_elems = DataGetter.get_custom_form_elements(event_id)
    if not form_elems:
        flash(
            "Speaker form has been incorrectly configured for this event. Editing has been disabled",
            "danger")
        return redirect(url_for('.index_view', event_id=event_id))
    speaker_form = json.loads(form_elems.speaker_form)
    if request.method == 'GET':
        return render_template('gentelella/admin/event/speakers/edit.html',
                               speaker=speaker,
                               event_id=event_id,
                               event=event,
                               speaker_form=speaker_form)
    if request.method == 'POST':
        # set photo
        if 'photo' in request.files and request.files['photo'].filename != '':
            speaker_img_file = request.files['photo']
            speaker_img = upload(
                speaker_img_file, UPLOAD_PATHS['speakers']['photo'].format(
                    event_id=int(event_id), id=int(speaker.id)))
            speaker.photo = speaker_img
        logo = request.form.get('photo', None)
        print logo
        if logo != '' and logo:
            filename = '{}.png'.format(time.time())
            filepath = '{}/static/{}'.format(path.realpath('.'),
                                             logo[len('/serve_static/'):])
            logo_file = UploadedFile(filepath, filename)
            print logo_file
            logo = upload(
                logo_file, 'events/%d/speakers/%d/photo' %
                (int(event_id), int(speaker.id)))
            speaker.photo = logo
            image_sizes = DataGetter.get_image_sizes_by_type(type='profile')
            if not image_sizes:
                image_sizes = ImageSizes(full_width=150,
                                         full_height=150,
                                         icon_width=35,
                                         icon_height=35,
                                         thumbnail_width=50,
                                         thumbnail_height=50,
                                         type='profile')
            save_to_db(image_sizes, "Image Sizes Saved")
            filename = '{}.jpg'.format(time.time())
            filepath = '{}/static/{}'.format(path.realpath('.'),
                                             logo[len('/serve_static/'):])
            logo_file = UploadedFile(filepath, filename)

            temp_img_file = upload_local(
                logo_file, 'events/{event_id}/speakers/{id}/temp'.format(
                    event_id=int(event_id), id=int(speaker.id)))
            temp_img_file = temp_img_file.replace('/serve_', '')

            basewidth = image_sizes.full_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.full_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            large_file = UploadedFile(file_path=temp_img_file,
                                      filename=file_name)
            profile_thumbnail_url = upload(
                large_file, UPLOAD_PATHS['speakers']['thumbnail'].format(
                    event_id=int(event_id), id=int(speaker.id)))

            basewidth = image_sizes.thumbnail_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.thumbnail_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            thumbnail_file = UploadedFile(file_path=temp_img_file,
                                          filename=file_name)
            profile_small_url = upload(
                thumbnail_file, UPLOAD_PATHS['speakers']['small'].format(
                    event_id=int(event_id), id=int(speaker.id)))

            basewidth = image_sizes.icon_width
            img = Image.open(temp_img_file)
            hsize = image_sizes.icon_height
            img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
            img.save(temp_img_file)
            file_name = temp_img_file.rsplit('/', 1)[1]
            icon_file = UploadedFile(file_path=temp_img_file,
                                     filename=file_name)
            profile_icon_url = upload(
                icon_file,
                UPLOAD_PATHS['speakers']['icon'].format(event_id=int(event_id),
                                                        id=int(speaker.id)))
            shutil.rmtree(path='static/media/' +
                          'events/{event_id}/speakers/{id}/temp'.format(
                              event_id=int(event_id), id=int(speaker.id)))
            speaker.thumbnail = profile_thumbnail_url
            speaker.small = profile_small_url
            speaker.icon = profile_icon_url
            save_to_db(speaker, "Speaker photo saved")
        # set other fields
        speaker.name = request.form.get('name', None)
        speaker.short_biography = request.form.get('short_biography', None)
        speaker.long_biography = request.form.get('long_biography', None)
        speaker.email = request.form.get('email', None)
        speaker.mobile = request.form.get('mobile', None)
        speaker.website = request.form.get('website', None)
        speaker.twitter = request.form.get('twitter', None)
        speaker.facebook = request.form.get('facebook', None)
        speaker.github = request.form.get('github', None)
        speaker.linkedin = request.form.get('linkedin', None)
        speaker.organisation = request.form.get('organisation', None)
        speaker.featured = True if request.form.get(
            'featured', 'false') == 'true' else False
        speaker.position = request.form.get('position', None)
        speaker.country = request.form.get('country', None)
        speaker.city = request.form.get('city', None)
        if request.form.get('heard_from', None) == "Other":
            speaker.heard_from = request.form.get('other_text', None)
        else:
            speaker.heard_from = request.form.get('heard_from', None)
        speaker.sponsorship_required = request.form.get(
            'sponsorship_required', None)
        speaker.speaking_experience = request.form.get('speaking_experience',
                                                       None)
        save_to_db(speaker, "Speaker has been updated")
        flash("Speaker has been saved", "success")

    return redirect(url_for('.index_view', event_id=event_id))
def _upload_media(task_handle, event_id, base_path):
    """
    Actually uploads the resources
    """
    global UPLOAD_QUEUE
    total = len(UPLOAD_QUEUE)
    ct = 0

    for i in UPLOAD_QUEUE:
        # update progress
        ct += 1
        update_state(task_handle, 'UPLOADING MEDIA (%d/%d)' % (ct, total))
        # get upload infos
        name, dao = i['srv']
        id_ = i['id']
        if name == 'event':
            item = dao.get(event_id)
        else:
            item = dao.get(event_id, id_)
        # get cur file
        field = i['field']
        path = getattr(item, field)
        if path.startswith('/'):
            # relative files
            path = base_path + path
            if os.path.isfile(path):
                filename = path.rsplit('/', 1)[1]
                file = UploadedFile(path, filename)
            else:
                file = ''  # remove current file setting
        else:
            # absolute links
            try:
                filename = UPLOAD_PATHS[name][field].rsplit('/', 1)[1]
                if is_downloadable(path):
                    r = requests.get(path, allow_redirects=True)
                    file = UploadedMemory(r.content, filename)
                else:
                    file = None
            except:
                file = None
        # don't update current file setting
        if file is None:
            continue
        # upload
        try:
            if file == '':
                raise Exception()
            key = UPLOAD_PATHS[name][field]
            if name == 'event':
                key = key.format(event_id=event_id)
            else:
                key = key.format(event_id=event_id, id=id_)
            print key
            new_url = upload(file, key)
        except Exception:
            print traceback.format_exc()
            new_url = None
        setattr(item, field, new_url)
        save_to_db(item, msg='Url updated')
    # clear queue
    UPLOAD_QUEUE = []
    return
Example #25
0
    def update_user(form, user_id, contacts_only_update=False):

        user = User.query.filter_by(id=user_id).first()
        user_detail = UserDetail.query.filter_by(user_id=user_id).first()

        if user.email != form['email']:
            record_activity('update_user_email',
                            user_id=user.id, old=user.email, new=form['email'])
        if user.email != form['email']:
            user.is_verified = False
            serializer = Helper.get_serializer()
            data = [form['email']]
            form_hash = serializer.dumps(data)
            link = url_for('admin.create_account_after_confirmation_view', hash=form_hash, _external=True)
            Helper.send_email_when_changes_email(user.email, form['email'])
            Helper.send_notif_when_changes_email(user, user.email, form['email'])
            Helper.send_email_confirmation(form, link)
            user.email = form['email']

        user_detail.contact = form['contact']
        if not contacts_only_update:
            user_detail.firstname = form['firstname']
            user_detail.lastname = form['lastname']

            if form.get('facebook', '').strip() != '':
                user_detail.facebook = 'https://facebook.com/' + form['facebook'].strip()
            else:
                user_detail.facebook = ''

            if form.get('twitter', '').strip() != '':
                user_detail.twitter = 'https://twitter.com/' + form['twitter'].strip()
            else:
                user_detail.twitter = ''

            if form.get('instagram', '').strip() != '':
                user_detail.instagram = 'https://instagram.com/' + form['instagram'].strip()
            else:
                user_detail.instagram = ''

            if form.get('google', '').strip() != '':
                user_detail.google = 'https://plus.google.com/' + form['google'].strip()
            else:
                user_detail.google = ''

            user_detail.details = form['details']
            avatar_img = form.get('avatar-img', None)
            if string_not_empty(avatar_img) and avatar_img:
                user_detail.avatar_uploaded = ""
                user_detail.thumbnail = ""
                user_detail.small = ""
                user_detail.icon = ""
                filename = '{}.png'.format(get_image_file_name())
                filepath = '{}/static/{}'.format(path.realpath('.'),
                                                 avatar_img[len('/serve_static/'):])
                # print "File path 1", filepath
                avatar_img_file = UploadedFile(filepath, filename)
                avatar_img_temp = upload(avatar_img_file, 'users/%d/avatar' % int(user_id))
                user_detail.avatar_uploaded = avatar_img_temp
                image_sizes = DataGetter.get_image_sizes_by_type(type='profile')
                if not image_sizes:
                    image_sizes = ImageSizes(full_width=150,
                                             full_height=150,
                                             icon_width=35,
                                             icon_height=35,
                                             thumbnail_width=50,
                                             thumbnail_height=50,
                                             type='profile')
                save_to_db(image_sizes, "Image Sizes Saved")
                filename = '{}.jpg'.format(get_image_file_name())
                filepath = '{}/static/{}'.format(path.realpath('.'),
                                                 avatar_img[len('/serve_static/'):])
                # print "File path 1", filepath
                avatar_img_file = UploadedFile(filepath, filename)

                temp_img_file = upload_local(avatar_img_file,
                                             'users/{user_id}/temp'.format(user_id=int(user_id)))
                temp_img_file = temp_img_file.replace('/serve_', '')

                basewidth = image_sizes.full_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.full_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                large_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_thumbnail_url = upload(
                    large_file,
                    UPLOAD_PATHS['user']['thumbnail'].format(
                        user_id=int(user_id)
                    ))

                basewidth = image_sizes.thumbnail_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.thumbnail_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_small_url = upload(
                    thumbnail_file,
                    UPLOAD_PATHS['user']['small'].format(
                        user_id=int(user_id)
                    ))

                basewidth = image_sizes.icon_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.icon_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                icon_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_icon_url = upload(
                    icon_file,
                    UPLOAD_PATHS['user']['icon'].format(
                        user_id=int(user_id)
                    ))
                shutil.rmtree(path='static/media/' + 'users/{user_id}/temp'.format(user_id=int(user_id)))
                user_detail.thumbnail = profile_thumbnail_url
                user_detail.small = profile_small_url
                user_detail.icon = profile_icon_url
        user, user_detail, save_to_db(user, "User updated")
        record_activity('update_user', user=user)
Example #26
0
    def add_session_to_event(request, event_id, state=None, use_current_user=True, no_name=False):
        """
        Session will be saved to database with proper Event id
        :param use_current_user:
        :param state:
        :param request: The request
        :param event_id: Session belongs to Event by event id
        """
        form = request.form
        slide_temp_url = form.get('slides_url')
        video_temp_url = form.get('video_url')
        audio_temp_url = form.get('audio_url')
        slide_file = ''
        video_file = ''
        audio_file = ''

        if slide_temp_url:
            slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

        if video_temp_url:
            video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

        if audio_temp_url:
            audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

        if not state:
            state = form.get('state', 'draft')

        event = DataGetter.get_event(event_id)

        new_session = Session(title=form.get('title', ''),
                              subtitle=form.get('subtitle', ''),
                              long_abstract=form.get('long_abstract', ''),
                              start_time=event.start_time,
                              end_time=event.start_time + timedelta(hours=1),
                              event_id=event_id,
                              short_abstract=form.get('short_abstract', ''),
                              level=form.get('level', ''),
                              comments=form.get('comments', ''),
                              language=form.get('language', ''),
                              state=state)

        if form.get('track', None) != "":
            new_session.track_id = form.get('track', None)

        if form.get('session_type', None) != "":
            new_session.session_type_id = form.get('session_type', None)

        if form.get('email', '') != '':
            speaker = Speaker.query.filter_by(email=form.get('email', '')).filter_by(event_id=event_id).first()
            speaker = save_speaker(
                request,
                event_id=event_id,
                speaker=speaker,
                user=login.current_user if use_current_user else None,
                no_name=no_name
            )

            new_session.speakers.append(speaker)

        save_to_db(new_session, "Session saved")

        if state == 'pending':
            trigger_new_session_notifications(new_session.id, event=event)

        if slide_temp_url != "" and slide_file:
            slide_url = upload(
                slide_file,
                UPLOAD_PATHS['sessions']['slides'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.slides = slide_url
        if audio_temp_url != "" and audio_file:
            audio_url = upload(
                audio_file,
                UPLOAD_PATHS['sessions']['audio'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.audio = audio_url
        if video_temp_url != "" and video_file:
            video_url = upload(
                video_file,
                UPLOAD_PATHS['sessions']['video'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.video = video_url
        record_activity('create_session', session=new_session, event_id=event_id)
        update_version(event_id, False, 'sessions_ver')

        invite_emails = form.getlist("speakers[email]")
        for index, email in enumerate(invite_emails):
            if not string_empty(email):
                new_invite = Invite(event_id=event_id, session_id=new_session.id)
                hash = random.getrandbits(128)
                new_invite.hash = "%032x" % hash
                save_to_db(new_invite, "Invite saved")

                link = url_for('event_sessions.invited_view', session_id=new_session.id, event_id=event_id,
                               _external=True)
                Helper.send_email_invitation(email, new_session.title, link)
                # If a user is registered by the email, send a notification as well
                user = DataGetter.get_user_by_email(email, no_flash=True)
                if user:
                    cfs_link = url_for('event_detail.display_event_cfs', identifier=event.identifier)
                    Helper.send_notif_invite_papers(user, event.name, cfs_link, link)
Example #27
0
    def edit_session(request, session, speaker=None):
        with db.session.no_autoflush:
            form = request.form
            event_id = session.event_id

            slide_temp_url = form.get('slides_url')
            video_temp_url = form.get('video_url')
            audio_temp_url = form.get('audio_url')
            slide_file = ''
            video_file = ''
            audio_file = ''

            if slide_temp_url and slide_temp_url != session.slides:
                slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

            if video_temp_url and video_temp_url != session.video:
                video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

            if audio_temp_url and audio_temp_url != session.audio:
                audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

            form_state = form.get('state', 'draft')

            if slide_temp_url != "" and slide_temp_url != session.slides and slide_file:
                slide_temp_url = upload(slide_file,
                                        UPLOAD_PATHS['sessions']['slides'].format(
                                            event_id=int(event_id), id=int(session.id)
                                        ))
            if audio_temp_url != "" and audio_temp_url != session.audio and audio_file:
                audio_temp_url = upload(
                    audio_file,
                    UPLOAD_PATHS['sessions']['audio'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))
            if video_temp_url != "" and video_temp_url != session.video and video_file:
                video_temp_url = upload(
                    video_file,
                    UPLOAD_PATHS['sessions']['video'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))

            session.slides = slide_temp_url
            session.audio = audio_temp_url
            session.video = video_temp_url

            if form_state == 'pending' and session.state != 'pending' and \
                    session.state != 'accepted' and session.state != 'rejected' and session.state != 'confirmed':
                session.state = 'pending'
                trigger_new_session_notifications(session.id, event_id=event_id)

            session.title = form.get('title', '')
            session.subtitle = form.get('subtitle', '')
            session.long_abstract = form.get('long_abstract', '')
            session.short_abstract = form.get('short_abstract', '')
            session.level = form.get('level', '')
            session.track_id = form.get('track', None) if form.get('track', None) != "" else  None
            session.session_type_id = form.get('session_type', None) if form.get('session_type', None) != "" else None

            existing_speaker_ids = form.getlist("speakers[]")
            current_speaker_ids = []
            existing_speaker_ids_by_email = []

            save_to_db(session, 'Session Updated')

            if speaker:
                save_speaker(request, event_id=event_id, speaker=speaker)

            for existing_speaker in DataGetter.get_speaker_by_email(form.get("email")).all():
                existing_speaker_ids_by_email.append(str(existing_speaker.id))

            for current_speaker in session.speakers:
                current_speaker_ids.append(str(current_speaker.id))

            for current_speaker_id in current_speaker_ids:
                if current_speaker_id \
                     not in existing_speaker_ids and current_speaker_id not in existing_speaker_ids_by_email:
                    current_speaker = DataGetter.get_speaker(current_speaker_id)
                    session.speakers.remove(current_speaker)
                    db.session.commit()

            for existing_speaker_id in existing_speaker_ids:
                existing_speaker = DataGetter.get_speaker(existing_speaker_id)
                if existing_speaker not in session.speakers:
                    session.speakers.append(existing_speaker)
                    db.session.commit()

            record_activity('update_session', session=session, event_id=event_id)
            update_version(event_id, False, "sessions_ver")
Example #28
0
 def add_session_media(request, media):
     media_file = DataManager.get_files_from_request(request, media)
     url = upload(media_file, UPLOAD_PATHS['temp']['event'].format(uuid=uuid4()))
     return url
Example #29
0
    def add_session_to_event(request, event_id, state=None, use_current_user=True):
        """
        Session will be saved to database with proper Event id
        :param use_current_user:
        :param state:
        :param request: The request
        :param event_id: Session belongs to Event by event id
        """
        form = request.form
        slide_temp_url = form.get('slides_url')
        video_temp_url = form.get('video_url')
        audio_temp_url = form.get('audio_url')
        slide_file = ''
        video_file = ''
        audio_file = ''

        if slide_temp_url:
            slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

        if video_temp_url:
            video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

        if audio_temp_url:
            audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

        if not state:
            state = form.get('state', 'draft')

        event = DataGetter.get_event(event_id)

        new_session = Session(title=form.get('title', ''),
                              subtitle=form.get('subtitle', ''),
                              long_abstract=form.get('long_abstract', ''),
                              start_time=event.start_time,
                              end_time=event.start_time + timedelta(hours=1),
                              event_id=event_id,
                              short_abstract=form.get('short_abstract', ''),
                              level=form.get('level', ''),
                              comments=form.get('comments', ''),
                              language=form.get('language', ''),
                              state=state)

        if form.get('track', None) != "":
            new_session.track_id = form.get('track', None)

        if form.get('session_type', None) != "":
            new_session.session_type_id = form.get('session_type', None)

        speaker = Speaker.query.filter_by(email=form.get('email', '')).filter_by(event_id=event_id).first()
        speaker = save_speaker(
            request,
            event_id=event_id,
            speaker=speaker,
            user=login.current_user if use_current_user else None
        )

        new_session.speakers.append(speaker)

        save_to_db(new_session, "Session saved")

        if state == 'pending':
            trigger_new_session_notifications(new_session.id, event=event)

        if slide_temp_url != "" and slide_file:
            slide_url = upload(
                slide_file,
                UPLOAD_PATHS['sessions']['slides'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.slides = slide_url
        if audio_temp_url != "" and audio_file:
            audio_url = upload(
                audio_file,
                UPLOAD_PATHS['sessions']['audio'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.audio = audio_url
        if video_temp_url != "" and video_file:
            video_url = upload(
                video_file,
                UPLOAD_PATHS['sessions']['video'].format(
                    event_id=int(event_id), id=int(new_session.id)
                ))
            new_session.video = video_url

        record_activity('create_session', session=new_session, event_id=event_id)
        update_version(event_id, False, 'sessions_ver')

        invite_emails = form.getlist("speakers[email]")
        for index, email in enumerate(invite_emails):
            if not string_empty(email):
                new_invite = Invite(event_id=event_id, session_id=new_session.id)
                hash = random.getrandbits(128)
                new_invite.hash = "%032x" % hash
                save_to_db(new_invite, "Invite saved")

                link = url_for('event_sessions.invited_view', session_id=new_session.id, event_id=event_id,
                               _external=True)
                Helper.send_email_invitation(email, new_session.title, link)
                # If a user is registered by the email, send a notification as well
                user = DataGetter.get_user_by_email(email, no_flash=True)
                if user:
                    cfs_link = url_for('event_detail.display_event_cfs', identifier=event.identifier)
                    Helper.send_notif_invite_papers(user, event.name, cfs_link, link)
Example #30
0
    def update_user(form, user_id, contacts_only_update=False):

        user = User.query.filter_by(id=user_id).first()
        user_detail = UserDetail.query.filter_by(user_id=user_id).first()

        if user.email != form['email']:
            record_activity('update_user_email',
                            user_id=user.id, old=user.email, new=form['email'])
        if user.email != form['email']:
            user.is_verified = False
            serializer = Helper.get_serializer()
            data = [form['email']]
            form_hash = serializer.dumps(data)
            link = url_for('admin.create_account_after_confirmation_view', hash=form_hash, _external=True)
            Helper.send_email_when_changes_email(user.email, form['email'])
            Helper.send_notif_when_changes_email(user, user.email, form['email'])
            Helper.send_email_confirmation(form, link)
            user.email = form['email']

        user_detail.contact = form['contact']
        if not contacts_only_update:
            user_detail.firstname = form['firstname']
            user_detail.lastname = form['lastname']

            if form.get('facebook', '').strip() != '':
                user_detail.facebook = 'https://facebook.com/' + form['facebook'].strip()
            else:
                user_detail.facebook = ''

            if form.get('twitter', '').strip() != '':
                user_detail.twitter = 'https://twitter.com/' + form['twitter'].strip()
            else:
                user_detail.twitter = ''

            if form.get('instagram', '').strip() != '':
                user_detail.instagram = 'https://instagram.com/' + form['instagram'].strip()
            else:
                user_detail.instagram = ''

            if form.get('google', '').strip() != '':
                user_detail.google = 'https://plus.google.com/' + form['google'].strip()
            else:
                user_detail.google = ''

            user_detail.details = form['details']
            avatar_img = form.get('avatar-img', None)
            if string_not_empty(avatar_img) and avatar_img:
                user_detail.avatar_uploaded = ""
                user_detail.thumbnail = ""
                user_detail.small = ""
                user_detail.icon = ""
                filename = '{}.png'.format(get_image_file_name())
                filepath = '{}/static/{}'.format(path.realpath('.'),
                                                 avatar_img[len('/serve_static/'):])
                # print "File path 1", filepath
                avatar_img_file = UploadedFile(filepath, filename)
                avatar_img_temp = upload(avatar_img_file, 'users/%d/avatar' % int(user_id))
                user_detail.avatar_uploaded = avatar_img_temp
                image_sizes = DataGetter.get_image_sizes_by_type(type='profile')
                if not image_sizes:
                    image_sizes = ImageSizes(full_width=150,
                                             full_height=150,
                                             icon_width=35,
                                             icon_height=35,
                                             thumbnail_width=50,
                                             thumbnail_height=50,
                                             type='profile')
                save_to_db(image_sizes, "Image Sizes Saved")
                filename = '{}.jpg'.format(get_image_file_name())
                filepath = '{}/static/{}'.format(path.realpath('.'),
                                                 avatar_img[len('/serve_static/'):])
                # print "File path 1", filepath
                avatar_img_file = UploadedFile(filepath, filename)

                temp_img_file = upload_local(avatar_img_file,
                                             'users/{user_id}/temp'.format(user_id=int(user_id)))
                temp_img_file = temp_img_file.replace('/serve_', '')

                basewidth = image_sizes.full_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.full_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                large_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_thumbnail_url = upload(
                    large_file,
                    UPLOAD_PATHS['user']['thumbnail'].format(
                        user_id=int(user_id)
                    ))

                basewidth = image_sizes.thumbnail_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.thumbnail_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                thumbnail_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_small_url = upload(
                    thumbnail_file,
                    UPLOAD_PATHS['user']['small'].format(
                        user_id=int(user_id)
                    ))

                basewidth = image_sizes.icon_width
                img = Image.open(temp_img_file)
                hsize = image_sizes.icon_height
                img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
                img.save(temp_img_file)
                file_name = temp_img_file.rsplit('/', 1)[1]
                icon_file = UploadedFile(file_path=temp_img_file, filename=file_name)
                profile_icon_url = upload(
                    icon_file,
                    UPLOAD_PATHS['user']['icon'].format(
                        user_id=int(user_id)
                    ))
                shutil.rmtree(path='static/media/' + 'users/{user_id}/temp'.format(user_id=int(user_id)))
                user_detail.thumbnail = profile_thumbnail_url
                user_detail.small = profile_small_url
                user_detail.icon = profile_icon_url
        user, user_detail, save_to_db(user, "User updated")
        record_activity('update_user', user=user)
Example #31
0
    def edit_session(request, session, speaker=None):
        with db.session.no_autoflush:
            form = request.form
            event_id = session.event_id

            slide_temp_url = form.get('slides_url')
            video_temp_url = form.get('video_url')
            audio_temp_url = form.get('audio_url')
            slide_file = ''
            video_file = ''
            audio_file = ''

            if slide_temp_url and slide_temp_url != session.slides:
                slide_file = UploadedFile(get_path_of_temp_url(slide_temp_url), slide_temp_url.rsplit('/', 1)[1])

            if video_temp_url and video_temp_url != session.video:
                video_file = UploadedFile(get_path_of_temp_url(video_temp_url), video_temp_url.rsplit('/', 1)[1])

            if audio_temp_url and audio_temp_url != session.audio:
                audio_file = UploadedFile(get_path_of_temp_url(audio_temp_url), audio_temp_url.rsplit('/', 1)[1])

            form_state = form.get('state', 'draft')

            if slide_temp_url != "" and slide_temp_url != session.slides and slide_file:
                slide_temp_url = upload(slide_file,
                                        UPLOAD_PATHS['sessions']['slides'].format(
                                            event_id=int(event_id), id=int(session.id)
                                        ))
            if audio_temp_url != "" and audio_temp_url != session.audio and audio_file:
                audio_temp_url = upload(
                    audio_file,
                    UPLOAD_PATHS['sessions']['audio'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))
            if video_temp_url != "" and video_temp_url != session.video and video_file:
                video_temp_url = upload(
                    video_file,
                    UPLOAD_PATHS['sessions']['video'].format(
                        event_id=int(event_id), id=int(session.id)
                    ))

            session.slides = slide_temp_url
            session.audio = audio_temp_url
            session.video = video_temp_url

            if form_state == 'pending' and session.state != 'pending' and \
                    session.state != 'accepted' and session.state != 'rejected' and session.state != 'confirmed':
                session.state = 'pending'
                trigger_new_session_notifications(session.id, event_id=event_id)

            session.title = form.get('title', '')
            session.subtitle = form.get('subtitle', '')
            session.long_abstract = form.get('long_abstract', '')
            session.short_abstract = form.get('short_abstract', '')
            session.level = form.get('level', '')
            session.track_id = form.get('track', None) if form.get('track', None) != "" else  None
            session.session_type_id = form.get('session_type', None) if form.get('session_type', None) != "" else None

            existing_speaker_ids = form.getlist("speakers[]")
            current_speaker_ids = []
            existing_speaker_ids_by_email = []

            save_to_db(session, 'Session Updated')

            if speaker:
                save_speaker(request, event_id=event_id, speaker=speaker)

            for existing_speaker in DataGetter.get_speaker_by_email(form.get("email")).all():
                existing_speaker_ids_by_email.append(str(existing_speaker.id))

            for current_speaker in session.speakers:
                current_speaker_ids.append(str(current_speaker.id))

            for current_speaker_id in current_speaker_ids:
                if current_speaker_id \
                     not in existing_speaker_ids and current_speaker_id not in existing_speaker_ids_by_email:
                    current_speaker = DataGetter.get_speaker(current_speaker_id)
                    session.speakers.remove(current_speaker)
                    db.session.commit()

            for existing_speaker_id in existing_speaker_ids:
                existing_speaker = DataGetter.get_speaker(existing_speaker_id)
                if existing_speaker not in session.speakers:
                    session.speakers.append(existing_speaker)
                    db.session.commit()

            record_activity('update_session', session=session, event_id=event_id)
            update_version(event_id, False, "sessions_ver")