コード例 #1
0
ファイル: ajax.py プロジェクト: usnistgov/core_curate_app
def _start_curate_post(request):
    """Start curate POST request.

    Args:
        request:

    Returns:

    """
    template_id = str(request.POST["hidden_value"])
    selected_option = request.POST["curate_form"]
    user_id = str(request.user.id)
    if selected_option == "new" or selected_option == "upload":
        if selected_option == "new":
            new_form = users_forms.NewForm(request.POST)
            if new_form.is_valid():
                name = new_form.data["document_name"]
                curate_data_structure = CurateDataStructure(
                    user=user_id, template=template_id, name=name)
            else:
                raise CurateAjaxError(
                    "An error occurred during the validation " +
                    get_form_label())
        else:
            upload_form = users_forms.UploadForm(request.POST, request.FILES)
            if upload_form.is_valid():
                xml_file = request.FILES["file"]
                xml_data = read_xsd_file(xml_file)
                well_formed = is_well_formed_xml(xml_data)
                name = xml_file.name
                if not well_formed:
                    raise CurateAjaxError(
                        "An error occurred during the file upload: the file is "
                        "not well formed XML")
                else:
                    curate_data_structure = CurateDataStructure(
                        user=user_id,
                        template=template_id,
                        name=name,
                        form_string=xml_data,
                    )
            else:
                raise CurateAjaxError(
                    "An error occurred during the validation " +
                    get_form_label())

        curate_data_structure_api.upsert(curate_data_structure, request.user)
    else:
        open_form = users_forms.OpenForm(request.POST)
        curate_data_structure = curate_data_structure_api.get_by_id(
            open_form.data["forms"], request.user)

    url = reverse("core_curate_enter_data", args=(curate_data_structure.id, ))
    return HttpResponse(url)
コード例 #2
0
ファイル: ajax.py プロジェクト: cdcs-repos/core_curate_app
def _start_curate_get(request):
    """Start curate GET request.

    Args:
        request:

    Returns:

    """
    try:
        context_params = dict()
        template_id = request.GET['template_id']
        template = loader.get_template(
            'core_curate_app/user/curate_start.html')

        open_form = users_forms.OpenForm(
            forms=curate_data_structure_api.
            get_all_by_user_id_and_template_id_with_no_data(
                str(request.user.id), template_id))
        new_form = users_forms.NewForm()
        upload_form = users_forms.UploadForm()
        hidden_form = users_forms.HiddenFieldsForm(hidden_value=template_id)
        context_params['new_form'] = new_form
        context_params['open_form'] = open_form
        context_params['upload_form'] = upload_form
        context_params['hidden_form'] = hidden_form
        context = {}
        context.update(request)
        context.update(context_params)
        return HttpResponse(json.dumps({'template': template.render(context)}),
                            content_type='application/javascript')
    except Exception as e:
        raise exceptions.CurateAjaxError('Error occurred during the ' +
                                         get_form_label() + ' display.')
コード例 #3
0
ファイル: ajax.py プロジェクト: usnistgov/core_curate_app
def cancel_form(request):
    """Cancel current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST["id"]
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id, request.user)
        # unlock from database
        if curate_data_structure.data is not None:
            lock_api.remove_lock_on_object(curate_data_structure.data,
                                           request.user)
        curate_data_structure_api.delete(curate_data_structure, request.user)

        # add success message
        messages.add_message(
            request,
            messages.SUCCESS,
            get_form_label().capitalize() + " deleted with success.",
        )

        return HttpResponse(json.dumps({}),
                            content_type="application/javascript")
    except Exception as e:
        return HttpResponseBadRequest(
            "An unexpected error has occured: %s" % str(e).replace('"', "'"),
            content_type="application/javascript",
        )
コード例 #4
0
ファイル: ajax.py プロジェクト: cdcs-repos/core_curate_app
def cancel_form(request):
    """Cancel current form.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST['id']
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id)
        # unlock from database
        if curate_data_structure.data is not None:
            lock_api.remove_lock_on_object(curate_data_structure.data,
                                           request.user)
        curate_data_structure_api.delete(curate_data_structure)

        # add success message
        messages.add_message(
            request, messages.SUCCESS,
            get_form_label().capitalize() + ' deleted with success.')

        return HttpResponse(json.dumps({}),
                            content_type='application/javascript')
    except:
        return HttpResponseBadRequest()
