Submissions App

Submission statuses are described in Common statuses

submissions.forms

submissions.forms module contents

Created on Tue Jul 24 15:51:05 2018

@author: Paolo Cozzi <cozzi@ibba.cnr.it>

class submissions.forms.ReloadForm(*args, **kwargs)[source]

Bases: submissions.forms.SubmissionFormMixin, common.forms.RequestFormMixin, django.forms.models.ModelForm

class Meta[source]

Bases: object

fields = ('datasource_type', 'datasource_version', 'uploaded_file')
help_texts = {'datasource_type': 'example: CryoWeb. Need an empty template file? download it from <a href="/media/Image_sample_empty_template_20191002_v2.1.xlsx">here</a>', 'uploaded_file': 'Need to be in UTF-8 or ASCII format'}
model

alias of uid.models.Submission

base_fields = {'agree_reload': <django.forms.fields.BooleanField object>, 'datasource_type': <django.forms.fields.TypedChoiceField object>, 'datasource_version': <django.forms.fields.CharField object>, 'uploaded_file': <django.forms.fields.FileField object>}
declared_fields = {'agree_reload': <django.forms.fields.BooleanField object>}
is_reload = True
property media

Return all media required to render the widgets on this form.

class submissions.forms.SubmissionForm(*args, **kwargs)[source]

Bases: submissions.forms.SubmissionFormMixin, common.forms.RequestFormMixin, django.forms.models.ModelForm

class Meta[source]

Bases: object

fields = ('title', 'description', 'gene_bank_name', 'gene_bank_country', 'organization', 'datasource_type', 'datasource_version', 'uploaded_file')
help_texts = {'datasource_type': 'example: CryoWeb. Need an empty template file? download it from <a href="/media/Image_sample_empty_template_20191002_v2.1.xlsx">here</a>', 'organization': 'Who owns the data. Not listed? please <a href="mailto:bioinfo.ibba@gmail.com?subject=please add my organization">contact us</a>', 'uploaded_file': 'Need to be in UTF-8 or ASCII format'}
model

alias of uid.models.Submission

base_fields = {'datasource_type': <django.forms.fields.TypedChoiceField object>, 'datasource_version': <django.forms.fields.CharField object>, 'description': <django.forms.fields.CharField object>, 'gene_bank_country': <django.forms.models.ModelChoiceField object>, 'gene_bank_name': <django.forms.fields.CharField object>, 'organization': <django.forms.models.ModelChoiceField object>, 'title': <django.forms.fields.CharField object>, 'uploaded_file': <django.forms.fields.FileField object>}
declared_fields = {}
property media

Return all media required to render the widgets on this form.

class submissions.forms.SubmissionFormMixin[source]

Bases: submissions.forms.UniqueSubmissionMixin

check_crbanim_columns()[source]

Check if a CRBanim file has mandatory columns

check_file_encoding()[source]
check_template_file()[source]

Check if template file has columns and sheets

clean()[source]
class submissions.forms.UniqueSubmissionMixin[source]

Bases: object

check_submission_exists()[source]

Test if I already have a submission with the same data

is_reload = False
class submissions.forms.UpdateSubmissionForm(*args, **kwargs)[source]

Bases: submissions.forms.UniqueSubmissionMixin, common.forms.RequestFormMixin, django.forms.models.ModelForm

class Meta[source]

Bases: object

fields = ('title', 'description', 'gene_bank_name', 'gene_bank_country', 'organization', 'datasource_type', 'datasource_version')
help_texts = {'organization': 'Who owns the data. Not listed? please <a href="mailto:bioinfo.ibba@gmail.com?subject=please add my organization">contact us</a>'}
model

alias of uid.models.Submission

base_fields = {'datasource_type': <django.forms.fields.TypedChoiceField object>, 'datasource_version': <django.forms.fields.CharField object>, 'description': <django.forms.fields.CharField object>, 'gene_bank_country': <django.forms.models.ModelChoiceField object>, 'gene_bank_name': <django.forms.fields.CharField object>, 'organization': <django.forms.models.ModelChoiceField object>, 'title': <django.forms.fields.CharField object>}
clean()[source]

Hook for doing any extra form-wide cleaning after Field.clean() has been called on every field. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field named ‘__all__’.

declared_fields = {}
property media

Return all media required to render the widgets on this form.

submissions.helpers

submissions.helpers module contents

Created on Thu Jun 27 11:52:37 2019

@author: Paolo Cozzi <cozzi@ibba.cnr.it>

class submissions.helpers.AnimalResource[source]

