예제 #1
0
 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))
예제 #2
0
 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))
예제 #3
0
 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'))
예제 #4
0
 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'))
예제 #5
0
 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))
예제 #6
0
 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))
예제 #7
0
 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))
예제 #8
0
 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))
예제 #9
0
 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))
예제 #10
0
 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))
예제 #11
0
 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))
예제 #12
0
 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))
예제 #13
0
 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))
예제 #14
0
 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))
예제 #15
0
 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))
예제 #16
0
 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),
         )
예제 #17
0
 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))
예제 #18
0
 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))
예제 #19
0
 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))
예제 #20
0
 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))
예제 #21
0
 def view(self):
     return dict(
         log_form=FormRenderer(Form(self.request, schema=SampleLogEntryCreateSchema)),
         attachment_form=FormRenderer(Form(self.request, multipart=True)))
예제 #22
0
 def home(self):
     form = Form(self.request,
                 schema=LoginSchema,
                 came_from=self.request.route_url('collections_index'))
     return dict(form=FormRenderer(form))