heliport.core.views package

Submodules

heliport.core.views.api module

class heliport.core.views.api.ContributionViewSet(**kwargs)

Bases: ModelViewSet

Showing contributions to projects of the current user.

get_queryset()

Return contributions to projects of the user that are not deleted.

permission_class = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'heliport.core.permissions.StaffOrReadOnly'>]
serializer_class

alias of ContributionSerializer

class heliport.core.views.api.DeleteAllTokensView(**kwargs)

Bases: APIView

Handle deleting all tokens. Similar to knox LogoutAllView but uses the default authentication classes.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
post(request, *args, **kwargs)
class heliport.core.views.api.DigitalObjectAPI(*args, **kwargs)

Bases: HeliportModelViewSet

API for all digital objects in HELIPORT.

For digital objects that are files it is also possible to download them at /api/digital-objects/complete/<digital_object_id>/download/

For digital objects that are directories it is also possible to get contents at /api/digital-objects/complete/<digital_object_id>/contents/

contents(request, pk=None)

Get files and directories in directory.

contents_from_description(request)

Get files and directories in directory.

directory is specified via describing parameters to allow download of subdirectories

download(request, pk=None)

Get streaming file response to download file contents.

download_from_description(request)

Get streaming file response to download file contents.

The file to download is specified by request parameters. This enables downloading files not directly stored in heliport e.g. inside a directory.

finalize_response(request, response, *args, **kwargs)

Add json-ld context to response to make this api more interoperable.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticatedOrReadOnly'>]

Even without login public attributes are accessible.

queryset

This api allows access to all DigitalObjects. Permissions (read/write) are respected per attribute. # noqa: E501

serializer_class

DigitalObjectAPISerializer contains the code that makes this general api possible. # noqa: E501

alias of DigitalObjectAPISerializer

class heliport.core.views.api.GroupViewSet(**kwargs)

Bases: ModelViewSet

Showing user groups.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'heliport.core.permissions.StaffOrReadOnly'>]
queryset
serializer_class

alias of GroupSerializer

class heliport.core.views.api.HeliportModelViewSet(**kwargs)

Bases: ModelViewSet

Base class for API ViewSets in HELIPORT for DigitalObjects.

perform_destroy(instance)

Deleting objects by setting deleted to the current time.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'heliport.core.permissions.HeliportObjectPermission'>]

Make sure user is authenticated and is allowed to access the DigitalObject

class heliport.core.views.api.LoginNamedTokenView(**kwargs)

Bases: LoginView

Customized LoginView for named HELIPORT API tokens.

get_post_response_data(request, token, instance)

Put “hash” into response for displaying token.

get_token_ttl()

Allow “expiry” parameter of the form YYYY-MM-DD. Empty string means no expiry.

class heliport.core.views.api.LogoutTokenView(**kwargs)

Bases: APIView

Handle deleting token. Similar to knox LogoutView but can delete token that is not used to authenticate the current request.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
post(request, *args, **kwargs)

Delete token specified by “pk” parameter.

class heliport.core.views.api.MaintenanceMessageView(**kwargs)

Bases: APIView

Handles the maintenance message which can be specified in the settings.

get(request, *args, **kwargs)

Method to handle GET request.

renderer_classes = [<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework.renderers.BrowsableAPIRenderer'>, <class 'heliport.core.renderers.HeliportPartialRenderer'>]
template_name = 'core/partials/maintenance_message.html'
class heliport.core.views.api.ProjectViewSet(**kwargs)

Bases: HeliportModelViewSet

Showing the most general HELIPORT project properties. Request more detailed information by appending urls/ to the url Go to a specific project by appending its id/ to the url For more information on how to authenticate look in HELIPORT (user > settings).

filter_backends = [<class 'rest_framework.filters.SearchFilter'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>]
filterset_fields = ['group', 'owner', 'persistent_id']
get_queryset()

Get projects of current user that are not deleted.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'heliport.core.permissions.HeliportProjectPermission'>]

Make sure user is authenticated and is allowed to access the DigitalObject

search_fields = ['label', 'description', 'owner__display_name']
serializer_class

alias of ProjectSerializer

class heliport.core.views.api.TokenViewSet(**kwargs)

Bases: ModelViewSet