コード例 #5
0
def _get_forms(form_ids, request_user_is_superuser, request_user_id):
    """ Get all the forms from the list of ids.

    Args:
        form_ids:
        request_user_is_superuser:
        request_user_id:

    Returns:
        list form
    """

    list_form = []
    try:
        for form_id in form_ids:
            # Get the form
            form = curate_data_structure_api.get_by_id(form_id)

            # Check the rights
            _check_rights_document(request_user_is_superuser, request_user_id,
                                   form.user)

            list_form.append(form)
    except DoesNotExist:
        raise Exception('It seems a ' + get_form_label() +
                        ' is missing. Please refresh the page.')
    except Exception, e:
        raise Exception(e.message)
コード例 #6
0
ファイル: forms.py プロジェクト: cdcs-repos/core_curate_app
class CancelChangesForm(forms.Form):
    """ Cancel changes form.
    """
    CANCEL_CHOICES = [('revert',
                       'Revert to my previously Saved ' + get_form_label()),
                      ('return', 'Return to Add Resources')]

    cancel = forms.ChoiceField(label='',
                               choices=CANCEL_CHOICES,
                               widget=forms.RadioSelect())
コード例 #7
0
ファイル: forms.py プロジェクト: usnistgov/core_curate_app
class CancelChangesForm(forms.Form):
    """Cancel changes form."""

    CANCEL_CHOICES = [
        ("revert", "Revert to my previously Saved " + get_form_label()),
        ("return", "Return to Add Resources"),
    ]

    cancel = forms.ChoiceField(label="",
                               choices=CANCEL_CHOICES,
                               widget=forms.RadioSelect())
コード例 #8
0
def _check_owner(request, accessed_object):
    """Check if the object can be accessed by the user.

    Args:
        request:
        accessed_object:

    Returns:

    """
    # Super user can access everything
    if not request.user.is_superuser:
        # If not the owner of the accessed object
        if str(request.user.id) != accessed_object.user:
            raise CoreError("You are not the owner of the " +
                            get_form_label() +
                            " that you are trying to access")
