def verify_email(self): email = self.request.params["email"] verification = EmailVerification(email) DBSession.add(verification) DBSession.flush() user = verification.email.user mailer = self.request.registry["mailer"] message = Message( recipients=[email], subject="%s email verification" % self.request.registry.settings["site_title"], body=render_template( "../templates/account/verify_email.txt", view=self, request=self.request, verification=verification ), ) mailer.send(message) return dict(verification=verification)
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): # 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 verify_email(self): email = self.request.params['email'] verification = EmailVerification(email) DBSession.add(verification) DBSession.flush() user = verification.email.user mailer = self.request.registry['mailer'] message = Message( recipients=[email], subject='%s email verification' % self.request.registry.settings['site_title'], body=render(renderer_name='../templates/account/verify_email.txt', value=dict(view=self, request=self.request, verification=verification), request=self.request)) mailer.send(message) return dict(verification=verification)
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 verify_email(self): email = self.request.params['email'] verification = EmailVerification(email) DBSession.add(verification) DBSession.flush() user = verification.email.user mailer = self.request.registry['mailer'] message = Message( recipients=[email], subject='%s email verification' % self.request.registry.settings['site_title'], body=render( renderer_name='../templates/account/verify_email.txt', value=dict( view=self, request=self.request, verification=verification ), request=self.request)) mailer.send(message) return dict(verification=verification)
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 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 init_instances(): with transaction.manager: admins_group = Group( id=ADMINS_GROUP, description='Group of administrators') unlimited_limit = UserLimit( id='unlimited', collections_limit=1000000, samples_limit=1000000, templates_limit=1000000, storage_limit=50000 * 1000000) commercial_limit = UserLimit( id='commercial', collections_limit=1000, samples_limit=10000, templates_limit=10, storage_limit=10000 * 1000000) academic_limit = UserLimit( id='academic', collections_limit=10, samples_limit=250, templates_limit=5, storage_limit=100 * 1000000, email_pattern=r'.*\.(edu|ac\.[a-z][a-z])$') free_limit = UserLimit( id='free', collections_limit=3, samples_limit=50, templates_limit=2, storage_limit=1 * 1000000) admin_user = User( salutation='', given_name='Administrator', surname='', limits_id='unlimited') admin_email = EmailAddress( email='*****@*****.**', verified=datetime.utcnow()) admin_collection = Collection(name='Default', owner='Administrator') owner_role = Role( id=OWNER_ROLE, description='Owner and administrator of the collection') editor_role = Role( id=EDITOR_ROLE, description='Can add and remove samples from a collection, but ' 'cannot administer members of the collection') auditor_role = Role( id=AUDITOR_ROLE, description='Can audit samples within the collection but cannot ' 'manipulate the collection') viewer_role = Role( id=VIEWER_ROLE, description='Can view samples within the collection but cannot ' 'manipulate the collection') DBSession.add(admins_group) DBSession.add(unlimited_limit) DBSession.add(commercial_limit) DBSession.add(academic_limit) DBSession.add(free_limit) DBSession.add(admin_user) DBSession.add(admin_email) DBSession.add(admin_collection) DBSession.add(owner_role) DBSession.add(editor_role) DBSession.add(auditor_role) DBSession.add(viewer_role) admins_group.users.append(admin_user) admin_user.emails.append(admin_email) admin_user.password = '******' admin_user.collections[admin_collection] = owner_role
def init_instances(): with transaction.manager: admins_group = Group(id=ADMINS_GROUP, description='Group of administrators') unlimited_limit = UserLimit(id='unlimited', collections_limit=1000000, samples_limit=1000000, templates_limit=1000000, storage_limit=50000 * 1000000) commercial_limit = UserLimit(id='commercial', collections_limit=1000, samples_limit=10000, templates_limit=10, storage_limit=10000 * 1000000) academic_limit = UserLimit(id='academic', collections_limit=10, samples_limit=250, templates_limit=5, storage_limit=100 * 1000000, email_pattern=r'.*\.(edu|ac\.[a-z][a-z])$') free_limit = UserLimit(id='free', collections_limit=3, samples_limit=50, templates_limit=2, storage_limit=1 * 1000000) admin_user = User(salutation='', given_name='Administrator', surname='', limits_id='unlimited') admin_email = EmailAddress(email='*****@*****.**', verified=datetime.utcnow()) admin_collection = Collection(name='Default', owner='Administrator') owner_role = Role( id=OWNER_ROLE, description='Owner and administrator of the collection') editor_role = Role( id=EDITOR_ROLE, description='Can add and remove samples from a collection, but ' 'cannot administer members of the collection') auditor_role = Role( id=AUDITOR_ROLE, description='Can audit samples within the collection but cannot ' 'manipulate the collection') viewer_role = Role( id=VIEWER_ROLE, description='Can view samples within the collection but cannot ' 'manipulate the collection') DBSession.add(admins_group) DBSession.add(unlimited_limit) DBSession.add(commercial_limit) DBSession.add(academic_limit) DBSession.add(free_limit) DBSession.add(admin_user) DBSession.add(admin_email) DBSession.add(admin_collection) DBSession.add(owner_role) DBSession.add(editor_role) DBSession.add(auditor_role) DBSession.add(viewer_role) admins_group.users.append(admin_user) admin_user.emails.append(admin_email) admin_user.password = '******' admin_user.collections[admin_collection] = owner_role