Пример #1
0
def delete_all(target_set_id):
    # remove target set from current project
    current_project.update(pull__target_sets=target_set_id)
    # delete target set from mongo
    TargetSet.objects(id=target_set_id).delete()

    return redirect(url_for('targets.manage'))
Пример #2
0
def manage():
    if request.method == 'POST':
        # Handle the primary targets first
        primary_file = request.files['primary_file']
        alt_file = request.files['alt_file']
        name = request.form['name']
        if not name or name == '':
            flash('You must specify a unique target set name.')
            return render_template('manage_targets.html')

        primary_type = request.form['primary_type']
        alt_type  = 'text' if request.form['alt_type']=='None' else request.form['alt_type']
        
        target_set = TargetSet(name=name)
        target_list = launch_experiment.generate_target_blob(current_user.aws_bucket_name,
                                                             current_user.access_key_id,
                                                             current_user.secret_access_key,
                                                             str(datetime.date.today()),
                                                             primary_file,
                                                             primary_type,
                                                             alt_file,
                                                             alt_type)['target_blob']
        for target in target_list:
            target = Target(target_id = target['target_id'],
                            primary_type = target['primary_type'],
                            primary_description = target['primary_description'],
                            alt_type = target['alt_type'],
                            alt_description = target['alt_description'])
            target.save()
            target_set.targets.append(target)
        # Save the target_set
        target_set.save()
        current_project.add_target_set(target_set)
    # Always return this page
    return render_template('manage_targets.html')
Пример #3
0
def manage():
    if request.method == 'POST':
        # Handle the zip file case first
        has_zip_file = False
        hosted_zip_file = request.files['hosted_zip_file']
        hosted_zip_file.seek(0, os.SEEK_END)
        if "hosted_zip_file" in request.files.keys() and hosted_zip_file.tell()!=0:
            has_zip_file = True
            hosted_zip_file = request.files['hosted_zip_file']        

            # Dictionary mapping filename to object
            target_file_dict = zipfile_to_dictionary(hosted_zip_file)
            # Very basic consistency check
            #if len(target_list) != len(target_file_dict):
            #    flash("Inconsistent number of targets to images")
            #    return redirect(url_for('project.manage_targets'))


        hosted_csv_file = request.files['hosted_csv_file']
        
        # Parse the csv file into a list of dictionaries, one for each row
        target_list = csv_to_dict(hosted_csv_file, ["target_id", "primary_type", "alt_description"])

        # Create target set
        target_set = TargetSet(name=hosted_csv_file.filename)    

        for target in target_list:
                # Get file object
            if has_zip_file == True:
                target_file = target_file_dict[target["target_id"]]
                bucket = get_AWS_bucket()
                target_url = upload_to_S3(bucket, str(current_project.id)+"_"+target["target_id"], StringIO(target_file))
                target = Target( target_id = target["target_id"],
                                 primary_type = target["primary_type"],
                                 primary_description = target_url,
                                 alt_type = "text",
                                 alt_description = target["alt_description"])
            else:
                target = Target( target_id = target["target_id"],
                                 primary_type = target["primary_type"],
                                 primary_description = target["target_id"],
                                 alt_type = "text",
                                 alt_description = target["alt_description"])
            target.save()
            target_set.targets.append(target)
        # Save the target_set
        target_set.save()
        current_project.add_target_set(target_set)
            
    # Always return this page
    return render_template('manage_targets.html')
Пример #4
0
def delete_selected(target_set_id):
    # getting all the targets that the user selects
    checked_items = request.values.getlist("targets")
    # loop through specified targets
    for target_id in checked_items:
        # get target from target id
        target = Target.objects(id = target_id)[0]
        # pull target from target set
        TargetSet.objects(id=target_set_id).update(pull__targets=target)
        # delete target object from mongo
        target.delete()

    # get updated target set
    target_set = TargetSet.objects(id=target_set_id)[0]

    return redirect(url_for('targets.edit', target_set_id=target_set.id))
Пример #5
0
def edit_target_set_name(target_set_id):
    # get current target set
    target_set = TargetSet.objects(id=target_set_id)[0]
    # get form
    target_set_form = TargetSetForm(request.form)

    if target_set_form.validate_on_submit():
        # get target id from form
        name = target_set_form.name.data
        # check if target id has not been set
        if len(name) > 0:
            # update name
            target_set.update(set__name=name)
            # need to redefine target set before rendering template to update changes
            target_set = TargetSet.objects(id=target_set_id)[0]
            # create new form object for editing targets
            # return render_template("edit_target_set.html", form=form, target_set_form=TargetSetForm(obj=target_set), target_set=target_set)       

    return redirect(url_for('targets.edit', target_set_id=target_set_id))
Пример #6
0
def edit(target_set_id):
    # get current target set
    target_set = TargetSet.objects(id=target_set_id)[0]
    # get form
    form = ManageTargets()
    # initialize the target types
    form.target_type.choices = [(1,'text'),(2,'image')]

    # edit target form
    if form.validate_on_submit():
        # get target id from form
        target_id = form.target_id.data
        # check if target id has not been set
        if target_id != 'none':
            # get the target to be edited
            target = Target.objects(id = target_id)[0]
            # update primary/alt descriptions
            target.update(set__primary_description=form.primary_description.data)
            target.update(set__alt_description=form.alt_description.data)
            # need to redefine target set before rendering template to update changes
            target_set = TargetSet.objects(id=target_set_id)[0]
            return render_template("edit_target_set.html", form=form, target_set_form=TargetSetForm(obj=target_set), target_set=target_set)       

    return render_template("edit_target_set.html", form=form, target_set_form=TargetSetForm(obj=target_set), target_set=target_set)