tardis.tardis_portal package

Subpackages

Submodules

tardis.tardis_portal.MultiPartForm module

class tardis.tardis_portal.MultiPartForm.MultiPartForm

Bases: object

Accumulate the data to be used when posting a form.

add_field(name, value)

Add a simple field to the form data.

add_file(fieldname, filename, fileHandle, mimetype=None)

Add a file to be uploaded.

get_content_type()

tardis.tardis_portal.ParameterSetManager module

class tardis.tardis_portal.ParameterSetManager.ParameterSetManager(parameterset=None, parentObject=None, schema=None)

Bases: object

blank_param = None
delete_all_params()
delete_params(parname)
get_param(parname, value=False)
get_params(parname, value=False)
get_schema()
new_param(parname, value, fullparname=None)
parameters = None
parameterset = None
set_param(parname, value, fullparname=None, example_value=None)
set_param_list(parname, value_list, fullparname=None)
set_params_from_dict(dict)

tardis.tardis_portal.admin module

class tardis.tardis_portal.admin.DataFileObjectInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
form

alias of DataFileObjectInlineForm

media
model

alias of tardis.tardis_portal.models.datafile.DataFileObject

class tardis.tardis_portal.admin.DataFileObjectInlineForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = '__all__'
model

alias of tardis.tardis_portal.models.datafile.DataFileObject

widgets = {'uri': <django.forms.widgets.TextInput object at 0x7f3c1ed1d950>}
base_fields = {'datafile': <django.forms.models.ModelChoiceField object at 0x7f3c1ed26110>, 'last_verified_time': <django.forms.fields.DateTimeField object at 0x7f3c1ed26550>, 'storage_box': <django.forms.models.ModelChoiceField object at 0x7f3c1ed262d0>, 'uri': <django.forms.fields.CharField object at 0x7f3c1ed26390>, 'verified': <django.forms.fields.BooleanField object at 0x7f3c1ed264d0>}
declared_fields = {}
media
class tardis.tardis_portal.admin.DatafileAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

form

alias of DatafileAdminForm

inlines = [<class 'tardis.tardis_portal.admin.DataFileObjectInline'>]
media
search_fields = ['filename', 'id']
class tardis.tardis_portal.admin.DatafileAdminForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = '__all__'
model

alias of tardis.tardis_portal.models.datafile.DataFile

widgets = {'directory': <django.forms.widgets.TextInput object at 0x7f3c1ed260d0>}
base_fields = {'created_time': <django.forms.fields.DateTimeField object at 0x7f3c1ed26c50>, 'dataset': <django.forms.models.ModelChoiceField object at 0x7f3c1ed26750>, 'deleted': <django.forms.fields.BooleanField object at 0x7f3c1ed32050>, 'deleted_time': <django.forms.fields.DateTimeField object at 0x7f3c1ed32110>, 'directory': <django.forms.fields.CharField object at 0x7f3c1ed269d0>, 'filename': <django.forms.fields.CharField object at 0x7f3c1ed26910>, 'md5sum': <django.forms.fields.CharField object at 0x7f3c1ed26e10>, 'mimetype': <django.forms.fields.CharField object at 0x7f3c1ed26d50>, 'modification_time': <django.forms.fields.DateTimeField object at 0x7f3c1ed26cd0>, 'sha512sum': <django.forms.fields.CharField object at 0x7f3c1ed26f10>, 'size': <django.forms.fields.IntegerField object at 0x7f3c1ed26ad0>, 'version': <django.forms.fields.IntegerField object at 0x7f3c1ed32190>}
declared_fields = {}
media
class tardis.tardis_portal.admin.DatasetAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

media
search_fields = ['description', 'id']
class tardis.tardis_portal.admin.ExperimentAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

inlines = [<class 'tardis.tardis_portal.admin.ObjectACLInline'>]
media
search_fields = ['title', 'id']
class tardis.tardis_portal.admin.ExperimentParameterInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
formfield_overrides = {<class 'django.db.models.fields.TextField'>: {'widget': <class 'django.forms.widgets.TextInput'>}}
media
model

alias of tardis.tardis_portal.models.parameters.ExperimentParameter

class tardis.tardis_portal.admin.ExperimentParameterSetAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

inlines = [<class 'tardis.tardis_portal.admin.ExperimentParameterInline'>]
media
class tardis.tardis_portal.admin.FreeTextSearchFieldAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

media
class tardis.tardis_portal.admin.InstrumentParameterInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
media
model

alias of tardis.tardis_portal.models.parameters.InstrumentParameter

class tardis.tardis_portal.admin.InstrumentParameterSetAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

inlines = [<class 'tardis.tardis_portal.admin.InstrumentParameterInline'>]
media
class tardis.tardis_portal.admin.ObjectACLAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

list_display = ['__unicode__', 'pluginId', 'entityId', 'canRead', 'canWrite', 'canDelete', 'isOwner']
media
search_fields = ['content_type', 'object_id']
class tardis.tardis_portal.admin.ObjectACLInline(parent_model, admin_site)

Bases: django.contrib.contenttypes.admin.GenericTabularInline

extra = 0
media
model

alias of tardis.tardis_portal.models.access_control.ObjectACL

class tardis.tardis_portal.admin.ParameterNameAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

media
search_fields = ['name', 'schema__id']
class tardis.tardis_portal.admin.ParameterNameInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
media
model

alias of tardis.tardis_portal.models.parameters.ParameterName

class tardis.tardis_portal.admin.SchemaAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

inlines = [<class 'tardis.tardis_portal.admin.ParameterNameInline'>]
media
search_fields = ['name', 'namespace']
class tardis.tardis_portal.admin.StorageBoxAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

form

alias of StorageBoxForm

inlines = [<class 'tardis.tardis_portal.admin.StorageBoxOptionInline'>, <class 'tardis.tardis_portal.admin.StorageBoxAttributeInline'>]
media
class tardis.tardis_portal.admin.StorageBoxAttributeInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
form

alias of StorageBoxAttributeInlineForm

media
model

alias of tardis.tardis_portal.models.storage.StorageBoxAttribute

class tardis.tardis_portal.admin.StorageBoxAttributeInlineForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = '__all__'
model

alias of tardis.tardis_portal.models.storage.StorageBoxAttribute

widgets = {'key': <django.forms.widgets.TextInput object at 0x7f3c1ed8fdd0>, 'value': <django.forms.widgets.TextInput object at 0x7f3c1ed8fe50>}
base_fields = {'key': <django.forms.fields.CharField object at 0x7f3c1ed1d2d0>, 'storage_box': <django.forms.models.ModelChoiceField object at 0x7f3c1ed1d110>, 'value': <django.forms.fields.CharField object at 0x7f3c1ed1d310>}
declared_fields = {}
media
class tardis.tardis_portal.admin.StorageBoxForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = '__all__'
model

alias of tardis.tardis_portal.models.storage.StorageBox

widgets = {'description': <django.forms.widgets.TextInput object at 0x7f3c1ed1d850>, 'django_storage_class': <django.forms.widgets.TextInput object at 0x7f3c1ed1d4d0>, 'name': <django.forms.widgets.TextInput object at 0x7f3c1ed1d810>}
base_fields = {'description': <django.forms.fields.CharField object at 0x7f3c1ed1dd10>, 'django_storage_class': <django.forms.fields.CharField object at 0x7f3c1ed1d990>, 'master_box': <django.forms.models.ModelChoiceField object at 0x7f3c1ed1dd90>, 'max_size': <django.forms.fields.IntegerField object at 0x7f3c1ed1da10>, 'name': <django.forms.fields.CharField object at 0x7f3c1ed1dc50>, 'status': <django.forms.fields.CharField object at 0x7f3c1ed1db50>}
declared_fields = {}
media
class tardis.tardis_portal.admin.StorageBoxOptionInline(parent_model, admin_site)

Bases: django.contrib.admin.options.TabularInline

extra = 0
form

alias of StorageBoxOptionInlineForm

media
model

alias of tardis.tardis_portal.models.storage.StorageBoxOption

class tardis.tardis_portal.admin.StorageBoxOptionInlineForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = '__all__'
model

alias of tardis.tardis_portal.models.storage.StorageBoxOption

