Skip to content
This repository has been archived by the owner on Aug 24, 2022. It is now read-only.

Commit

Permalink
mark index types as obsolete
Browse files Browse the repository at this point in the history
  • Loading branch information
risufaj committed Nov 22, 2018
1 parent 77e6db4 commit be7d1a3
Show file tree
Hide file tree
Showing 8 changed files with 88 additions and 5 deletions.
37 changes: 37 additions & 0 deletions index_generator/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,54 @@
IndexGeneratorLibrarySerializer,
IndexGeneratorSampleSerializer,
)
from library_sample_shared.serializers import IndexTypeSerializer
from django.conf import settings

Request = apps.get_model('request', 'Request')
IndexI7 = apps.get_model('library_sample_shared', 'IndexI7')
IndexI5 = apps.get_model('library_sample_shared', 'IndexI5')
Library = apps.get_model('library', 'Library')
Sample = apps.get_model('sample', 'Sample')
IndexType = apps.get_model('library_sample_shared','IndexType')

logger = logging.getLogger('db')


class MoveOtherMixin:
""" Move the `Other` option to the end of the returning list. """

def list(self, request):
queryset = self.filter_queryset(self.get_queryset())

page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(self._get_data(serializer))

serializer = self.get_serializer(queryset, many=True)
return Response(self._get_data(serializer))

def _get_data(self, serializer):
data = serializer.data

# Move the 'Other' option to the end of the list
other_options = sorted([
x for x in data if 'Other' in x['name']
], key=lambda x: x['name'])

for other in other_options:
index = data.index(other)
data.append(data.pop(index))

return data

class GeneratorIndexTypeViewSet(MoveOtherMixin, viewsets.ReadOnlyModelViewSet):
""" Get the list of index types. """
queryset = IndexType.objects.order_by('name')
serializer_class = IndexTypeSerializer



class PoolSizeViewSet(viewsets.ReadOnlyModelViewSet):
""" Get the list of pool sizes. """
queryset = PoolSize.objects.all().filter(obsolete=settings.NON_OBSOLETE)
Expand Down
16 changes: 15 additions & 1 deletion library_sample_shared/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,9 @@ def formfield_for_foreignkey(self, db_field, request, **kwargs):
@admin.register(IndexType)
class IndexTypeAdmin(admin.ModelAdmin):
form = IndexTypeForm
list_display = ('name', 'index_length', 'is_dual', 'format',)
list_display = ('name', 'index_length', 'is_dual', 'format','obsolete_name')
filter_horizontal = ('indices_i7', 'indices_i5',)
actions = ('mark_as_obsolete', 'mark_as_non_obsolete',)

fieldsets = (
(None, {
Expand All @@ -74,6 +75,19 @@ class IndexTypeAdmin(admin.ModelAdmin):
}),
)

def mark_as_obsolete(self,request,queryset):
queryset.update(obsolete=settings.OBSOLETE)
mark_as_obsolete.short_description = "Mark index type as obsolete"

def mark_as_non_obsolete(self,request,queryset):
queryset.update(obsolete=settings.NON_OBSOLETE)
mark_as_non_obsolete.short_description = "Mark index type as non-obsolete"

def obsolete_name(self,obj):

return "Non-obsolete" if obj.obsolete==settings.NON_OBSOLETE else "Obsolete"
obsolete_name.short_description = "STATUS"

def change_view(self, request, object_id, form_url='', extra_context=None):
# Display inline when the object has been saved and
# the format has been set to 'plate'
Expand Down
2 changes: 2 additions & 0 deletions library_sample_shared/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,8 @@ class IndexType(models.Model):
blank=True,
)

obsolete = models.PositiveIntegerField("Obsolete", default=1)

class Meta:
verbose_name = 'Index Type'
verbose_name_plural = 'Index Types'
Expand Down
2 changes: 1 addition & 1 deletion library_sample_shared/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class ConcentrationMethodViewSet(viewsets.ReadOnlyModelViewSet):

class IndexTypeViewSet(MoveOtherMixin, viewsets.ReadOnlyModelViewSet):
""" Get the list of index types. """
queryset = IndexType.objects.order_by('name')
queryset = IndexType.objects.filter(obsolete=settings.NON_OBSOLETE).order_by('name')
serializer_class = IndexTypeSerializer


Expand Down
1 change: 1 addition & 0 deletions static/main-hub/app/Application.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Ext.define('MainHub.Application', {
'incominglibraries.IncomingLibraries',
'indexgenerator.PoolSizes',
'indexgenerator.StartCoordinates',
'indexgenerator.GeneratorIndexTypes',
'requests.LibrariesInRequest',
'indexgenerator.IndexGenerator',
'librarypreparation.LibraryPreparation',
Expand Down
27 changes: 27 additions & 0 deletions static/main-hub/app/store/indexgenerator/GeneratorIndexTypes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
Ext.define('MainHub.store.indexgenerator.GeneratorIndexTypes', {
extend: 'Ext.data.Store',
storeId: 'GeneratorIndexTypes',

requires: [
'MainHub.model.libraries.IndexType'
],

model: 'MainHub.model.libraries.IndexType',

proxy: {
type: 'ajax',
url: 'api/generator_index_types/',
timeout: 1000000,
pageParam: false, // to remove param "page"
startParam: false, // to remove param "start"
limitParam: false, // to remove param "limit"
noCache: false, // to remove param "_dc",
reader: {
type: 'json',
rootProperty: 'data',
successProperty: 'success'
}
},

autoLoad: true
});
5 changes: 3 additions & 2 deletions static/main-hub/app/view/indexgenerator/IndexGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,13 @@ Ext.define('MainHub.view.indexgenerator.IndexGenerator', {
queryMode: 'local',
displayField: 'name',
valueField: 'id',
store: 'IndexTypes',
//store: 'IndexTypes',
store: 'GeneratorIndexTypes',
matchFieldWidth: false,
forceSelection: true
},
renderer: function (value, meta) {
var record = Ext.getStore('IndexTypes').findRecord(
var record = Ext.getStore('GeneratorIndexTypes').findRecord(
'id', value, 0, false, true, true
);
var val = '';
Expand Down
3 changes: 2 additions & 1 deletion wui/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from library.views import LibrarySampleTree, LibraryViewSet
from sample.views import NucleicAcidTypeViewSet, SampleViewSet
from incoming_libraries.views import IncomingLibrariesViewSet
from index_generator.views import PoolSizeViewSet, IndexGeneratorViewSet
from index_generator.views import PoolSizeViewSet, IndexGeneratorViewSet,GeneratorIndexTypeViewSet
from library_preparation.views import LibraryPreparationViewSet
from pooling.views import PoolingViewSet
from flowcell.views import (
Expand Down Expand Up @@ -43,6 +43,7 @@
router.register(r'read_lengths', ReadLengthViewSet, base_name='read-length')
router.register(r'concentration_methods', ConcentrationMethodViewSet, base_name='concentration-method')
router.register(r'index_types', IndexTypeViewSet, base_name='index-type')
router.register(r'generator_index_types', GeneratorIndexTypeViewSet, base_name='generator-index-type')
router.register(r'indices', IndexViewSet, base_name='index')
router.register(r'library_protocols', LibraryProtocolViewSet, base_name='library-protocol')
router.register(r'library_protocols_invoicing', LibraryProtocolInvoicingViewSet, base_name='library-protocol-invoicing')
Expand Down

0 comments on commit be7d1a3

Please sign in to comment.