def run(self): if not User.query.filter_by(email='*****@*****.**').first(): user = User('*****@*****.**', 'Test Admin') user.grant_permission('admin') cfp = TalkProposal() cfp.user = user cfp.title = 'test (admin)' cfp.description = 'test proposal from admin' db.session.add(user) if not User.query.filter_by(email='*****@*****.**').first(): user2 = User('*****@*****.**', 'Test Anonymiser') user2.grant_permission('cfp_anonymiser') cfp = TalkProposal() cfp.user = user2 cfp.title = 'test (anonymiser)' cfp.description = 'test proposal from anonymiser' db.session.add(user2) if not User.query.filter_by(email='*****@*****.**').first(): user3 = User('*****@*****.**', 'Test Reviewer') user3.grant_permission('cfp_reviewer') cfp = TalkProposal() cfp.user = user3 cfp.title = 'test (reviewer)' cfp.description = 'test proposal from reviewer' db.session.add(user3) if not User.query.filter_by(email='*****@*****.**').first(): user4 = User('*****@*****.**', 'Test Arrivals') user4.grant_permission('arrivals') cfp = TalkProposal() cfp.user = user4 cfp.title = 'test (arrivals)' cfp.description = 'test proposal from arrivals' db.session.add(user4) db.session.commit()
def run(self, filename, state): faker = Faker() with open(filename) as csvfile: # id, title, description, length, need_finance, # one_day, type, experience, attendees, size reader = DictReader(csvfile) count = 0 for row in reader: if Proposal.query.filter_by(title=row['title']).first(): continue user = User('*****@*****.**' % count, faker.name()) db.session.add(user) proposal = TalkProposal() if row['type'] == u'talk' else\ WorkshopProposal() if row['type'] == u'workshop' else\ InstallationProposal() proposal.state = state proposal.title = row['title'] proposal.description = row['description'] proposal.one_day = True if row.get('one_day') == 't' else False proposal.needs_money = True if row.get( 'need_finance') == 't' else False if row['type'] == 'talk': proposal.length = row['length'] elif row['type'] == 'workshop': proposal.length = row['length'] proposal.attendees = row['attendees'] else: proposal.size = row['size'] proposal.user = user db.session.add(proposal) db.session.commit() count += 1 app.logger.info('Imported %s proposals' % count)
def run(self, filename, state): faker = Faker() with open(filename) as csvfile: # id, title, description, length, need_finance, # one_day, type, experience, attendees, size reader = DictReader(csvfile) count = 0 for row in reader: if Proposal.query.filter_by(title=row['title']).first(): continue user = User('*****@*****.**' % count, faker.name()) db.session.add(user) proposal = TalkProposal() if row['type'] == u'talk' else\ WorkshopProposal() if row['type'] == u'workshop' else\ InstallationProposal() proposal.state = state proposal.title = row['title'] proposal.description = row['description'] proposal.one_day = True if row.get('one_day') == 't' else False proposal.needs_money = True if row.get('need_finance') == 't' else False if row['type'] == 'talk': proposal.length = row['length'] elif row['type'] == 'workshop': proposal.length = row['length'] proposal.attendees = row['attendees'] else: proposal.size = row['size'] proposal.user = user db.session.add(proposal) db.session.commit() count += 1 app.logger.info('Imported %s proposals' % count)
def test_product_view_accessible(db, user): product_view = ProductView(name="other") assert product_view.is_accessible(user) product_view = ProductView(name="other", token="testtoken") assert product_view.is_accessible(user, "testtoken") assert not product_view.is_accessible(user) product_view = ProductView(name="cfp", cfp_accepted_only=True) assert not product_view.is_accessible(user) proposal = TalkProposal() proposal.title = "title" proposal.description = "description" proposal.requirements = "requirements" proposal.user = user db.session.add(proposal) db.session.commit() proposal.set_state("accepted") assert product_view.is_accessible(user)
def test_product_view_accessible(db, user): product_view = ProductView(name="other") assert product_view.is_accessible(user) product_view = ProductView(name="other", token="testtoken") assert product_view.is_accessible(user, "testtoken") assert not product_view.is_accessible(user) product_view = ProductView(name="cfp", cfp_accepted_only=True) assert not product_view.is_accessible(user) proposal = TalkProposal() proposal.title = "title" proposal.description = "description" proposal.requirements = "requirements" proposal.user = user db.session.add(proposal) db.session.commit() proposal.set_state('accepted') assert product_view.is_accessible(user)
def test_product_view_accessible(db, user, monkeypatch): product_view = ProductView(name="other", type="ticket") assert product_view.is_accessible(user), "Default view should be visible" product_view = ProductView(name="another-other", type="ticket", vouchers_only=True) voucher = Voucher(view=product_view) db.session.add(product_view) db.session.add(voucher) db.session.commit() assert product_view.is_accessible( user, voucher.code ), "Product should be visible with voucher" assert not product_view.is_accessible( user ), "Product should be inaccessible without voucher" assert not product_view.is_accessible( user, "wrong" ), "Product should be inaccessible with incorrect voucher" product_view = ProductView(name="cfp", cfp_accepted_only=True, type="ticket") assert not product_view.is_accessible( user ), "CfP products should not be visible without accepted proposal" proposal = TalkProposal() proposal.title = "title" proposal.description = "description" proposal.requirements = "requirements" proposal.user = user db.session.add(proposal) db.session.commit() proposal.set_state("accepted") assert product_view.is_accessible( user ), "CfP products should be visible with accepted proposal"
def test_cfp(db, app, user, outbox, title, description, requirements): for c in ["\0", "\r", "\n"]: assume(c not in title) assume("\0" not in description) assume("\0" not in requirements) proposal = TalkProposal() proposal.title = title proposal.description = description proposal.requirements = requirements proposal.user = user db.session.add(proposal) db.session.commit() proposal.set_state('accepted') with app.test_request_context('/'): send_email_for_proposal(proposal, reason='accepted') assert len(outbox) == 1 del outbox[:]