widgets = {'key': <django.forms.widgets.TextInput object at 0x7f3c1ed1d0d0>, 'value': <django.forms.widgets.TextInput object at 0x7f3c1ed1d350>}
base_fields = {'key': <django.forms.fields.CharField object at 0x7f3c1ed1d6d0>, 'storage_box': <django.forms.models.ModelChoiceField object at 0x7f3c1ed1d510>, 'value': <django.forms.fields.CharField object at 0x7f3c1ed1d710>, 'value_type': <django.forms.fields.TypedChoiceField object at 0x7f3c1ed1d750>}
declared_fields = {}
media

tardis.tardis_portal.ands_doi module

ands_doi.py

class tardis.tardis_portal.ands_doi.DOIService(experiment)

Bases: object

Mints DOIs using ANDS’ Cite My Data service POSTs DataCite XML to a web services endpoint

get_doi()
Returns:DOI or None
Return type:string
get_or_mint_doi(url)
Parameters:url (string) – the URL the DOI will resolve to
Returns:the DOI string
Return type:string
class tardis.tardis_portal.ands_doi.DOIXMLProvider(experiment)

Bases: object

provides datacite XML metadata for a given experiment

datacite_xml()
Returns:datacite XML for self.experiment
Return type:string

tardis.tardis_portal.api module

RESTful API for MyTardis models and data. Implemented with Tastypie.

class tardis.tardis_portal.api.ACLAuthorization

Bases: tastypie.authorization.Authorization

Authorisation class for Tastypie.

create_detail(object_list, bundle)
create_list(object_list, bundle)
delete_detail(object_list, bundle)
delete_list(object_list, bundle)
read_detail(object_list, bundle)
read_list(object_list, bundle)
update_detail(object_list, bundle)
update_list(object_list, bundle)
class tardis.tardis_portal.api.DataFileResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

filtering = {'dataset': 2, 'directory': ('exact', 'startswith'), 'filename': ('exact',)}
object_class

alias of tardis.tardis_portal.models.datafile.DataFile

ordering = ['filename', 'modification_time']
queryset
resource_name = 'dataset_file'
base_fields = {'created_time': <tastypie.fields.DateTimeField object at 0x7f3c1c27d790>, 'datafile': <tastypie.fields.FileField object at 0x7f3c1c27d3d0>, 'dataset': <tastypie.fields.ForeignKey object at 0x7f3c1c27d250>, 'deleted': <tastypie.fields.BooleanField object at 0x7f3c1c27d8d0>, 'deleted_time': <tastypie.fields.DateTimeField object at 0x7f3c1c27d910>, 'directory': <tastypie.fields.CharField object at 0x7f3c1c27d710>, 'filename': <tastypie.fields.CharField object at 0x7f3c1c27d6d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c27d690>, 'md5sum': <tastypie.fields.CharField object at 0x7f3c1c27d850>, 'mimetype': <tastypie.fields.CharField object at 0x7f3c1c27d810>, 'modification_time': <tastypie.fields.DateTimeField object at 0x7f3c1c27d7d0>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c27d390>, 'replicas': <tastypie.fields.ToManyField object at 0x7f3c1c27d410>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c27d610>, 'sha512sum': <tastypie.fields.CharField object at 0x7f3c1c27d890>, 'size': <tastypie.fields.CharField object at 0x7f3c1c27d750>, 'version': <tastypie.fields.IntegerField object at 0x7f3c1c27d950>}
declared_fields = {'datafile': <tastypie.fields.FileField object at 0x7f3c1c27d3d0>, 'dataset': <tastypie.fields.ForeignKey object at 0x7f3c1c27d250>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c27d390>, 'replicas': <tastypie.fields.ToManyField object at 0x7f3c1c27d410>}
deserialize(request, data, format=None)

from https://github.com/toastdriven/django-tastypie/issues/42 modified to deserialize json sent via POST. Would fail if data is sent in a different format. uses a hack to get back pure json from request.POST

download_file(request, **kwargs)

curl needs the -J switch to get the filename right auth needs to be added manually here

hydrate(bundle)
obj_create(bundle, **kwargs)

Creates a new DataFile object from the provided bundle.data dict.

If a duplicate key error occurs, responds with HTTP Error 409: CONFLICT

post_list(request, **kwargs)
prepend_urls()
put_detail(request, **kwargs)

from https://github.com/toastdriven/django-tastypie/issues/42

temp_url = None
verify_file(request, **kwargs)

triggers verification of file, e.g. after non-POST upload complete

class tardis.tardis_portal.api.DatafileParameterResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.DatafileParameter