Bases: import_export.resources.ModelResource

class Meta[source]

Bases: object

export_order = ('id', 'name', 'biosample_id', 'material', 'status', 'last_changed', 'last_submitted')
fields = ('id', 'name', 'biosample_id', 'material', 'status', 'last_changed', 'last_submitted')
model

alias of uid.models.Animal

dehydrate_status(animal)[source]

Convert a numeric status field into the displayed column

fields = {'biosample_id': <import_export.fields.Field: biosample_id>, 'id': <import_export.fields.Field: id>, 'last_changed': <import_export.fields.Field: last_changed>, 'last_submitted': <import_export.fields.Field: last_submitted>, 'material': <import_export.fields.Field: material>, 'name': <import_export.fields.Field: name>, 'status': <import_export.fields.Field: status>}
class submissions.helpers.SampleResource[source]

Bases: import_export.resources.ModelResource

class Meta[source]

Bases: object

export_order = ('id', 'name', 'biosample_id', 'material', 'status', 'last_changed', 'last_submitted')
fields = ('id', 'name', 'biosample_id', 'material', 'status', 'last_changed', 'last_submitted')
model

alias of uid.models.Sample

dehydrate_status(sample)[source]

Convert a numeric status field into the displayed column

fields = {'biosample_id': <import_export.fields.Field: biosample_id>, 'id': <import_export.fields.Field: id>, 'last_changed': <import_export.fields.Field: last_changed>, 'last_submitted': <import_export.fields.Field: last_submitted>, 'material': <import_export.fields.Field: material>, 'name': <import_export.fields.Field: name>, 'status': <import_export.fields.Field: status>}
submissions.helpers.is_target_in_message(target, messages)[source]

This function will return true if target in message

Parameters

target (str) – target to search

submissions.helpers.send_message(submission_obj, validation_message=None)[source]

Update submission.status and submission message using django channels

Parameters

submissions.tasks

submissions.tasks module contents

Created on Tue Jul 9 16:10:06 2019

@author: Paolo Cozzi <cozzi@ibba.cnr.it>

class submissions.tasks.BatchUpdateMixin[source]

Bases: submissions.tasks.SubmissionTaskMixin

Mixin to do batch update of fields to fix validation

batch_update(submission_id, ids, attribute)[source]
item_cls = None
class submissions.tasks.ImportGenericTaskMixin[source]

Bases: submissions.tasks.SubmissionTaskMixin, common.tasks.NotifyAdminTaskMixin

A mixing used to import datasource into UID

action = None
run(submission_id)[source]

a function to upload data into UID

class submissions.tasks.SubmissionTaskMixin[source]

Bases: object

A mixin to extend Task to support UID Submission objects

action = None
get_uid_submission(submission_id)[source]

Get a UID Submission instance from an id

Parameters

submission_id (int) – the submission id

Returns

a UID submission instance

Return type

Submission

mail_to_owner(submission_obj, subject, body)[source]
max_body_size = 5000
on_failure(exc, task_id, args, kwargs, einfo)[source]

Override the default on_failure method

send_message(submission_obj, construct_message=False)[source]

Update submission.status and submission message using django channels

Parameters
  • submission_obj (uid.models.Submission) – an UID submission object

  • construct_message (bool) – construct validation message or not

update_submission_status(submission_obj, status, message, construct_message=False)[source]

Mark submission with status, then send message

Parameters
  • submission_obj (uid.models.Submission) – an UID submission object

  • status (int) – a common.constants.STATUSES value

  • message (str) – the message to send

  • construct_message (bool) – construct validation message or not

submissions.views

submissions.views module contents

Created on Tue Jul 24 15:49:23 2018

@author: Paolo Cozzi <cozzi@ibba.cnr.it>

class submissions.views.BatchDeleteMixin[source]

Bases: submissions.views.DeleteSubmissionMixin, common.views.OwnerMixin

delete_type = None
get_context_data(**kwargs)[source]

Add custom values to template context

model

alias of uid.models.Submission

post(request, *args, **kwargs)[source]
class submissions.views.CreateSubmissionView(**kwargs)[source]

Bases: django.contrib.auth.mixins.LoginRequiredMixin, common.views.FormInvalidMixin, django.views.generic.edit.CreateView

form_class

alias of submissions.forms.SubmissionForm

form_valid(form)[source]

If the form is valid, save the associated model.

model

alias of uid.models.Submission

template_name = 'submissions/submission_form.html'
class submissions.views.DeleteAnimalsView(**kwargs)[source]

Bases: submissions.views.BatchDeleteMixin, django.views.generic.detail.DetailView