コード例 #9
0
ファイル: ajax.py プロジェクト: cdcs-repos/core_curate_app
def save_form(request):
    """Save the current form in data base. Converts it to XML format first.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST['id']
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id)

        # unlock from database
        if curate_data_structure.data is not None:
            lock_api.remove_lock_on_object(curate_data_structure.data,
                                           request.user)

        # generate xml data
        xml_data = render_xml(
            curate_data_structure.data_structure_element_root)

        # update curate data structure data
        curate_data_structure.form_string = xml_data

        # save data structure
        curate_data_structure_api.upsert(curate_data_structure)

        # add success message
        message = Message(
            messages.SUCCESS,
            get_form_label().capitalize() + ' saved with success.')

        return HttpResponse(json.dumps({
            'message': message.message,
            'tags': message.tags
        }),
                            content_type='application/json')
    except:
        return HttpResponseBadRequest()
コード例 #10
0
ファイル: ajax.py プロジェクト: usnistgov/core_curate_app
def save_form(request):
    """Save the current form in data base. Converts it to XML format first.

    Args:
        request:

    Returns:

    """
    try:
        # get curate data structure
        curate_data_structure_id = request.POST["id"]
        curate_data_structure = curate_data_structure_api.get_by_id(
            curate_data_structure_id, request.user)

        # generate xml data
        xml_data = render_xml(
            request, curate_data_structure.data_structure_element_root)

        # update curate data structure data
        curate_data_structure.form_string = xml_data

        # save data structure
        curate_data_structure_api.upsert(curate_data_structure, request.user)

        # add success message
        message = Message(
            messages.SUCCESS,
            get_form_label().capitalize() + " saved with success.")

        return HttpResponse(
            json.dumps({
                "message": message.message,
                "tags": message.tags
            }),
            content_type="application/json",
        )
    except Exception as e:
        return HttpResponseBadRequest(escape(str(e)))
コード例 #11
0
ファイル: ajax.py プロジェクト: usnistgov/core_curate_app
def _start_curate_get(request):
    """Start curate GET request.

    Args:
        request:

    Returns:

    """
    try:
        context_params = dict()
        template_id = request.GET["template_id"]
        template = loader.get_template(
            "core_curate_app/user/curate_start.html")

        open_form = users_forms.OpenForm(
            forms=curate_data_structure_api.
            get_all_by_user_id_and_template_id_with_no_data(
                request.user.id, template_id))
        new_form = users_forms.NewForm()
        upload_form = users_forms.UploadForm()
        hidden_form = users_forms.HiddenFieldsForm(hidden_value=template_id)
        context_params["new_form"] = new_form
        context_params["open_form"] = open_form
        context_params["upload_form"] = upload_form
        context_params["hidden_form"] = hidden_form
        context_params["request"] = request
        context = {}

        context.update(context_params)
        return HttpResponse(
            json.dumps({"template": template.render(context)}),
            content_type="application/javascript",
        )
    except Exception as e:
        logger.error(str(e))
        raise exceptions.CurateAjaxError("Error occurred during the " +
                                         get_form_label() + " display.")
コード例 #12
0
Menu.items["dashboard"] = []
Menu.add_item(
    "dashboard",
    MenuItem("My Workspaces",
             reverse('core_dashboard_workspaces'),
             icon="folder-open"))

Menu.add_item(
    "dashboard",
    MenuItem("My {0}s".format(get_data_label().title()),
             reverse('core_dashboard_records'),
             icon="file-text-o"))

Menu.add_item(
    "dashboard",
    MenuItem("My {0}s".format(get_form_label().title()),
             reverse('core_dashboard_forms'),
             icon="file-text-o"))

Menu.add_item(
    "dashboard",
    MenuItem("My Files", reverse('core_dashboard_files'), icon="file"))

Menu.add_item(
    "help", MenuItem("API Documentation", reverse("swagger_view"),
                     icon="cogs"))

Menu.add_item(
    "help",
    MenuItem("Contact", reverse("core_website_app_contact"), icon="envelope"))
コード例 #13
0
Menu.add_item(
    "composer", MenuItem("My Types", reverse("core_dashboard_types"), require_authentication=True)
)

Menu.items["dashboard"] = []
Menu.add_item(
    "dashboard", MenuItem("My Workspaces", reverse('core_dashboard_workspaces'), icon="folder-open")
)

Menu.add_item(
    "dashboard", MenuItem("My {0}s".format(get_data_label().title()), reverse('core_dashboard_records'),
                          icon="file-text-o")
)

Menu.add_item(
    "dashboard", MenuItem("My {0}s".format(get_form_label().title()), reverse('core_dashboard_forms'), icon="file-text-o")
)

Menu.add_item(
    "dashboard", MenuItem("My Files", reverse('core_dashboard_files'), icon="file")
)

Menu.add_item(
    "help", MenuItem("API Documentation", reverse("swagger_view"), icon="cogs")
)

Menu.add_item(
    "help", MenuItem("Contact", reverse("core_website_app_contact"), icon="envelope")
)

Menu.add_item(
コード例 #14
0
)
JS_EDIT_RECORD = "core_dashboard_common_app/user/js/list/edit_record.js"
USER_VIEW_RECORD_RAW = "core_dashboard_common_app/user/js/list/view_record.raw.js"
JS_VIEW_RECORD = "core_dashboard_common_app/common/js/list/view_record.js"

# Admin
JS_ADMIN_COUNT_CHECK = "core_dashboard_common_app/admin/js/count_checked.js"
JS_ADMIN_RESET_CHECKBOX = "core_dashboard_common_app/admin/js/reset_checkbox.js"
JS_ADMIN_SELECT_ALL = "core_dashboard_common_app/admin/js/select_all.js"
JS_ADMIN_SELETED_ELEMENT = (
    "core_dashboard_common_app/admin/js/get_selected_document_admin.js"
)
JS_ADMIN_INIT_MENU = "core_dashboard_common_app/admin/js/init_admin_menu.js"
JS_INIT_ADMIN = "core_dashboard_common_app/admin/js/init_admin.js"
JS_ADMIN_ACTION_DASHBOARD = "core_dashboard_common_app/admin/js/action_dashboard.js"
JS_ADMIN_TABLE = "core_dashboard_common_app/admin/js/admin_table.js"
ADMIN_VIEW_RECORD_RAW = "core_dashboard_common_app/admin/js/list/view_record.raw.js"

FUNCTIONAL_OBJECT_ENUM = Enum(
    "FUNCTIONAL_OBJECT_ENUM",
    {
        "RECORD": get_data_label(),
        "FORM": get_form_label(),
        "TEMPLATE": "template",
        "TYPE": "type",
        "FILE": "file",
        "QUERY": "query",
        "WORKSPACE": "workspace",
    },
)
コード例 #15
0
ファイル: ajax.py プロジェクト: cdcs-repos/core_curate_app
def _start_curate_post(request):
    """Start curate POST request.

    Args:
        request:

    Returns:

    """
    try:
        template_id = str(request.POST['hidden_value'])
        selected_option = request.POST['curate_form']
        user_id = str(request.user.id)
        if selected_option == "new" or selected_option == "upload":
            if selected_option == "new":
                new_form = users_forms.NewForm(request.POST)
                if new_form.is_valid():
                    name = new_form.data['document_name']
                    curate_data_structure = CurateDataStructure(
                        user=user_id, template=template_id, name=name)
                else:
                    raise exceptions.CurateAjaxError(
                        'Error occurred during the validation ' +
                        get_form_label())
            else:
                try:  # check XML data or not?
                    upload_form = users_forms.UploadForm(
                        request.POST, request.FILES)
                    if upload_form.is_valid():
                        xml_file = request.FILES['file']
                        xml_file.seek(
                            0)  # put the cursor at the beginning of the file
                        xml_data = xml_file.read(
                        )  # read the content of the file
                        well_formed = is_well_formed_xml(xml_data)
                        name = xml_file.name
                        if not well_formed:
                            raise exceptions.CurateAjaxError(
                                'Uploaded File is not well formed XML')
                        else:
                            curate_data_structure = CurateDataStructure(
                                user=user_id,
                                template=template_id,
                                name=name,
                                form_string=xml_data)
                    else:
                        raise exceptions.CurateAjaxError(
                            'Error occurred during the validation ' +
                            get_form_label())
                except Exception as e:
                    raise exceptions.CurateAjaxError(
                        'Error during file uploading')

            curate_data_structure_api.upsert(curate_data_structure)
        else:
            open_form = users_forms.OpenForm(request.POST)
            curate_data_structure = curate_data_structure_api.get_by_id(
                open_form.data['forms'])
        url = reverse("core_curate_enter_data",
                      args=(curate_data_structure.id, ))
        return HttpResponse(url)
    except Exception as e:
        raise exceptions.CurateAjaxError(e.message)
コード例 #16
0
        Returns:
        """
    try:
        list_form = _get_forms(form_ids, request.user.is_superuser,
                               request.user.id)
    except Exception, e:
        messages.add_message(request, messages.INFO, e.message)
        return HttpResponse(json.dumps({}),
                            content_type='application/javascript')

    try:
        for form in list_form:
            curate_data_structure_api.delete(form)
        messages.add_message(
            request, messages.INFO,
            get_form_label().capitalize() + ' deleted with success.')
    except:
        messages.add_message(request, messages.INFO,
                             'A problem occurred while deleting.')

    return HttpResponse(json.dumps({}), content_type='application/javascript')


def _delete_record(request, data_ids):
    """ Delete records.

    Args:
        request:
        data_ids:

    Returns: