def settings(request): if request.method == 'POST': config = Config.objects.get() request.FILES['privFile'] = check_request_file('privFile', request, config.privFile) request.FILES['pubFile'] = check_request_file('pubFile', request, config.pubFile) config_form = ConfigForm(request.POST, request.FILES) if config_form.is_valid(): config_form.save() config_form = ConfigForm(instance=Config.objects.get()) messages.info(request, 'Settings saved') else: messages.info(request, 'Invalid form') else: config_form = ConfigForm(instance=Config.objects.get()) return render(request, 'settings.html', {'config_form': config_form})
def config_submit(request): if request.method == 'POST': config_form = ConfigForm(request.POST, instance=Config()) if config_form.is_valid(): try: with transaction.atomic(): new_config = config_form.save(commit=False) new_config.created_by = request.user new_config.save() num_lanes = request.POST.get('lane_count') for lane in range(1, int(num_lanes) + 1): new_lane = Lane( number=lane, config=new_config ) new_lane.save() num_libraries = request.POST.get('num_libraries__lane_' + str(lane)) for library in range(1, int(num_libraries) + 1): library_tag = '__lane_{}__lib_{}'.format(lane, library) # If no Barcode is provided, make NULL in database barcode_id = request.POST.get('barcode' + library_tag) if barcode_id != '': barcode = Barcode.objects.get(pk=barcode_id) else: barcode = None # If no cluster_station_concentration is provided, store 0.0 in database cluster_station_concentration = request.POST.get('cluster_station_concentration' + library_tag) if cluster_station_concentration == '': cluster_station_concentration = 0.0 # Create the new library model, hooked up to the newly created lane_model new_library = Library( lane=new_lane, bionimbus_id=request.POST.get('bionimbus_id' + library_tag), submitter=request.POST.get('submitter' + library_tag), barcode=barcode, cluster_station_concentration=cluster_station_concentration ) new_library.save() messages.info(request, 'Successfully added configuration for run {}'. format(new_config.run_name)) except Exception, e: messages.warning(request, 'Adding configuration failed', 'warning') else: messages.warning(request, 'Configuration was not properly filled out', 'thumbs-o-down') return HttpResponseRedirect('/seq-config/config/manage/')
def config_edit(request, config_id): config = Config.objects.get(pk=config_id) if request.method == 'POST': updated_config_form = ConfigForm(request.POST, instance=config) if updated_config_form.is_valid(): try: with transaction.atomic(): updated_config = updated_config_form.save() Library.objects.filter(lane__config=updated_config).delete() updated_config.lane_set.all().delete() num_lanes = request.POST.get('lane_count') for lane in range(1, int(num_lanes) + 1): new_lane = Lane( number=lane, config=updated_config ) new_lane.save() num_libraries = request.POST.get('num_libraries__lane_' + str(lane)) for library in range(1, int(num_libraries) + 1): library_tag = '__lane_{}__lib_{}'.format(lane, library) # If no Barcode is provided, make NULL in database barcode_id = request.POST.get('barcode' + library_tag) if barcode_id != '': barcode = Barcode.objects.get(pk=barcode_id) else: barcode = None # If no cluster_station_concentration is provided, store 0.0 in database cluster_station_concentration = request.POST.get('cluster_station_concentration' + library_tag) if cluster_station_concentration == '': cluster_station_concentration = 0.0 new_library = Library( lane=new_lane, bionimbus_id=request.POST.get('bionimbus_id' + library_tag), submitter=request.POST.get('submitter' + library_tag), barcode=barcode, cluster_station_concentration=cluster_station_concentration ) new_library.save() messages.info(request, 'Successfully edited configuration for run {}'.format(updated_config.run_name)) except Exception, e: messages.warning(request, 'Editing configuration failed', 'warning') else: messages.warning(request, 'Configuration was not properly edited', 'thumbs-o-down') return HttpResponseRedirect('/seq-config/config/manage/')