delete_type = 'Animals'
model

alias of uid.models.Submission

template_name = 'submissions/submission_batch_delete.html'
class submissions.views.DeleteSamplesView(**kwargs)[source]

Bases: submissions.views.BatchDeleteMixin, django.views.generic.detail.DetailView

delete_type = 'Samples'
model

alias of uid.models.Submission

template_name = 'submissions/submission_batch_delete.html'
class submissions.views.DeleteSubmissionMixin[source]

Bases: object

Prevent a delete relying on statuses

dispatch(request, *args, **kwargs)[source]
class submissions.views.DeleteSubmissionView(**kwargs)[source]

Bases: submissions.views.DeleteSubmissionMixin, common.views.OwnerMixin, django.views.generic.edit.DeleteView

delete(request, *args, **kwargs)[source]

Add a message after calling base delete method

get_context_data(**kwargs)[source]

Insert the single object into the context dict.

model

alias of uid.models.Submission

success_url = '/uid/dashboard/'
template_name = 'submissions/submission_confirm_delete.html'
class submissions.views.DetailSubmissionView(**kwargs)[source]

Bases: submissions.views.MessagesSubmissionMixin, common.views.OwnerMixin, django.views.generic.detail.DetailView

get_context_data(**kwargs)[source]

Insert the single object into the context dict.

model

alias of uid.models.Submission

template_name = 'submissions/submission_detail.html'
class submissions.views.EditSubmissionMixin[source]

Bases: object

A mixin to deal with Updates, expecially when searching ListViews

dispatch(request, *args, **kwargs)[source]
class submissions.views.EditSubmissionView(**kwargs)[source]

Bases: submissions.views.EditSubmissionMixin, submissions.views.MessagesSubmissionMixin, common.views.OwnerMixin, django.views.generic.list.ListView

get_context_data(**kwargs)[source]

Get the context for this view.

get_queryset()[source]

Subsetting names relying submission id

headers = ['id', 'name', 'material', 'biosample_id', 'status', 'last_changed', 'last_submitted']
paginate_by = 10
template_name = 'submissions/submission_edit.html'
class submissions.views.ExportSubmissionView(**kwargs)[source]

Bases: common.views.OwnerMixin, django.views.generic.detail.BaseDetailView

get(request, *args, **kwargs)[source]

A view that streams a large CSV file.

model

alias of uid.models.Submission

class submissions.views.FixValidation(**kwargs)[source]

Bases: common.views.OwnerMixin, django.views.generic.edit.BaseUpdateView

model

alias of uid.models.Submission

post(request, **kwargs)[source]

Handle POST requests: instantiate a form instance with the passed POST variables and then check if it’s valid.

class submissions.views.ListSubmissionsView(**kwargs)[source]

Bases: common.views.OwnerMixin, django.views.generic.list.ListView

model

alias of uid.models.Submission

ordering = ['-created_at']
paginate_by = 10
template_name = 'submissions/submission_list.html'
class submissions.views.MessagesSubmissionMixin[source]

Bases: object

Display messages in SubmissionViews

get_context_data(**kwargs)[source]
class submissions.views.ReloadSubmissionView(**kwargs)[source]

Bases: common.views.OwnerMixin, common.views.FormInvalidMixin, django.views.generic.edit.UpdateView

form_class

alias of submissions.forms.ReloadForm

form_valid(form)[source]

If the form is valid, save the associated model.

model

alias of uid.models.Submission

template_name = 'submissions/submission_reload.html'
class submissions.views.SubmissionValidationSummaryFixErrorsView(**kwargs)[source]

Bases: submissions.views.EditSubmissionMixin, common.views.OwnerMixin, django.views.generic.list.ListView

get_context_data(**kwargs)[source]

Get the context for this view.

get_queryset()[source]

Define columns that need to change

template_name = 'submissions/submission_validation_summary_fix_errors.html'
class submissions.views.SubmissionValidationSummaryView(**kwargs)[source]

Bases: common.views.OwnerMixin, django.views.generic.detail.DetailView

get_context_data(**kwargs)[source]

Insert the single object into the context dict.

model

alias of uid.models.Submission

template_name = 'submissions/submission_validation_summary.html'
class submissions.views.UpdateSubmissionView(**kwargs)[source]

Bases: common.views.OwnerMixin, common.views.FormInvalidMixin, django.views.generic.edit.UpdateView

form_class

alias of submissions.forms.UpdateSubmissionForm

model

alias of uid.models.Submission

template_name = 'submissions/submission_update.html'