Showing HELIPORT user tokens.

filter_backends = [<class 'rest_framework.filters.SearchFilter'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>]
filterset_fields = ['login_info_id']
get_queryset()

Get tokens (stored in heliport as LoginInfos, not HELIPORT API tokens) of current user.

permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>]
search_fields = ['name']
serializer_class

alias of TokenSerializer

class heliport.core.views.api.UserViewSet(**kwargs)

Bases: ModelViewSet

Showing HELIPORT user model.

filterset_fields = ['user_id', 'authentication_backend_id', 'display_name']
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'heliport.core.permissions.StaffOrReadOnly'>]
queryset
serializer_class

alias of UserSerializer

heliport.core.views.digital_objects module

class heliport.core.views.digital_objects.AsDigitalObjectView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Creates a heliport.core.models.DigitalObject instance given a heliport.core.digital_object_resolution.Resolvable provided as GET or POST parameters and returns it as JSON using "pk", "digital_object_id", "url" and "label". If an error occurs the JSON contains an "error" attribute.

This uses heliport.core.digital_object_interface.GeneralDigitalObject.as_digital_object`() internally.

If you set POST parameter is_helper to True the resulting digital object is marked as “helper”. This can be used when querying digital objects to not show automatically generated helpers to the user.

model

alias of Project

pk_url_kwarg = 'project'
post(request, *args, **kwargs)

Handle post.

class heliport.core.views.digital_objects.DigitalObjectAutocompleteView(**kwargs)

Bases: HeliportLoginRequiredMixin, View

Handles getting information for autocomplete inputs for heliport.core.models.DigitalObject.

get(request, *args, **kwargs)

Responde to GET request.

Returns json list like:

[
    {"label": "aa", "pk": 1},
    {"label": "xa", "pk": 55}
]

Excludes deleted objects and respects user rights. Maximum dumber of results is configurable in settings.py HELIPORT_CORE_AUTOCOMPLETE_COUNT

Supports the following get parameters:

  • type - Restrict autocomplete to a type. See heliport.core.utils.queries.digital_objects_by_type() for allowed values. ...?type=1&type=2 results in union of results to ...?type=1 and ...?type=2.

  • q or term - search term for label and persistent_id

  • exact - false (default): case-insensitive and allow part match; case_insensitive: case-insensitive full match; true: case-sensitive full match. psersistent_id is always matched exact

heliport.core.views.generic module

class heliport.core.views.generic.HeliportObjectListView

Bases: HeliportLoginRequiredMixin, UserPassesTestMixin, HeliportBreadcrumbsMixin, TemplateView

action_delete(obj)

Implements the delete action so that the string “action_delete” can be used in actions. The default implementation sets deleted to the current time and saves the object.

action_edit(obj)

Implements the edit action so that the string “action_edit” can be used in actions. The edit action is a link action that links to update_url, which points normally to this view itself.

actions = [('Edit', 'action_edit', 'link_secondary'), ('Delete', 'action_delete', 'danger')]

Actions that are available for each column. Triples of action name, method name called on the HeliportObjectListView # noqa: E501 and style information. For more control over action overwrite register_actions(). # noqa: E501 See implementation of register_actions() for definitions of style information. # noqa: E501

add_text = []

List of strings that are concatenated and put next to the add button for creating a new object. # noqa: E501 See utils.form_description.FormDescription.get_add_text() for more information. # noqa: E501

after_save_attributes = ()

List of attribute names (second value in triples of edit_fields) that should # noqa: E501 be set after obj.save() is called when creating an obj.

category = 'HELIPORT/thing'

Namespace used for handle generation

columns = [('ID', 'pk', 'small'), ('Name', 'label', 'normal')]

Columns shown in the table. Triples of column name, attribute shown in column, column size. # noqa: E501 For more control over columns overwrite register_columns(). See implementation of register_columns() for definition of column sizes

create_heading = None

Text displayed as heading over form when creating obj. See also get_create_heading(). # noqa: E501

dynamic_actions(obj)
edit_fields = [('Name', 'label', 'normal')]

Fields editable in this view. Triple of key name, attribute name ware value is stored and field style For more control over form fields overwrite register_form_columns(). See implementation of register_form_columns() for definitions of field styles. # noqa: E501

edit_tags = True

True if tags should be editable in this view

extract_action()

Helper function to extract the action to be dispatched from POST data.

extract_form_fields()

Helper function to extract form fields out of the posted data. Data from autocomplete inputs with data separated into a label input and an hidden id input is supported.

get(request, *args, **kwargs)

Called by django on http get. Sets project for which the list should be shown.

get_context_data(**kwargs)

Called by django to get context when rendering template. Collects information like list_heading and generates table (get_table()) and form (get_form()) into context.

get_create_heading()

Return create_heading. Generate a creation heading if this is not specified. Generation is done for example based on update_heading by replacing a prefix of “Update” or “Edit” with “Add”.

get_create_instance()

Create a new instance of model.

get_form() FormDescription

Helper function for form generation. This calls register_form_columns() to populate the form description.

get_object()

Return the project for which a list of objects should be shown.

get_table() TableDescription

Helper function for table generation. This calls register_columns() and register_actions() to populate the table description.

get_update_heading()

Return update_heading. Generate an update heading if this is not specified. Generation is done for example based on create_heading by replacing a prefix “Add” or “Create” with “Update”.

get_update_instance(pk)

Returns an instance of model to be updated.

handle_action(action_name: str, target_pk: str)

Dispatches an action on a table row.

handle_create()

Handles creation of a new model instance. Including setting attributes.

handle_error(message)

Called by post() if a UserMessage is raised. It renders the list including the error message.

handle_update()

Handles updating a model instance.

info_snippet_add = None

An HTML template containing a snippet to be used to provide additional information to the “Add” section.

list_heading = 'HELIPORT Object List'

Text displayed as heading

list_url = None

Url that leads to this view for listing objects. The “update_url” string is passed to django.urls.reverse(). # noqa: E501 with “project” url argument to get the actual url. list_url is required by the default action_edit() implementation to link back to original page after edditing. # noqa: E501

model

Instances of this model are shown in the list and created/edited

alias of DigitalObject

post(request, *args, **kwargs)

Set project and call the correct one of handle_update(), handle_create() or handle_action().

Called by django on http post.

register_actions(table: TableDescription)

Register the actions on a table by calling utils.table_description.TableDescription.add_action. The default implementation uses actions to get information about what actions to add. Feel free to implement register_actions in a subclass.

register_columns(table: TableDescription)

Register the columns on a table by calling utils.table_description.TableDescription.add_column. The default implementation uses columns to get information about what columns to add. Feel free to implement register_columns in a subclass.

register_form_columns(form: FormDescription)

Register the columns on a form by calling utils.form_description.FormDescription.add_column. The default implementation uses edit_fields to get information about what columns to add. Feel free to implement register_form_columns in a subclass.

register_handle = True

True if handles should be registered for new objects

set_update_attributes(obj, form_fields, obj_saved=False)

Is called by handle_create() and handle_update() after the obj is saved. The default implementation sets all attributes in after_save_attributes.

template_name = 'core/base/simple_table_view.html'

HTML templated rendered by this View

test_func()

Called by Djangos UserPassesTestMixin. Make sure that user is a project member.

update_heading = None

Text displayed as heading over form when editing obj. See also get_update_heading(). # noqa: E501

update_url = None

Url that leads to this view for updating. The “update_url” string is passed to django.urls.reverse(). # noqa: E501 with “project” and “pk” url arguments to get the actual url. update_url is required by the default action_edit() implementation.

heliport.core.views.images module

class heliport.core.views.images.ImageView(**kwargs)

Bases: HeliportObjectMixin, DetailView

View for showing heliport.core.models.Image s to use them in html.

get(request, *args, **kwargs)

Image pk is taken from url. This view may be cached (configured in heliport.core.urls). Called by django on http get.

model

alias of Image

class heliport.core.views.images.ImagesView(**kwargs)

Bases: HeliportProjectMixin, TemplateView

List all heliport.core.models.Image s in a project.

get_context_data(**kwargs)

Called by django to get context when rendering template. Includes “images”, the list of relevant images, in context.

post(request, *args, **kwargs)

Handles image deletion. Called by django on http post.

template_name = 'core/digital_object/picture_list.html'

HTML template rendered by this View

class heliport.core.views.images.TakePictureView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Handles taking pictures in HELIPORT these pictures are stored as heliport.core.models.Image.

get_context_data(**kwargs)

Generate default values for storing image and include them in context. Support next get parameter to redirect to arbitrary page after image has been taken.

post(request, *args, **kwargs)

Create new heliport.core.models.Image with user supplied metadata and upload image itself to file system specified by login info (selected by user).

Return redirect to image list or view specified by “next” parameter. If “next” parameter ends with “=” append pk of newly taken image. For example https://some/url?image= becomes https://some/url?imgae=13 if 13 is the newly taken image.

Called by django on http post.

template_name = 'core/digital_object/take_picture.html'

HTML template rendered by this View

heliport.core.views.landing_page module

class heliport.core.views.landing_page.LandingPageView(**kwargs)

Bases: DetailView

Landing page for Digital Objects.

Landing pages are rendered in different formats using custom content negotiation.

get(request, *args, **kwargs)

Renderer selection based on Accept header and handling of special renderers like showing individual page with get_custom_url().

Called by django on http get.

get_context_data(**kwargs)

Get relevant infos in addition to the Digital Object itself. Called by django to get context when rendering html template.

static get_custom_url(obj, request)

Get the url of a special page in heliport for showing obj. This information is defined on obj via a get_custom_url() function. For example a project is shown as the heliport project graph. (see heliport.core.models.Project.get_custom_view_url()).

model

Django model handled in this view - used by django DetailView

alias of DigitalObject

post(request, *args, **kwargs)

Handle editing what attributes are publicly shown. Called by django on http post.

template_name = 'core/digital_object/landingpage.html'

HTML template rendered by this View

class heliport.core.views.landing_page.ResolveDigitalObjectView(**kwargs)

Bases: RedirectView

Redirect to Digital Object landing page.

Try to resolve a given identifier to a digital object, then redirect to its landing page. If the digital object is not found, return 404.

get_redirect_url(*args, **kwargs)

Resolve the identifier and return the landing page URL.

query_string = True

heliport.core.views.project module

class heliport.core.views.project.CreateProjectView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Create new HELIPORT project.

Including options for specifying initial project settings and importing contents of other projects.

get_context_data(**kwargs)

Called by django to get context when rendering template.

Context includes group information and list of projects of current user.

post(request, *args, **kwargs)

Create project and configure settings.

If template project is selected to import digital objects from, redirect to ImportFromProjectView.

Called by django on http post.

template_name = 'core/project/create_project.html'

HTML template rendered by this View (page for entering initial project settings)

class heliport.core.views.project.CreateSampleProjectView(**kwargs)

Bases: HeliportLoginRequiredMixin, View

Create sample HELIPORT project.

post(request)

Create sample project in HELIPORT database.

class heliport.core.views.project.ImportFromProjectView(**kwargs)

Bases: HeliportProjectMixin, TemplateView

Handle importing or copying digital objects from another project.

get_context_data(**kwargs)

Called by django to get context when rendering template.

Include list of object that can be imported in context, including their label, types and id. Also for each object, the “default_type” (completely different meaning than “types”; one of ignore, copy, import) and “copy_disabled” (bool; not every object is copyable) is included.

post(request, *args, **kwargs)

Do the importing / copying. “import_objects” is the list of all objects. E.g. for obj with pk 7 a value import-type-7 (import, copy, ignore) specifies the kind of import.

template_name = 'core/project/import_from.html'

HTML template rendered by this View

test_func()

Called by django to test if user has access to this view. In addition to normal test if user has access to current project also test if user has read access to project where things should be imported from.

class heliport.core.views.project.OpenInProjectView(**kwargs)

Bases: RedirectView

This view has special handling in the heliport.core.utils.context.project_header_breadcrumbs() function to allow resetting the breadcrumbs to the project name.

get_redirect_url(*args, **kwargs)

Reset breadcrumbs and redirect to next specified by query parameter.

class heliport.core.views.project.ProjectGraphView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Handle showing the HELIPORT project graph.

get_breadcrumb_label_and_reset()
get_context_data(**kwargs)

Generate heliport project graph. As a side effect this sets “activeHeliportProject” to project.pk which is used in navbar to show current project. Called by django to get context when rendering template.

model

Django model handled in this view - used by django DetailView

alias of Project

pk_url_kwarg = 'project'

Expect url parameter “project” instead of “pk”

template_name = 'core/project/project_graph.html'

HTML template rendered by this View

class heliport.core.views.project.ProjectListView(**kwargs)

Bases: HeliportLoginRequiredMixin, ListView

Handle listing a users HELIPORT project.

get_context_data(**kwargs)

Called by django to get context when rendering template.

get_queryset()

Called by ListView to get the list to show. Query: projects of user that are not deleted; handle sorting; no subprojects.

model

Django model handled in this view - used by django ListView

alias of Project

paginate_by = 10

Pagination

template_name = 'core/project/project_list.html'

HTML template rendered by this View

class heliport.core.views.project.ProjectTimelineView(**kwargs)

Bases: HeliportProjectMixin, TemplateView

Handle showing timeline of all digital objects in a project.

get_context_data(**kwargs)

Called by django to get context when rendering template. Query all not deleted digital objects in project ordered by creation date.

template_name = 'core/project/timeline.html'

HTML template rendered by this View

class heliport.core.views.project.ProjectUpdateView(**kwargs)

Bases: HeliportProjectMixin, UpdateView

Update project title, description and group.

This renders the same template as ProjectView.

fields = ['label', 'description', 'group']

Used by django UpdateView to generate input form for editing project

get_context_data(**kwargs)

See ProjectView.get_context_data() for more information.

get_success_url()

Return to ProjectView after updating and saving project.

model

Django model handled in this view - used by django UpdateView

alias of Project

pk_url_kwarg = 'project'

In heliport.core.urls project id is called “project” not “pk”

template_name = 'core/project/project_update.html'

HTML template rendered by this View

class heliport.core.views.project.ProjectView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Shows general information about a HELIPORT project (“Project Configuration”). This includes key value pairs like the Title, description or handle of a project and information about project participants.

Basic project actions, like deleting the project, can be done via this view too.

get_context_data(**kwargs)

Called by django to get context when rendering template.

The context includes:

  • “isOwner”, “update” to configure the template for what should be shown

  • preprocessed information about project participants

  • “groups” the list of all groups to display a select box

model

Django model handled in this view - used by django DetailView

alias of Project

pk_url_kwarg = 'project'

In heliport.core.urls project id is called “project” not “pk”

post(request, *args, **kwargs)

Respond to POST request.

Handles one of:

  • Delete project

  • Add file system user group to project

  • Add / Remove co-owner

  • Add all members of a group as co-owners

  • Add / Delete Contribution

  • Edit contribution type (request is send to this view but ui is rendered in ProjectUpdateView)

template_name = 'core/project/project_update.html'

HTML template rendered by this View

class heliport.core.views.project.SubprojectsView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Handle other HELIPORT projects that are part of the current project.

get_context_data(**kwargs)

Called by django to get context when rendering template. Subprojects, all projects of user and user are included in context.

model

Django model handled in this view - used by django DetailView

alias of Project

pk_url_kwarg = 'project'

In heliport.core.urls project id is called “project” not “pk”

post(request, **kwargs)

Add or remove a subproject.

template_name = 'core/project/subprojects.html'

HTML template rendered by this View

heliport.core.views.project.get_users_autocomplete(request, **kwargs)

View that handles user autocomplete. The query string is taken from get parameter q. Respects HELIPORT_CORE_AUTOCOMPLETE_COUNT in settings.py.

Returns json like:

[
    {"name": "ax", "pk": 1},
    {"name": "xyyy", "pk": 55}
]

heliport.core.views.search module

class heliport.core.views.search.SearchBaseView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Base view for the HELIPORT search feature. This view uses javascript to get the actual search results from each apps search view.

get_context_data(**kwargs)

Called by django to get context when rendering template. Includes urls of all search views.

template_name = 'core/search/search_base.html'

HTML template rendered by this View

class heliport.core.views.search.SearchView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Handle searching objects in the HELIPORT core app.

get_context_data(**kwargs)

Query all objects matching “q” parameter.

template_name = 'core/search/search.html'

HTML template rendered by this View

heliport.core.views.tags module

class heliport.core.views.tags.TagAutocompleteView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Handle autocompletion when specifying tags.

get(request, *args, **kwargs)

Partial input can be submitted via “q” or “term”. If “pk” is specified, only tags allowed for this DigitalObject are returned unless there are none.

Tags in result json are returned with “label” and “pk” ordered by least recently used.

Called by django on http get.

model

Django model handled in this view - used by django DetailView

alias of Project

pk_url_kwarg = 'project'

In heliport.core.urls project id is called “project” not “pk”

class heliport.core.views.tags.TagJsonView(**kwargs)

Bases: HeliportProjectMixin, DetailView

Handle Querying and updating tags of a digital object. This view is used in javascript of tag_manager.html.

get(request, *args, **kwargs)

Return list of tags including “label”, “tag_id”, “color”, “foreground”, … for a given DigitalObject in the context of the project.

Called by django on http get.

static get_all_tags(digital_object, project)

Get direct (has_tag property) and indirect (There exists a tag with predicate-object-combination also found in attributes of digital_object in project) Tags. Tags are returned as dict of “label”, “tag_id”, “attribute”, “value”, “requires_type”, “color”, “foreground”.

get_project_and_object(object_pk)

Get the project that contains the tags and the digital object that is tagged. object_pk is used to get the digital object. It is checked that the digital object is part of the project or is itself the project as auth check.

model

Django model handled in this view - used by django DetailView

alias of Project

pk_url_kwarg = 'project'

In heliport.core.urls project id is called “project” not “pk”

post(request, *args, **kwargs)

Adds (or removes when "delete" is set to a truthy value) a tag on a digital object specified by "pk". If "check_type" is set to a truthy value the tag is only set when digital object has the correct type for tag. The tag can be explicitly specified by "tag" or created from "label", "attribute_pk" and "value_pk". "attribute_label" and "value_label" are also allowed and their information is combined with attribute_pk and value_pk using heliport.core.models.digital_object_form_label_and_pk().

Returns:

Same as get()

Called by django on http post.

class heliport.core.views.tags.TagsView

Bases: HeliportObjectListView

actions = [('Edit', 'action_edit', 'link_secondary'), ('Delete', 'action_delete', 'danger')]

Actions that are available for each column. Triples of action name, method name called on the HeliportObjectListView # noqa: E501 and style information. For more control over action overwrite register_actions(). # noqa: E501 See implementation of register_actions() for definitions of style information. # noqa: E501

category = 'HELIPORT/tag'

Namespace used for handle generation

columns = [('ID', 'tag_id', 'small'), ('Label', 'label', 'small'), ('Property', 'attribute', 'normal'), ('Value', 'value', 'normal'), ('Used on', 'requires_type_display', 'small')]

Columns shown in the table. Triples of column name, attribute shown in column, column size. # noqa: E501 For more control over columns overwrite register_columns(). See implementation of register_columns() for definition of column sizes

create_heading = 'Add a Tag'

Text displayed as heading over form when creating obj. See also get_create_heading(). # noqa: E501

edit_tags = True

True if tags should be editable in this view

list_heading = 'Tags'

Text displayed as heading

list_url = 'core:tag_list'

Url that leads to this view for listing objects. The “update_url” string is passed to django.urls.reverse(). # noqa: E501 with “project” url argument to get the actual url. list_url is required by the default action_edit() implementation to link back to original page after edditing. # noqa: E501

model

Specify that this View shows lists of class heliport.core.models.Tag.

alias of Tag

register_form_columns(form: FormDescription)

Register custom form columns. Called by heliport.core.custom_views.HeliportObjectListView.get_table().

register_handle = True

True if handles should be registered for new objects

set_update_attributes(obj, form_fields, obj_saved=False)

Custom implementation of setting attributes.

update_url = 'core:tag_update'

Url that leads to this view for updating. The “update_url” string is passed to django.urls.reverse(). # noqa: E501 with “project” and “pk” url arguments to get the actual url. update_url is required by the default action_edit() implementation.

heliport.core.views.user module

class heliport.core.views.user.LoginInfoUpdateView(**kwargs)

Bases: HeliportLoginRequiredMixin, UpdateView

Handle editing/showing login details, of other web services, in HELIPORT so that HELIPORT can make requests on behalf of the user. There exists a very similar view for creation/showing such login details: LoginInfoView.

dispatch(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse

Don’t allow users to edit a connected or someone else’s LoginInfo.

fields = ['name', 'type', 'username', 'key', 'machine', 'via', 'slurm']

Used by django UpdateView to generate input form for editing login infos

form_valid(form)

Assert that heliport.core.models.LoginInfo belongs to current user and set password. See LoginInfoView.form_valid() for more details.

get_context_data(**kwargs)

Called by django to get context when rendering template.

get_success_url()

Redirect to LoginInfoView after updating login info.

model

Django model handled in this view - used by django UpdateView

alias of LoginInfo

template_name = 'core/user/login_infos.html'

HTML template rendered by this View

class heliport.core.views.user.LoginInfoView(**kwargs)

Bases: HeliportLoginRequiredMixin, CreateView

Handle creating/showing login details of other web services in HELIPORT so that HELIPORT can make requests on behalf of the user. There exists a very similar view for editing/showing such login details: LoginInfoUpdateView.

fields = ['name', 'type', 'username', 'key', 'machine', 'via', 'slurm']

Used by django CreateView to generate input form for creating new login infos

form_valid(form)

Validate form.

Called by django CreateView after form has been deemed valid. Set additional attributes before saving LoginInfo:

  • user - current heliport user added automatically (not from input form)

  • password - password field can not be generated automatically in form because password is a python property and not a django model field

get_context_data(**kwargs)

Called by django to get context when rendering template.

get_success_url()

Called by django to get url to redirect to after successful heliport.core.models.LoginInfo creation.

Returns:

URL of this view itself.

model

Django model handled in this view - used by django CreateView

alias of LoginInfo

post(request, *args, **kwargs)

Handle deletion of login infos here and creation in superclass CreateView. Called by django on http post.

template_name = 'core/user/login_infos.html'

HTML template rendered by this View

class heliport.core.views.user.RemoteServerLoginView(**kwargs)

Bases: HeliportLoginRequiredMixin, DetailView

Show username and password prompt for an SSH login and put public SSH key in allowed hosts on the server specified in the SSH login (heliport.core.models.LoginInfo) while private key is stored encrypted in the HELIPORT database. When the key of an SSH LoginInfo is on the remote server we say it is “connected”.

The corresponding view for logout is the RemoteServerLogoutView.

get_context_data(**kwargs)

Called by django to get context when rendering template. In addition to the LoginInfo (automatically included by DetailView) include error message in context.

model

Django model handled in this view - used by django DetailView

alias of LoginInfo

post(request, *args, **kwargs)

Connect LoginInfo. Called by django on http post.

As a side effect the username is stored in the LoginInfo. This removes the need to enter the username twice (when creating the login info and when connecting the login info). The username is used e.g. for searching login infos.

template_name = 'core/user/remote_server_login.html'

HTML template rendered by this View

static validate_login(login, request)

Check if SSH heliport.core.models.LoginInfo can be connected. This is the case if the login info belongs to the user and all necessary SSH indirections are connected.

class heliport.core.views.user.RemoteServerLogoutView(**kwargs)

Bases: HeliportLoginRequiredMixin, View

Handle removing SSH key from external server. For more details see RemoteServerLoginView. This view does not render a template. The key is deleted without any questions asked and the user is redirected to LoginInfoView.

get(request, *args, **kwargs)

Disconnect SSH heliport.core.models.LoginInfo. Called by django on http get.

class heliport.core.views.user.TokenListView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Display the user’s API tokens.

get_context_data(**kwargs)

Update the rendering context with token data.

template_name = 'core/user/tokens.html'

HTML template rendered by this View

class heliport.core.views.user.UserProfileView(**kwargs)

Bases: HeliportLoginRequiredMixin, TemplateView

Handle showing and editing settings of a HELIPORT user. (most information is read only).

get_context_data(**kwargs)

Called by django to get context when rendering template. Context includes the user and information for HELIPORT API token creation form (like the current time).

post(request, *args, **kwargs)

Set orcid for user. Called by django on http post.

template_name = 'core/user/profile.html'

HTML template rendered by this View

Module contents

This module contains Django class based views to handle incoming http requests. Each View is mapped to a URL in heliport.core.urls.

Each django app can have its own views. This module contains views for all main heliport functionality.