queryset
base_fields = {'datetime_value': <tastypie.fields.DateTimeField object at 0x7f3c1c2690d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c27dfd0>, 'link_id': <tastypie.fields.IntegerField object at 0x7f3c1c269110>, 'name': <tastypie.fields.ForeignKey object at 0x7f3c1c27df10>, 'numerical_value': <tastypie.fields.FloatField object at 0x7f3c1c269090>, 'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c27dbd0>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c27df90>, 'string_value': <tastypie.fields.CharField object at 0x7f3c1c269050>, 'value': <tastypie.fields.CharField object at 0x7f3c1c27df50>}
declared_fields = {'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c27dbd0>}
class tardis.tardis_portal.api.DatafileParameterSetResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterSetResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.DatafileParameterSet

queryset
base_fields = {'datafile': <tastypie.fields.ForeignKey object at 0x7f3c1c27d5d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c27dc90>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c27d990>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c27dc50>, 'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c27dc10>}
declared_fields = {'datafile': <tastypie.fields.ForeignKey object at 0x7f3c1c27d5d0>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c27d990>}
class tardis.tardis_portal.api.DatasetParameterResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.DatasetParameter

queryset
base_fields = {'datetime_value': <tastypie.fields.DateTimeField object at 0x7f3c1c252d10>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c252c50>, 'link_id': <tastypie.fields.IntegerField object at 0x7f3c1c252d50>, 'name': <tastypie.fields.ForeignKey object at 0x7f3c1c252b90>, 'numerical_value': <tastypie.fields.FloatField object at 0x7f3c1c252cd0>, 'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c252850>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c252c10>, 'string_value': <tastypie.fields.CharField object at 0x7f3c1c252c90>, 'value': <tastypie.fields.CharField object at 0x7f3c1c252bd0>}
declared_fields = {'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c252850>}
class tardis.tardis_portal.api.DatasetParameterSetResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterSetResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.DatasetParameterSet

queryset
base_fields = {'dataset': <tastypie.fields.ForeignKey object at 0x7f3c1c252310>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c252910>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c252690>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c2528d0>, 'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c252890>}
declared_fields = {'dataset': <tastypie.fields.ForeignKey object at 0x7f3c1c252310>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c252690>}
class tardis.tardis_portal.api.DatasetResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

always_return_data = True
filtering = {'description': ('exact',), 'directory': ('exact',), 'experiments': 2, 'id': ('exact',), 'instrument': 2}
object_class

alias of tardis.tardis_portal.models.dataset.Dataset

ordering = ['description']
queryset
base_fields = {'description': <tastypie.fields.CharField object at 0x7f3c1c27d2d0>, 'directory': <tastypie.fields.CharField object at 0x7f3c1c27d310>, 'experiments': <tastypie.fields.ToManyField object at 0x7f3c1c257dd0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c27d290>, 'immutable': <tastypie.fields.BooleanField object at 0x7f3c1c27d350>, 'instrument': <tastypie.fields.ForeignKey object at 0x7f3c1c257f10>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c257ed0>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c27d1d0>}
declared_fields = {'experiments': <tastypie.fields.ToManyField object at 0x7f3c1c257dd0>, 'instrument': <tastypie.fields.ForeignKey object at 0x7f3c1c257f10>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c257ed0>}
get_datafiles(request, **kwargs)
prepend_urls()
class tardis.tardis_portal.api.ExperimentParameterResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.ExperimentParameter

queryset
base_fields = {'datetime_value': <tastypie.fields.DateTimeField object at 0x7f3c1c244f50>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c244e90>, 'link_id': <tastypie.fields.IntegerField object at 0x7f3c1c244f90>, 'name': <tastypie.fields.ForeignKey object at 0x7f3c1c244dd0>, 'numerical_value': <tastypie.fields.FloatField object at 0x7f3c1c244f10>, 'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c244a90>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c244e50>, 'string_value': <tastypie.fields.CharField object at 0x7f3c1c244ed0>, 'value': <tastypie.fields.CharField object at 0x7f3c1c244e10>}
declared_fields = {'parameterset': <tastypie.fields.ForeignKey object at 0x7f3c1c244a90>}
class tardis.tardis_portal.api.ExperimentParameterSetResource(api_name=None)

Bases: tardis.tardis_portal.api.ParameterSetResource

API for ExperimentParameterSets

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.parameters.ExperimentParameterSet

queryset
base_fields = {'experiment': <tastypie.fields.ForeignKey object at 0x7f3c1c244790>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c244b50>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c244850>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c244b10>, 'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c244ad0>}
declared_fields = {'experiment': <tastypie.fields.ForeignKey object at 0x7f3c1c244790>, 'parameters': <tastypie.fields.ToManyField object at 0x7f3c1c244850>}
class tardis.tardis_portal.api.ExperimentResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

API for Experiments also creates a default ACL and allows ExperimentParameterSets to be read and written.

TODO: catch duplicate schema submissions for parameter sets

class Meta

Bases: tardis.tardis_portal.api.Meta

always_return_data = True
filtering = {'id': ('exact',), 'title': ('exact',)}
object_class

alias of tardis.tardis_portal.models.experiment.Experiment

ordering = ['title', 'created_time', 'update_time']
queryset
base_fields = {'approved': <tastypie.fields.BooleanField object at 0x7f3c1c2523d0>, 'created_by': <tastypie.fields.ForeignKey object at 0x7f3c1c244d90>, 'created_time': <tastypie.fields.DateTimeField object at 0x7f3c1c252550>, 'description': <tastypie.fields.CharField object at 0x7f3c1c252490>, 'end_time': <tastypie.fields.DateTimeField object at 0x7f3c1c252510>, 'handle': <tastypie.fields.CharField object at 0x7f3c1c2525d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c252350>, 'institution_name': <tastypie.fields.CharField object at 0x7f3c1c252450>, 'locked': <tastypie.fields.BooleanField object at 0x7f3c1c252610>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c244fd0>, 'public_access': <tastypie.fields.IntegerField object at 0x7f3c1c252650>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c252290>, 'start_time': <tastypie.fields.DateTimeField object at 0x7f3c1c2524d0>, 'title': <tastypie.fields.CharField object at 0x7f3c1c252410>, 'update_time': <tastypie.fields.DateTimeField object at 0x7f3c1c252590>, 'url': <tastypie.fields.CharField object at 0x7f3c1c252390>}
declared_fields = {'created_by': <tastypie.fields.ForeignKey object at 0x7f3c1c244d90>, 'parameter_sets': <tastypie.fields.ToManyField object at 0x7f3c1c244fd0>}
dehydrate(bundle)
hydrate_m2m(bundle)

create ACL before any related objects are created in order to use ACL permissions for those objects.

obj_create(bundle, **kwargs)

experiments need at least one ACL to be available through the ExperimentManager (Experiment.safe) Currently not tested for failed db transactions as sqlite does not enforce limits.

obj_get_list(bundle, **kwargs)

responds to EPN query for Australian Synchrotron

class tardis.tardis_portal.api.FacilityResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

always_return_data = True
filtering = {'id': ('exact',), 'manager_group': 2, 'name': ('exact',)}
object_class

alias of tardis.tardis_portal.models.facility.Facility

queryset
base_fields = {u'id': <tastypie.fields.IntegerField object at 0x7f3c1c257b50>, 'manager_group': <tastypie.fields.ForeignKey object at 0x7f3c1c257790>, 'name': <tastypie.fields.CharField object at 0x7f3c1c257b90>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c257b10>}
declared_fields = {'manager_group': <tastypie.fields.ForeignKey object at 0x7f3c1c257790>}
class tardis.tardis_portal.api.GroupResource(api_name=None)

Bases: tastypie.resources.ModelResource

class Meta
authentication = <tardis.tardis_portal.api.MyTardisAuthentication object>
authorization

Authorisation class for Tastypie.

filtering = {'id': ('exact',), 'name': ('exact',)}
object_class

alias of django.contrib.auth.models.Group

queryset
base_fields = {u'id': <tastypie.fields.IntegerField object at 0x7f3c1c240a50>, 'name': <tastypie.fields.CharField object at 0x7f3c1c240a90>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c240a10>}
declared_fields = {}
class tardis.tardis_portal.api.InstrumentResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

always_return_data = True
filtering = {'facility': 2, 'id': ('exact',), 'name': ('exact',)}
object_class

alias of tardis.tardis_portal.models.instrument.Instrument

queryset
base_fields = {'facility': <tastypie.fields.ForeignKey object at 0x7f3c1c257ad0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c257e50>, 'name': <tastypie.fields.CharField object at 0x7f3c1c257e90>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c257e10>}
declared_fields = {'facility': <tastypie.fields.ForeignKey object at 0x7f3c1c257ad0>}
class tardis.tardis_portal.api.LocationResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.storage.StorageBox

queryset
base_fields = {'description': <tastypie.fields.CharField object at 0x7f3c1c2694d0>, 'django_storage_class': <tastypie.fields.CharField object at 0x7f3c1c2693d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c269390>, 'max_size': <tastypie.fields.CharField object at 0x7f3c1c269410>, 'name': <tastypie.fields.CharField object at 0x7f3c1c269490>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c269350>, 'status': <tastypie.fields.CharField object at 0x7f3c1c269450>}
declared_fields = {}
class tardis.tardis_portal.api.MyTardisAuthentication

Bases: object

custom tastypie authentication that works with both anonymous use and a number of available auth mechanisms.

get_identifier(request)
is_authenticated(request, **kwargs)

handles backends explicitly so that it can return False when credentials are given but wrong and return Anonymous User when credentials are not given or the session has expired (web use).

class tardis.tardis_portal.api.MyTardisModelResource(api_name=None)

Bases: tastypie.resources.ModelResource

class Meta
authentication = <tardis.tardis_portal.api.MyTardisAuthentication object>
authorization

Authorisation class for Tastypie.

serializer = <tardis.tardis_portal.api.PrettyJSONSerializer object>
base_fields = {u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c240e50>}
declared_fields = {}
lookup_kwargs_with_identifiers(bundle, kwargs)
class tardis.tardis_portal.api.ObjectACLResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta
authentication = <tardis.tardis_portal.api.MyTardisAuthentication object>
authorization

Authorisation class for Tastypie.

filtering = {'entityId': ('exact',), 'pluginId': ('exact',)}
object_class

alias of tardis.tardis_portal.models.access_control.ObjectACL

queryset
base_fields = {'aclOwnershipType': <tastypie.fields.IntegerField object at 0x7f3c1c269dd0>, 'canDelete': <tastypie.fields.BooleanField object at 0x7f3c1c269cd0>, 'canRead': <tastypie.fields.BooleanField object at 0x7f3c1c269c50>, 'canWrite': <tastypie.fields.BooleanField object at 0x7f3c1c269c90>, 'content_object': <tastypie.contrib.contenttypes.fields.GenericForeignKeyField object at 0x7f3c1c269710>, 'effectiveDate': <tastypie.fields.DateTimeField object at 0x7f3c1c269d50>, 'entityId': <tastypie.fields.CharField object at 0x7f3c1c269bd0>, 'expiryDate': <tastypie.fields.DateTimeField object at 0x7f3c1c269d90>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c269b50>, 'isOwner': <tastypie.fields.BooleanField object at 0x7f3c1c269d10>, 'object_id': <tastypie.fields.IntegerField object at 0x7f3c1c269c10>, 'pluginId': <tastypie.fields.CharField object at 0x7f3c1c269b90>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c269b10>}
declared_fields = {'content_object': <tastypie.contrib.contenttypes.fields.GenericForeignKeyField object at 0x7f3c1c269710>}
hydrate(bundle)
class tardis.tardis_portal.api.ParameterNameResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

filtering = {'schema': 2}
object_class

alias of tardis.tardis_portal.models.parameters.ParameterName

queryset
base_fields = {'choices': <tastypie.fields.CharField object at 0x7f3c1c2445d0>, 'comparison_type': <tastypie.fields.IntegerField object at 0x7f3c1c244550>, 'data_type': <tastypie.fields.IntegerField object at 0x7f3c1c2444d0>, 'full_name': <tastypie.fields.CharField object at 0x7f3c1c244450>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c2443d0>, 'immutable': <tastypie.fields.BooleanField object at 0x7f3c1c244510>, 'is_searchable': <tastypie.fields.BooleanField object at 0x7f3c1c244590>, 'name': <tastypie.fields.CharField object at 0x7f3c1c244410>, 'order': <tastypie.fields.IntegerField object at 0x7f3c1c244610>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c244390>, 'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c240f90>, 'units': <tastypie.fields.CharField object at 0x7f3c1c244490>}
declared_fields = {'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c240f90>}
class tardis.tardis_portal.api.ParameterResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

base_fields = {'name': <tastypie.fields.ForeignKey object at 0x7f3c1c244350>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c244710>, 'value': <tastypie.fields.CharField object at 0x7f3c1c244650>}
declared_fields = {'name': <tastypie.fields.ForeignKey object at 0x7f3c1c244350>, 'value': <tastypie.fields.CharField object at 0x7f3c1c244650>}
hydrate(bundle)

sets the parametername by uri or name if untyped value is given, set value via parameter method, otherwise use modelresource automatisms

class tardis.tardis_portal.api.ParameterSetResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

base_fields = {u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c2447d0>, 'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c2446d0>}
declared_fields = {'schema': <tastypie.fields.ForeignKey object at 0x7f3c1c2446d0>}
hydrate_schema(bundle)
class tardis.tardis_portal.api.PrettyJSONSerializer(formats=None, content_types=None, datetime_formatting=None)

Bases: tastypie.serializers.Serializer

json_indent = 2
to_json(data, options=None)
class tardis.tardis_portal.api.ReplicaResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

filtering = {'url': ('exact', 'startswith'), 'verified': ('exact',)}
object_class

alias of tardis.tardis_portal.models.datafile.DataFileObject

queryset
base_fields = {'created_time': <tastypie.fields.DateTimeField object at 0x7f3c1c269810>, 'datafile': <tastypie.fields.ForeignKey object at 0x7f3c1c269310>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c269790>, 'last_verified_time': <tastypie.fields.DateTimeField object at 0x7f3c1c269890>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c269750>, 'uri': <tastypie.fields.CharField object at 0x7f3c1c2697d0>, 'verified': <tastypie.fields.BooleanField object at 0x7f3c1c269850>}
declared_fields = {'datafile': <tastypie.fields.ForeignKey object at 0x7f3c1c269310>}
dehydrate(bundle)
hydrate(bundle)
class tardis.tardis_portal.api.SchemaResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

filtering = {'id': ('exact',), 'namespace': ('exact',)}
object_class

alias of tardis.tardis_portal.models.parameters.Schema

queryset
base_fields = {'hidden': <tastypie.fields.BooleanField object at 0x7f3c1c2441d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c244050>, 'immutable': <tastypie.fields.BooleanField object at 0x7f3c1c244190>, 'name': <tastypie.fields.CharField object at 0x7f3c1c2440d0>, 'namespace': <tastypie.fields.CharField object at 0x7f3c1c244090>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c240fd0>, 'subtype': <tastypie.fields.CharField object at 0x7f3c1c244150>, 'type': <tastypie.fields.IntegerField object at 0x7f3c1c244110>}
declared_fields = {}
lookup_kwargs_with_identifiers(bundle, kwargs)
class tardis.tardis_portal.api.StorageBoxAttributeResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.storage.StorageBoxAttribute

queryset
base_fields = {u'id': <tastypie.fields.IntegerField object at 0x7f3c1c257810>, 'key': <tastypie.fields.CharField object at 0x7f3c1c257850>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c2577d0>, 'storage_box': <tastypie.fields.ForeignKey object at 0x7f3c1c257410>, 'value': <tastypie.fields.CharField object at 0x7f3c1c257890>}
declared_fields = {'storage_box': <tastypie.fields.ForeignKey object at 0x7f3c1c257410>}
class tardis.tardis_portal.api.StorageBoxOptionResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.storage.StorageBoxOption

queryset
accessible_keys = ['location']
base_fields = {u'id': <tastypie.fields.IntegerField object at 0x7f3c1c257490>, 'key': <tastypie.fields.CharField object at 0x7f3c1c2574d0>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c257450>, 'storage_box': <tastypie.fields.ForeignKey object at 0x7f3c1c252fd0>, 'value': <tastypie.fields.CharField object at 0x7f3c1c257510>, 'value_type': <tastypie.fields.CharField object at 0x7f3c1c257550>}
declared_fields = {'storage_box': <tastypie.fields.ForeignKey object at 0x7f3c1c252fd0>}
class tardis.tardis_portal.api.StorageBoxResource(api_name=None)

Bases: tardis.tardis_portal.api.MyTardisModelResource

class Meta

Bases: tardis.tardis_portal.api.Meta

object_class

alias of tardis.tardis_portal.models.storage.StorageBox

queryset
base_fields = {'attributes': <tastypie.fields.ToManyField object at 0x7f3c1c252d90>, 'description': <tastypie.fields.CharField object at 0x7f3c1c2571d0>, 'django_storage_class': <tastypie.fields.CharField object at 0x7f3c1c2570d0>, u'id': <tastypie.fields.IntegerField object at 0x7f3c1c257090>, 'max_size': <tastypie.fields.CharField object at 0x7f3c1c257110>, 'name': <tastypie.fields.CharField object at 0x7f3c1c257190>, 'options': <tastypie.fields.ToManyField object at 0x7f3c1c252b50>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c257050>, 'status': <tastypie.fields.CharField object at 0x7f3c1c257150>}
declared_fields = {'attributes': <tastypie.fields.ToManyField object at 0x7f3c1c252d90>, 'options': <tastypie.fields.ToManyField object at 0x7f3c1c252b50>}
class tardis.tardis_portal.api.UserResource(api_name=None)

Bases: tastypie.resources.ModelResource

class Meta
allowed_methods = ['get']
authentication = <tardis.tardis_portal.api.MyTardisAuthentication object>
authorization

Authorisation class for Tastypie.

fields = ['username', 'first_name', 'last_name', 'email']
filtering = {'email': ('iexact',), 'username': ('exact',)}
object_class

alias of django.contrib.auth.models.User

queryset
serializer = <tardis.tardis_portal.api.PrettyJSONSerializer object>
base_fields = {'email': <tastypie.fields.CharField object at 0x7f3c1c240d90>, 'first_name': <tastypie.fields.CharField object at 0x7f3c1c240d10>, 'groups': <tastypie.fields.ManyToManyField object at 0x7f3c1c2409d0>, 'last_name': <tastypie.fields.CharField object at 0x7f3c1c240d50>, u'resource_uri': <tastypie.fields.CharField object at 0x7f3c1c240c90>, 'username': <tastypie.fields.CharField object at 0x7f3c1c240cd0>}
declared_fields = {'groups': <tastypie.fields.ManyToManyField object at 0x7f3c1c2409d0>}
dehydrate(bundle)

use cases: public user:

anonymous:
name, uri, email, id
authenticated:
other user:
name, uri, email, id [, username if facility manager]
same user:
name, uri, email, id, username
private user:
anonymous:
none
authenticated:
other user:
name, uri, id [, username, email if facility manager]
same user:
name, uri, email, id, username
tardis.tardis_portal.api.lookup_by_unique_id_only(resource)

returns custom lookup function. initialise with resource type

tardis.tardis_portal.constants module

constants.py

@author: Gerson Galang

tardis.tardis_portal.context_processors module

tardis.tardis_portal.context_processors.global_contexts(request)
tardis.tardis_portal.context_processors.google_analytics(request)

adds context for portal_template.html

tardis.tardis_portal.context_processors.manage_account_processor(request)
tardis.tardis_portal.context_processors.registration_processor(request)
tardis.tardis_portal.context_processors.single_search_processor(request)
tardis.tardis_portal.context_processors.tokenuser_processor(request)
tardis.tardis_portal.context_processors.user_details_processor(request)

tardis.tardis_portal.creativecommonshandler module

Creative Commons Handler

A wrapper for creative commons interactions on a ParameterSet

class tardis.tardis_portal.creativecommonshandler.CreativeCommonsHandler(experiment_id=None, create=True)
experiment_id = None
get_or_create_cc_parameterset(create=True)

Gets the creative commons parameterset for the experiment :param create: If true, creates a new parameterset object to hold the cc license if one doesn’t exist :type create: boolean :return: The parameterset manager for the cc parameterset :rtype: tardis.tardis_portal.ParameterSetManager. ParameterSetManager

has_cc_license()
Returns:True if there’s a cc license parameterset for the experiment
Return type:boolean
psm = None
save_license(request)

Saves a license parameterset with the POST variables from the creative commons form :param request: a HTTP Request instance :type request: django.http.HttpRequest

schema = 'http://www.tardis.edu.au/schemas/creative_commons/2011/05/17'

tardis.tardis_portal.deprecations module

Deprecation warnings

exception tardis.tardis_portal.deprecations.RemovedInMyTardis40Warning

Bases: exceptions.DeprecationWarning

Used to raise warnings about deprecated functionality.

Usage:

import warnings

warnings.warn(
“This method will be removed in MyTardis 4.0. ” “Please use method2 instead.”, RemovedInMyTardis40Warning

)

tardis.tardis_portal.download module

tardis.tardis_portal.email module

tardis.tardis_portal.email.build_template_html(template_filename, context)
tardis.tardis_portal.email.build_template_text(template_filename, context)
tardis.tardis_portal.email.email_user(subject, template_filename, context, user)

tardis.tardis_portal.errors module

Created on 02/09/2010

exception tardis.tardis_portal.errors.ParameterChoicesFormatError(msg)

Bases: exceptions.Exception

exception tardis.tardis_portal.errors.SearchQueryTypeUnprovidedError(msg)

Bases: exceptions.Exception

exception tardis.tardis_portal.errors.UnsupportedSearchQueryTypeError(msg)

Bases: exceptions.Exception

tardis.tardis_portal.fetcher module

tardis.tardis_portal.fetcher.get_credential_handler()
tardis.tardis_portal.fetcher.get_privileged_opener()

tardis.tardis_portal.fields module

class tardis.tardis_portal.fields.MultiValueCommaSeparatedField(fields=(), *args, **kwargs)

Bases: django.forms.fields.MultiValueField

compress(data_list)

tardis.tardis_portal.forms module

forms module

class tardis.tardis_portal.forms.AddGroupPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'addgroup': <django.forms.fields.CharField object at 0x7f3c1c35b550>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b650>}
declared_fields = {'addgroup': <django.forms.fields.CharField object at 0x7f3c1c35b550>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b650>}
media
class tardis.tardis_portal.forms.AddUserPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b290>, 'autocomp_user': <django.forms.fields.CharField object at 0x7f3c1c35b190>, 'delete': <django.forms.fields.BooleanField object at 0x7f3c1c35b3d0>, 'entered_user': <django.forms.fields.CharField object at 0x7f3c1c35b0d0>, 'read': <django.forms.fields.BooleanField object at 0x7f3c1c35b2d0>, 'write': <django.forms.fields.BooleanField object at 0x7f3c1c35b350>}
declared_fields = {'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b290>, 'autocomp_user': <django.forms.fields.CharField object at 0x7f3c1c35b190>, 'delete': <django.forms.fields.BooleanField object at 0x7f3c1c35b3d0>, 'entered_user': <django.forms.fields.CharField object at 0x7f3c1c35b0d0>, 'read': <django.forms.fields.BooleanField object at 0x7f3c1c35b2d0>, 'write': <django.forms.fields.BooleanField object at 0x7f3c1c35b350>}
media
class tardis.tardis_portal.forms.ChangeGroupPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

class SelectDateWidget(attrs=None, years=None, months=None, empty_label=None)

Bases: django.forms.widgets.Widget

A Widget that splits date input into three <select> boxes.

This also serves as an example of a Widget that has more than one HTML element and hence implements value_from_datadict.

create_select(name, field, value, val, choices, none_value)
day_field = u'%s_day'
id_for_label(id_)
media
month_field = u'%s_month'
none_value = (0, u'---')
render(name, value, attrs=None)
value_from_datadict(data, files, name)
year_field = u'%s_year'
base_fields = {'canDelete': <django.forms.fields.BooleanField object at 0x7f3c1c34fed0>, 'canRead': <django.forms.fields.BooleanField object at 0x7f3c1c34fb90>, 'canWrite': <django.forms.fields.BooleanField object at 0x7f3c1c34fe50>, 'effectiveDate': <django.forms.fields.DateTimeField object at 0x7f3c1c34ff90>, 'expiryDate': <django.forms.fields.DateTimeField object at 0x7f3c1c35b050>}
declared_fields = {'canDelete': <django.forms.fields.BooleanField object at 0x7f3c1c34fed0>, 'canRead': <django.forms.fields.BooleanField object at 0x7f3c1c34fb90>, 'canWrite': <django.forms.fields.BooleanField object at 0x7f3c1c34fe50>, 'effectiveDate': <django.forms.fields.DateTimeField object at 0x7f3c1c34ff90>, 'expiryDate': <django.forms.fields.DateTimeField object at 0x7f3c1c35b050>}
media
class tardis.tardis_portal.forms.ChangeUserPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
class ObjectACL(*args, **kwargs)

Bases: django.db.models.base.Model

The ObjectACL (formerly ExperimentACL) table is the core of the Tardis Authorisation framework

Attribute pluginId:
 the the name of the auth plugin being used
Attribute entityId:
 a foreign key to auth plugins
Attribute object_type:
 a foreign key to ContentType
Attribute object_id:
 the primary key/id of the object_type
Attribute canRead:
 gives the user read access
Attribute canWrite:
 gives the user write access
Attribute canDelete:
 gives the user delete permission
Attribute isOwner:
 the experiment owner flag.
Attribute effectiveDate:
 the date when access takes into effect
Attribute expiryDate:
 the date when access ceases
Attribute aclOwnershipType:
 system-owned or user-owned.

System-owned ACLs will prevent users from removing or editing ACL entries to a particular experiment they own. User-owned ACLs will allow experiment owners to remove/add/edit ACL entries to the experiments they own.

exception DoesNotExist

Bases: django.core.exceptions.ObjectDoesNotExist

exception MultipleObjectsReturned

Bases: django.core.exceptions.MultipleObjectsReturned

OWNER_OWNED = 1
SYSTEM_OWNED = 2
content_object

Provides a generic relation to any object through content-type/object-id fields.

content_type
get_aclOwnershipType_display(**morekwargs)
classmethod get_effective_query()

If possible, resolve the pluginId/entityId combination to a user or group object.

If possible, resolve the pluginId/entityId combination to a user or group object.

objects = <django.db.models.manager.Manager object>
class SelectDateWidget(attrs=None, years=None, months=None, empty_label=None)

Bases: django.forms.widgets.Widget

A Widget that splits date input into three <select> boxes.

This also serves as an example of a Widget that has more than one HTML element and hence implements value_from_datadict.

create_select(name, field, value, val, choices, none_value)
day_field = u'%s_day'
id_for_label(id_)
media
month_field = u'%s_month'
none_value = (0, u'---')
render(name, value, attrs=None)
value_from_datadict(data, files, name)
year_field = u'%s_year'
fields = ['canDelete', 'canRead', 'canWrite', 'effectiveDate', 'expiryDate', 'isOwner']
model

alias of tardis.tardis_portal.models.access_control.ObjectACL

widgets = {'effectiveDate': <django.forms.extras.widgets.SelectDateWidget object at 0x7f3c1c34f950>, 'expiryDate': <django.forms.extras.widgets.SelectDateWidget object at 0x7f3c1c34f910>}
base_fields = {'canDelete': <django.forms.fields.BooleanField object at 0x7f3c1c34fc90>, 'canRead': <django.forms.fields.BooleanField object at 0x7f3c1c34fb50>, 'canWrite': <django.forms.fields.BooleanField object at 0x7f3c1c34fc10>, 'effectiveDate': <django.forms.fields.DateField object at 0x7f3c1c34fd90>, 'expiryDate': <django.forms.fields.DateField object at 0x7f3c1c34fdd0>, 'isOwner': <django.forms.fields.BooleanField object at 0x7f3c1c34fd10>}
declared_fields = {}
media
class tardis.tardis_portal.forms.CreateGroupPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'addgroup': <django.forms.fields.CharField object at 0x7f3c1c35b750>, 'adduser': <django.forms.fields.CharField object at 0x7f3c1c35b890>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b850>}
declared_fields = {'addgroup': <django.forms.fields.CharField object at 0x7f3c1c35b750>, 'adduser': <django.forms.fields.CharField object at 0x7f3c1c35b890>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35b850>}
media
class tardis.tardis_portal.forms.CreateUserPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: tardis.tardis_portal.forms.RegistrationForm

base_fields = {'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35bd10>, 'email': <django.forms.fields.EmailField object at 0x7f3c1c34f390>, 'password1': <django.forms.fields.CharField object at 0x7f3c1c34f450>, 'password2': <django.forms.fields.CharField object at 0x7f3c1c34f550>, 'username': <django.forms.fields.RegexField object at 0x7f3c1c34f1d0>}
declared_fields = {'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35bd10>, 'email': <django.forms.fields.EmailField object at 0x7f3c1c34f390>, 'password1': <django.forms.fields.CharField object at 0x7f3c1c34f450>, 'password2': <django.forms.fields.CharField object at 0x7f3c1c34f550>, 'username': <django.forms.fields.RegexField object at 0x7f3c1c34f1d0>}
media
class tardis.tardis_portal.forms.DatafileSearchForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>}
declared_fields = {'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>}
media
class tardis.tardis_portal.forms.DatasetForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = ['description', 'directory', 'instrument']
model

alias of tardis.tardis_portal.models.dataset.Dataset

base_fields = {'description': <django.forms.fields.CharField object at 0x7f3c1c1e6e90>, 'directory': <django.forms.fields.CharField object at 0x7f3c1c1f6110>, 'instrument': <django.forms.models.ModelChoiceField object at 0x7f3c1c1f6210>}
declared_fields = {'description': <django.forms.fields.CharField object at 0x7f3c1c1e6e90>}
media
class tardis.tardis_portal.forms.ExperimentAuthor(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

class Meta
fields = ['author', 'institution', 'email', 'order', 'url']
model

alias of tardis.tardis_portal.models.experiment.ExperimentAuthor

base_fields = {'author': <django.forms.fields.CharField object at 0x7f3c1c1f60d0>, 'email': <django.forms.fields.CharField object at 0x7f3c1c1f65d0>, 'institution': <django.forms.fields.CharField object at 0x7f3c1c1f64d0>, 'order': <django.forms.fields.IntegerField object at 0x7f3c1c1f6710>, 'url': <django.forms.fields.URLField object at 0x7f3c1c1f6810>}
declared_fields = {}
media
class tardis.tardis_portal.forms.ExperimentForm(data=None, files=None, auto_id='%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=':', empty_permitted=False, instance=None, extra=0)

Bases: django.forms.models.ModelForm

This handles the complex experiment forms.

All internal datasets forms are prefixed with dataset_, and all internal dataset file fields are prefixed with file_. These are parsed out of the post data and added to the form as internal lists.

class FullExperiment(**kwargs)

Bases: UserDict.UserDict

This is a dict wrapper that store the values returned from the tardis.tardis_portal.forms.ExperimentForm.save() function. It provides a convience method for saving the model objects.

save_m2m()

{‘experiment’: experiment, ‘experiment_authors’: experiment_authors, ‘authors’: authors, ‘datasets’: datasets, ‘datafiles’: datafiles}

class Meta
fields = ('title', 'institution_name', 'description')
model

alias of tardis.tardis_portal.models.experiment.Experiment

base_fields = {'description': <django.forms.fields.CharField object at 0x7f3c1c1f6c90>, 'institution_name': <django.forms.fields.CharField object at 0x7f3c1c1f6b90>, 'title': <django.forms.fields.CharField object at 0x7f3c1c1f6a50>, 'url': <django.forms.fields.CharField object at 0x7f3c1c1f68d0>}
declared_fields = {'url': <django.forms.fields.CharField object at 0x7f3c1c1f68d0>}
is_valid()

Test the validity of the form, the form may be invalid even if the error attribute has no contents. This is because the returnd value is dependent on the validity of the nested forms.

This validity also takes into account forign keys that might be dependent on an unsaved model.

Returns:validity
Return type:bool
media
save(commit=True)
class tardis.tardis_portal.forms.IRDatafileSearchForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: tardis.tardis_portal.forms.DatafileSearchForm

base_fields = {'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>}
declared_fields = {'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>}
media
class tardis.tardis_portal.forms.ImportParamsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'params': <django.forms.fields.FileField object at 0x7f3c1c1e6610>, 'password': <django.forms.fields.CharField object at 0x7f3c1c1e6550>, 'username': <django.forms.fields.CharField object at 0x7f3c1c1e6490>}
declared_fields = {'params': <django.forms.fields.FileField object at 0x7f3c1c1e6610>, 'password': <django.forms.fields.CharField object at 0x7f3c1c1e6550>, 'username': <django.forms.fields.CharField object at 0x7f3c1c1e6490>}
media
class tardis.tardis_portal.forms.LoginForm(*args, **kwargs)

Bases: django.contrib.auth.forms.AuthenticationForm

base_fields = {'password': <django.forms.fields.CharField object at 0x7f3c1ee07b50>, 'username': <django.forms.fields.CharField object at 0x7f3c1ee07a90>}
declared_fields = {'password': <django.forms.fields.CharField object at 0x7f3c1ee07b50>, 'username': <django.forms.fields.CharField object at 0x7f3c1ee07a90>}
media
class tardis.tardis_portal.forms.MXDatafileSearchForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: tardis.tardis_portal.forms.DatafileSearchForm

base_fields = {'crystalName': <django.forms.fields.CharField object at 0x7f3c1c1e60d0>, 'diffractometerType': <django.forms.fields.CharField object at 0x7f3c1c35bf90>, 'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>, 'resolutionLimit': <django.forms.fields.IntegerField object at 0x7f3c1c1e6190>, 'xraySource': <django.forms.fields.CharField object at 0x7f3c1c35bfd0>, 'xrayWavelengthFrom': <django.forms.fields.IntegerField object at 0x7f3c1c1e6250>, 'xrayWavelengthTo': <django.forms.fields.IntegerField object at 0x7f3c1c1e62d0>}
declared_fields = {'crystalName': <django.forms.fields.CharField object at 0x7f3c1c1e60d0>, 'diffractometerType': <django.forms.fields.CharField object at 0x7f3c1c35bf90>, 'filename': <django.forms.fields.CharField object at 0x7f3c1c35bdd0>, 'resolutionLimit': <django.forms.fields.IntegerField object at 0x7f3c1c1e6190>, 'xraySource': <django.forms.fields.CharField object at 0x7f3c1c35bfd0>, 'xrayWavelengthFrom': <django.forms.fields.IntegerField object at 0x7f3c1c1e6250>, 'xrayWavelengthTo': <django.forms.fields.IntegerField object at 0x7f3c1c1e62d0>}
media
class tardis.tardis_portal.forms.ManageAccountForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

Form for changing account details.

class Meta
fields = ('first_name', 'last_name', 'email')
model

alias of django.contrib.auth.models.User

base_fields = {'email': <django.forms.fields.EmailField object at 0x7f3c1c2066d0>, 'first_name': <django.forms.fields.CharField object at 0x7f3c1c2063d0>, 'last_name': <django.forms.fields.CharField object at 0x7f3c1c206510>}
declared_fields = {}
media
class tardis.tardis_portal.forms.ManageGroupPermissionsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'adduser': <django.forms.fields.CharField object at 0x7f3c1c35bad0>, 'admin': <django.forms.fields.BooleanField object at 0x7f3c1c35bb90>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35ba90>}
declared_fields = {'adduser': <django.forms.fields.CharField object at 0x7f3c1c35bad0>, 'admin': <django.forms.fields.BooleanField object at 0x7f3c1c35bb90>, 'authMethod': <django.forms.fields.CharField object at 0x7f3c1c35ba90>}
media
class tardis.tardis_portal.forms.NoInput(attrs=None)

Bases: django.forms.widgets.Widget

media
render(name, value, attrs=None)
class tardis.tardis_portal.forms.RawSearchForm(*args, **kwargs)

Bases: haystack.forms.SearchForm

base_fields = {'q': <django.forms.fields.CharField object at 0x7f3c1c347310>}
declared_fields = {'q': <django.forms.fields.CharField object at 0x7f3c1c347310>}
media
search()
class tardis.tardis_portal.forms.RegisterExperimentForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

base_fields = {'experiment_owner': <django.forms.fields.CharField object at 0x7f3c1c1e6a90>, 'from_url': <django.forms.fields.CharField object at 0x7f3c1c1e6c90>, 'originid': <django.forms.fields.CharField object at 0x7f3c1c1e6b90>, 'password': <django.forms.fields.CharField object at 0x7f3c1c1e6850>, 'username': <django.forms.fields.CharField object at 0x7f3c1c1e6790>, 'xml_filename': <django.forms.fields.CharField object at 0x7f3c1c1e6990>, 'xmldata': <django.forms.fields.FileField object at 0x7f3c1c1e6910>}
declared_fields = {'experiment_owner': <django.forms.fields.CharField object at 0x7f3c1c1e6a90>, 'from_url': <django.forms.fields.CharField object at 0x7f3c1c1e6c90>, 'originid': <django.forms.fields.CharField object at 0x7f3c1c1e6b90>, 'password': <django.forms.fields.CharField object at 0x7f3c1c1e6850>, 'username': <django.forms.fields.CharField object at 0x7f3c1c1e6790>, 'xml_filename': <django.forms.fields.CharField object at 0x7f3c1c1e6990>, 'xmldata': <django.forms.fields.FileField object at 0x7f3c1c1e6910>}
media
class tardis.tardis_portal.forms.RegistrationForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False)

Bases: django.forms.forms.Form

Form for registering a new user account.

Validates that the requested username is not already in use, and requires the password to be entered twice to catch typos.

Subclasses should feel free to add any additional validation they need, but should avoid defining a save() method – the actual saving of collected user data is delegated to the active registration backend.

base_fields = {'email': <django.forms.fields.EmailField object at 0x7f3c1c34f390>, 'password1': <django.forms.fields.CharField object at 0x7f3c1c34f450>, 'password2': <django.forms.fields.CharField object at 0x7f3c1c34f550>, 'username': <django.forms.fields.RegexField object at 0x7f3c1c34f1d0>}
clean()

Verifiy that the values entered into the two password fields match. Note that an error here will end up in non_field_errors() because it doesn’t apply to a single field.

clean_username()

Validate that the username is alphanumeric and is not already in use.

declared_fields = {'email': <django.forms.fields.EmailField object at 0x7f3c1c34f390>, 'password1': <django.forms.fields.CharField object at 0x7f3c1c34f450>, 'password2': <django.forms.fields.CharField object at 0x7f3c1c34f550>, 'username': <django.forms.fields.RegexField object at 0x7f3c1c34f1d0>}
media
save(**kwargs)
class tardis.tardis_portal.forms.RightsForm(data=None, files=None, auto_id=u'id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None)

Bases: django.forms.models.ModelForm

Form for changing public access and licence.

class Meta
fields = ('public_access', 'license')
model

alias of tardis.tardis_portal.models.experiment.Experiment

widgets = {'license': <django.forms.widgets.HiddenInput object at 0x7f3c1c1f6f10>}
base_fields = {'license': <django.forms.models.ModelChoiceField object at 0x7f3c1c206190>, 'public_access': <django.forms.fields.TypedChoiceField object at 0x7f3c1c2060d0>}
clean()
declared_fields = {}
media
class tardis.tardis_portal.forms.StaticField(required=True, widget=None, label=None, initial=None, help_text=u'', error_messages=None, show_hidden_initial=False, validators=[], localize=False, label_suffix=None)

Bases: django.forms.fields.Field

clean(value)
widget

alias of NoInput

tardis.tardis_portal.forms.createLinkedUserAuthenticationForm(authMethods)

Create a LinkedUserAuthenticationForm and use the contents of authMethods to the list of options in the dropdown menu for authenticationMethod.

tardis.tardis_portal.forms.createSearchDatafileForm(searchQueryType)
tardis.tardis_portal.forms.createSearchDatafileSelectionForm(initial=None)
tardis.tardis_portal.forms.createSearchExperimentForm()
tardis.tardis_portal.forms.create_datafile_add_form(schema, parentObject, request=None)
tardis.tardis_portal.forms.create_parameterset_edit_form(parameterset, request=None)
tardis.tardis_portal.forms.getAuthMethodChoices()
tardis.tardis_portal.forms.save_datafile_add_form(schema, parentObject, request)
tardis.tardis_portal.forms.save_datafile_edit_form(parameterset, request)

tardis.tardis_portal.hacks module

hacks.py For hacks which should be removed at a later stage

tardis.tardis_portal.hacks.oracle_dbops_hack(f)

affects only oracle - safe for other database engines

tardis.tardis_portal.iiif module

tardis.tardis_portal.iiif.compliance_header(f)
tardis.tardis_portal.iiif.compute_etag(request, datafile_id, *args, **kwargs)
tardis.tardis_portal.iiif.download_image(request, *args, **kwargs)
tardis.tardis_portal.iiif.download_info(request, *args, **kwargs)

tardis.tardis_portal.logging_middleware module

class tardis.tardis_portal.logging_middleware.LoggingMiddleware

Bases: object

process_exception(request, exception)
process_response(request, response)

tardis.tardis_portal.managers module

managers.py

class tardis.tardis_portal.managers.ExperimentManager

Bases: tardis.tardis_portal.managers.OracleSafeManager

Implements a custom manager for the Experiment model which checks the authorisation rules for the requesting user first

To make this work, the request must be passed to all class functions. The username and the group memberships are then resolved via the user.userprofile.ext_groups and user objects.

The tardis.tardis_portal.auth.AuthService is responsible for filling the request.groups object.

all(user)

Returns all experiments a user - either authenticated or anonymous - is allowed to see and search

Parameters:user (User) – a User instance
Returns:QuerySet of Experiments
Return type:QuerySet
external_users(experiment_id)

returns a list of groups which have external ACL rules

Parameters:experiment_id (int) – the ID of the experiment to be edited
Returns:list of groups with external ACLs
Return type:list
get(user, experiment_id)

Returns an experiment under the consideration of the ACL rules Raises PermissionDenied if the user does not have access.

Parameters:
  • user (User) – a User instance
  • experiment_id (int) – the ID of the experiment to be edited
Returns:

Experiment

Return type:

Experiment

Raises:

PermissionDenied

group_acls_system_owned(experiment_id)

Returns a list of ACL rules associated with this experiment.

Parameters:experiment_id (int) – the ID of the experiment
Returns:QuerySet of system-owned ACLs for experiment
Return type:QuerySet
group_acls_user_owned(experiment_id)

Returns a list of ACL rules associated with this experiment.

Parameters:experiment_id (int) – the ID of the experiment
Returns:QuerySet of ACLs
Return type:QuerySet
owned(user)

Return all experiments which are owned by a particular user, including those shared with a group of which the user is a member.

Parameters:user (User) – a User instance
Returns:QuerySet of Experiments owned by user
Return type:QuerySet
owned_and_shared(user)
owned_by_group(group)

Return all experiments that are owned by a particular group

owned_by_user(user)

Return all experiments which are owned by a particular user id

Parameters:user (User) – a User Object
Returns:QuerySet of Experiments owned by user
Return type:QuerySet
owned_by_user_id(userId)

Return all experiments which are owned by a particular user id

Parameters:userId (int) – a User ID
Returns:QuerySet of Experiments owned by user id
Return type:QuerySet
public()
shared(user)
system_owned_groups(experiment_id)

returns a list of sytem-owned groups which have ACL rules associated with this experiment

Parameters:experiment_id (string) – the ID of the experiment to be edited
Returns:system owned groups for experiment
Return type:QuerySet
user_acls(experiment_id)

Returns a list of ACL rules associated with this experiment.

Parameters:experiment_id (string) – the ID of the experiment
Returns:QuerySet of ACLs
Return type:QuerySet
user_owned_groups(experiment_id)

returns a list of user owned-groups which have ACL rules associated with this experiment

Parameters:experiment_id (int) – the ID of the experiment to be edited
Returns:QuerySet of non system Groups
Return type:QuerySet
users(experiment_id)

Returns a list of users who have ACL rules associated with this experiment.

Parameters:experiment_id (int) – the ID of the experiment
Returns:QuerySet of Users with experiment access
Return type:QuerySet
class tardis.tardis_portal.managers.OracleSafeManager

Bases: django.db.models.manager.Manager

Implements a custom manager which automatically defers the retreival of any TextField fields on calls to get_queryset. This is to avoid the known issue that ‘distinct’ calls on query_sets containing TextFields fail when Oracle is being used as the backend.

get_queryset()

Returns a new QuerySet object. Subclasses can override this method to easily customize the behavior of the Manager.

class tardis.tardis_portal.managers.ParameterNameManager

Bases: django.db.models.manager.Manager

get_by_natural_key(namespace, name)
class tardis.tardis_portal.managers.SchemaManager

Bases: django.db.models.manager.Manager

get_by_natural_key(namespace)

tardis.tardis_portal.rfc3339 module

The function rfc3339 formats dates according to the RFC 3339. rfc3339 tries to have as much as possible sensible defaults.

tardis.tardis_portal.rfc3339.rfc3339(date, utc=False, use_system_timezone=True)

Return a string formatted according to the RFC 3339. If called with utc=True, it normalizes date to the UTC date. If date does not have any timezone information, uses the local timezone:

>>> date = datetime.datetime(2008, 4, 2, 20)
>>> rfc3339(date, utc=True, use_system_timezone=False)
'2008-04-02T20:00:00Z'
>>> rfc3339(date) 
'2008-04-02T20:00:00...'

If called with user_system_time=False don’t use the local timezone and consider the offset to UTC to be zero:

>>> rfc3339(date, use_system_timezone=False)
'2008-04-02T20:00:00+00:00'

date must be a a datetime.datetime, datetime.date or a timestamp as returned by time.time():

>>> rfc3339(0, utc=True, use_system_timezone=False)
'1970-01-01T00:00:00Z'
>>> rfc3339(datetime.date(2008, 9, 6), use_system_timezone=False)
'2008-09-06T00:00:00+00:00'
>>> rfc3339('foo bar')
Traceback (most recent call last):
...
TypeError: excepted datetime, got str instead

tardis.tardis_portal.search_backend module

class tardis.tardis_portal.search_backend.HighlightSearchBackend(connection_alias, **connection_options)

Bases: haystack.backends.elasticsearch_backend.ElasticsearchSearchBackend

search(query_string, sort_by=None, start_offset=0, end_offset=None, fields='', highlight=False, facets=None, date_facets=None, query_facets=None, narrow_queries=None, spelling_query=None, limit_to_registered_models=None, result_class=None, **kwargs)

tardis.tardis_portal.search_query module

search_backend.py

class tardis.tardis_portal.search_query.FacetFixedSearchQuery(using=u'default')

Bases: haystack.backends.elasticsearch_backend.ElasticsearchSearchQuery

get_facet_counts()

tardis.tardis_portal.sftp module

tardis.tardis_portal.shortcuts module

class tardis.tardis_portal.shortcuts.RestfulExperimentParameterSet(schema_func, form_cls)

Bases: object

Helper class which enables a Backbone.sync-compatible interface to be created for a ExperimentParameterSet just by specifying a function which provides the schema and a form.

(A function for the schema is required rather than the actual schema, as to run unit tests effectively the object needs to be able to create the schema after instantiation.)

For UI consistency, it’s best to make sure the schema has hidden == true.

schema

Use schema function to get the schema.

view_functions
tardis.tardis_portal.shortcuts.get_experiment_referer(request, dataset_id)
tardis.tardis_portal.shortcuts.render_error_message(request, message, status=400)

Render a simple text error message in a generic error page. Any newlines are turned into <br>.

tardis.tardis_portal.shortcuts.render_response_index(request, *args, **kwargs)
tardis.tardis_portal.shortcuts.render_to_file(template, filename, context)
tardis.tardis_portal.shortcuts.return_response_error(request)
tardis.tardis_portal.shortcuts.return_response_error_message(request, redirect_path, context)
tardis.tardis_portal.shortcuts.return_response_not_found(request)

tardis.tardis_portal.signals module

tardis.tardis_portal.staging module

staging.py

tardis.tardis_portal.staging.get_dataset_path(dataset)
tardis.tardis_portal.staging.get_full_staging_path(username)
tardis.tardis_portal.staging.get_staging_path()

return the path to the staging directory

tardis.tardis_portal.staging.get_staging_url_and_size(username, filepath)

Returns a file:// URL and the size of the file.

tardis.tardis_portal.staging.get_sync_location()
tardis.tardis_portal.staging.get_sync_root(prefix='')
tardis.tardis_portal.staging.get_sync_url_and_protocol(sync_path, filepath)
tardis.tardis_portal.staging.staging_list(pathname='/home/docs/checkouts/readthedocs.org/user_builds/mytardis/checkouts/v3.9.0/var/test/staging', dirname='/home/docs/checkouts/readthedocs.org/user_builds/mytardis/checkouts/v3.9.0/var/test/staging', root=False)
tardis.tardis_portal.staging.write_uploaded_file_to_dataset(dataset, uploaded_file_post, subdir=None)

Broken, now that the storagebox takes care of writing files. Writes file POST data to the dataset directory in the file store

tardis.tardis_portal.tasks module

tardis.tardis_portal.tasks.init_filters()

load filters and avoid circular import

tardis.tardis_portal.util module

tardis.tardis_portal.widgets module

class tardis.tardis_portal.widgets.CommaSeparatedInput(attrs=None)

Bases: django.forms.widgets.TextInput

media
render(name, value, attrs=None)
value_from_datadict(data, files, name)
class tardis.tardis_portal.widgets.Label(attrs=None)

Bases: django.forms.widgets.Widget

media
render(name, value, attrs=None)
tag = 'label'
class tardis.tardis_portal.widgets.Span(attrs=None)

Bases: tardis.tardis_portal.widgets.Label

media
tag = 'span'

tardis.tardis_portal.xmlwriter module

class tardis.tardis_portal.xmlwriter.XMLWriter
static write_template_to_dir(dest_filename, template_path, context)
Parameters:
  • dest_dir (string) – The directory to store the resulting document in
  • dest_filename (string) – The name of the file to be output
  • template_path – The relative path to the Django template to be

rendered :type template_path: string :param context: The Context object (dictionary of variables for template output) :type context: django.template.context.Context :returns: The full path to the created file :rtype: string

static write_template_to_file(objectprefix, uniqueid, templatepath, context)
Parameters:prefix_dir – The subdirectory off of the OAI_DOCS_PATH to store

the resulting document in :type prefix_dir: string :param objectprefix: The name prefix of the resulting file. Files are output in the format prefix-uniqueid.xml :type objectprefix: string :param uniqueid: The unique ID of the file to be output :type uniqueid: string :param templatepath: The relative path to the Django template to be rendered :type templatepath: string :param context: The Context object (dictionary of variables for template output) :type context: django.template.context.Context :returns: The full path to the created file :rtype: string

static write_xml_to_file(objectprefix, uniqueid, xmlstring)
Parameters:prefix_dir – The subdirectory off of the OAI_DOCS_PATH to store

the resulting document in :type prefix_dir: string :param objectprefix: The name prefix of the resulting file. Files are output in the format prefix-uniqueid.xml :type objectprefix: string :param uniqueid: The unique ID of the file to be output :type uniqueid: string :param xmlstring: The relative path to the Django template to be rendered :type xmlstring: string :returns: The full path to the created file :rtype: string

tardis.tardis_portal.xmlwriter.logger = <celery.utils.log.ProcessAwareLogger object>

XML Writer

A set of static methods for writing xml files.

Module contents

models/__init__.py