Beispiel #1
0
def add():

    form = forms.FeatureForm()
    if form.validate_on_submit():

        try:
            print(form.target_date.data)

            models.Feature.create(
                user = g.user._get_current_object(),
                title =form.title.data,
                description = form.description.data,
                client = form.client.data,
                client_priority= form.priority.data,
                target_date = form.target_date.data,
                ticket_url = form.ticket_url.data,
                product_area = form.product_area.data,
                percent_complete = form.percent_complete.data

            )

        except IntegrityError:
            print('You are seeing an IntegrityError')
            #see if the prioirty is the problem
            num = int(form.priority.data)
            cust_name = form.client.data
            #get problem record
            records = models.Feature.select().where(models.Feature.client== cust_name)
             #need to update the records for priorities greater than number
            for record in records:
                print(record.client_priority, type(record.client_priority))
                if record.client_priority >= num:
                    with DATABASE.transaction():
                        record.client_priority += 1
                        record.save()
                        print('record saved')

                    print('The new priority is ', record.client_priority)
            with DATABASE.transaction():
                models.Feature.create(
                user = g.user._get_current_object(),
                title =form.title.data,
                description = form.description.data,
                client = form.client.data,
                client_priority= str(num),
                target_date = form.target_date.data,
                ticket_url = form.ticket_url.data,
                product_area = form.product_area.data,
                percent_complete = form.percent_complete.data
                )





        return render_template('add.html', form=form)
    return render_template('add.html', form=form)
def image_markers(image_id, stack_id, project_id):
    with DATABASE.transaction():
        project_stack = models.ProjectStack.get(models.ProjectStack.project == project_id,
                                                models.ProjectStack.stack == stack_id)
        stack_image = models.StackImage.get(models.StackImage.stack == stack_id,
                                            models.StackImage.image == image_id)
        user = models.AppUser.get(models.AppUser.id == g.user_id)
        markers = (Marker.select().where(
                        Marker.app_user == g.user_id,
                        Marker.stack_image == stack_image.id,
                        Marker.project_stack == project_stack.id)
                    )
    return jsonify({ 'markers': [marker.serialized for marker in markers] })
def save_image_markers():
    try:
        with DATABASE.transaction():
            request_obj = request.get_json()
            images = (request_obj['images'])
            stack_id = request_obj['stackId']
            project_id = request_obj['projectId']
            no_markers_placed = request_obj['noMarkersPlaced']
            project_stack = models.ProjectStack.get(
                    models.ProjectStack.project == project_id,
                    models.ProjectStack.stack == stack_id
                )
            saved_marker_count = 0

            try:
                old_top_of_stack = ProjectStackDatum.get(
                            ProjectStackDatum.data_type == "top image",
                            ProjectStackDatum.user == g.user_id,
                            ProjectStackDatum.project_stack == project_stack.id
                        )
                old_top_of_stack.delete_instance()
            except ProjectStackDatum.DoesNotExist:
                pass
            no_marker_stack_data = ProjectStackDatum.select().where(
                        ProjectStackDatum.data_type == "project stack marker",
                        ProjectStackDatum.value == "no markers placed",
                        ProjectStackDatum.user == g.user_id,
                        ProjectStackDatum.project_stack == project_stack.id
                    )
            for datum in no_marker_stack_data:
                datum.delete_instance()

            if no_markers_placed:
                try:
                    ProjectStackDatum.create(
                        data_type = "project stack marker",
                        value = "no markers placed",
                        user = g.user_id,
                        project_stack = project_stack.id
                    )
                except Exception:
                    return jsonify({ 'message': 'Saving markers failed' }), 500

            for index, image in enumerate(images):
                stack_image = models.StackImage.get(
                                models.StackImage.stack == stack_id,
                                models.StackImage.image == image['id']
                            )

                try:
                    if image['isTopOfStack']:
                        ProjectStackDatum.create(
                                    data_type = "top image",
                                    value = str(index),   # "top image" property is zero-indexed
                                    user = g.user_id,
                                    project_stack = project_stack.id
                                )
                except KeyError: # this will hit if image is not top of probe, which is nbd
                    pass
                except Exception:
                    return jsonify({ 'message': 'Saving markers failed' }), 500
                old_markers = (models.Marker.select().where(
                                models.Marker.app_user == g.user_id,
                                models.Marker.stack_image == stack_image.id,
                                models.Marker.project_stack == project_stack.id)
                            )
                for marker in old_markers:
                    marker.delete_instance()
                try:
                    for marker in image['markers']:
                        mark = models.Marker.create(
                            image = image,
                            app_user = g.user_id,
                            stack_image = stack_image,
                            project_stack = project_stack,
                            marker_type = marker['markerType'],
                            x_percent = marker['xPercent'],
                            y_percent = marker['yPercent']
                        )
                        saved_marker_count += 1    
                        if marker['markerType'] == 'neuron':
                            mark.x_crosshair_percent = marker['xLengthPercent']
                            mark.y_crosshair_percent = marker['yHeightPercent']
                            mark.save()
                except KeyError:
                    pass
        return jsonify({ 'message': '{0} markers saved'.format(saved_marker_count) })
    except ValueError:
        return jsonify({ 'message': 'Saving markers failed.' })