def edit(self): user = self.request.user form = Form(self.request, schema=AccountEditSchema, obj=user) if form.validate(): form.bind(user) if form.data["password_new"]: user.password = form.data["password_new"] return HTTPFound(location=self.request.route_url("account_index")) return dict(form=FormRenderer(form))
def edit(self): user = self.request.user form = Form(self.request, schema=AccountEditSchema, obj=user) if form.validate(): form.bind(user) if form.data['password_new']: user.password = form.data['password_new'] return HTTPFound(location=self.request.route_url('account_index')) return dict(form=FormRenderer(form))
def add_log(self): form = Form(self.request, schema=SampleLogEntryCreateSchema) if form.validate(): new_log_entry = form.bind(SampleLogEntry(creator=self.request.user)) self.context.sample.log.append(new_log_entry) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=self.context.sample.id, _anchor='log'))
def destroy(self): form = Form( self.request, defaults=dict(reason='Sample destroyed'), schema=SampleDestroySchema) if form.validate(): self.context.sample.destroy(self.request.user, form.data['reason']) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=self.context.sample.id)) return dict(form=FormRenderer(form))
def login(self): referer = self.request.url if referer == self.request.route_url("account_login"): referer = self.request.route_url("collections_index") form = Form(self.request, schema=LoginSchema, came_from=referer) if form.validate(): username = form.data["username"] password = form.data["password"] if authenticate(username, password): return HTTPFound(location=form.came_from, headers=remember(self.request, username)) else: self.request.session.flash("Invalid login") return dict(form=FormRenderer(form))
def edit(self): collection = self.context.collection form = Form( self.request, schema=CollectionEditSchema, obj=collection, variable_decode=True) if form.validate(): form.bind(collection) # Ensure the edit cannot change ownership by current user collection.users[self.request.user] = DBSession.query(Role).\ filter(Role.id==OWNER_ROLE).one() return HTTPFound(location=form.came_from) return dict(form=FormRenderer(form))
def login(self): referer = self.request.url if referer == self.request.route_url('account_login'): referer = self.request.route_url('collections_index') form = Form(self.request, schema=LoginSchema, came_from=referer) if form.validate(): username = form.data['username'] password = form.data['password'] if authenticate(username, password): return HTTPFound(location=form.came_from, headers=remember(self.request, username)) else: self.request.session.flash('Invalid login') return dict(form=FormRenderer(form))
def edit(self): sample = self.context.sample form = Form( self.request, schema=SampleEditSchema, obj=sample, variable_decode=True) if form.validate(): # XXX Check for EDIT_COLLECTION on new collection form.bind(sample) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=sample.id)) return dict(form=FormRenderer(form))
def create(self): # TODO Determine user timezone as default form = Form(self.request, schema=AccountCreateSchema) if form.validate(): new_user = form.bind(User()) DBSession.add(new_user) new_email = form.bind(EmailAddress()) new_email.user = new_user DBSession.add(new_email) new_collection = Collection() new_collection.name = 'Default' new_collection.owner = new_user.full_name owner_role = DBSession.query(Role).filter(Role.id == 'owner').one() new_user.collections[new_collection] = owner_role return HTTPFound(location=self.request.route_url( 'account_verify_email', _query=dict(email=form.data['email']))) return dict(form=FormRenderer(form))
def create(self): form = Form( self.request, schema=CollectionCreateSchema, variable_decode=True, defaults=dict(owner=self.request.user.full_name)) if form.validate(): new_collection = form.bind(Collection()) # Hard-code ownership to currently authenticated user new_collection.users[self.request.user] = DBSession.query(Role).\ filter(Role.id==OWNER_ROLE).one() DBSession.add(new_collection) DBSession.flush() return HTTPFound( location=self.request.route_url( 'collections_view', collection_id=new_collection.id)) return dict(form=FormRenderer(form))
def create(self): form = Form( self.request, schema=SampleCreateSchema, variable_decode=True, multipart=True) if form.validate(): # XXX Check for EDIT_COLLECTION on selected collection # XXX Should be using form collection below new_sample = form.bind( Sample.create(self.request.user, self.context.collection)) for storage in self.request.POST.getall('attachments'): if storage: new_sample.attachments.create(storage.filename, storage.file) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=new_sample.id)) return dict(form=FormRenderer(form))
def create(self): # TODO Determine user timezone as default form = Form(self.request, schema=AccountCreateSchema) if form.validate(): new_user = form.bind(User()) DBSession.add(new_user) new_email = form.bind(EmailAddress()) new_email.user = new_user DBSession.add(new_email) new_collection = Collection() new_collection.name = "Default" new_collection.owner = new_user.full_name owner_role = DBSession.query(Role).filter(Role.id == "owner").one() new_user.collections[new_collection] = owner_role return HTTPFound( location=self.request.route_url("account_verify_email", _query=dict(email=form.data["email"])) ) return dict(form=FormRenderer(form))
def combine(self): form = Form( self.request, schema=SampleCombineSchema, variable_decode=True) if form.validate(): new_sample = Sample.combine( self.request.user, form.data['collection'], form.data['aliquots']) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=new_sample.id)) return dict( form=FormRenderer(form), samples=DBSession.query(Sample).\ filter(Sample.collection==self.context.collection).\ filter(Sample.destroyed==None), )
def create(self): form = Form( self.request, schema=SampleCreateSchema, variable_decode=True, multipart=True) if form.validate(): # XXX Check for EDIT_COLLECTION on selected collection # XXX Should be using form collection below new_sample = form.bind( Sample.create(self.request.user, self.context.collection)) DBSession.add(new_sample) DBSession.flush() # to generate sample.id for storage in self.request.POST.getall('attachments'): if storage: new_sample.attachments.create(storage.filename, storage.file) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=new_sample.id)) return dict(form=FormRenderer(form))
def split(self): sample = self.context.sample form = Form( self.request, schema=SampleSplitSchema, obj=sample, defaults=dict(aliquots=2), variable_decode=True) if form.validate(): # XXX Check for EDIT_COLLECTION on new collection aliquots = sample.split( self.request.user, form.data['collection'], form.data['aliquots'], form.data['aliquant'], location=form.data['location']) for aliquot in aliquots: DBSession.add(aliquot) return HTTPFound( location=self.request.route_url( 'samples_view', sample_id=sample.id)) return dict(form=FormRenderer(form))
def export(self): exporter = CollectionCsvExporter(self.context.collection) form = Form( self.request, obj=exporter, schema=CollectionCsvExportSchema) if form.validate(): form.bind(exporter) response = self.request.response response.content_type = b'text/csv' response.headers.add( str('Content-Disposition'), str('attachment; filename=%s.csv' % slugify( self.context.collection.name, default='collection-%d' % self.context.collection.id))) exporter.export(response.body_file) return response return dict( exporter=exporter, form=FormRenderer(form))
def view(self): return dict( log_form=FormRenderer(Form(self.request, schema=SampleLogEntryCreateSchema)), attachment_form=FormRenderer(Form(self.request, multipart=True)))
def home(self): form = Form(self.request, schema=LoginSchema, came_from=self.request.route_url('collections_index')) return dict(form=FormRenderer(form))