def setUp(self): my_settings = { 'sqlalchemy.url': 'sqlite:///:memory:', 'api_auth_token': u"SECRETAUTHTOKEN", 'c3smembership.url': u'localhost', 'testing.mail_to_console': u'false', } self.config = testing.setUp() app = main({}, **my_settings) self.get_mailer = GetMailerDummy() app.registry.get_mailer = self.get_mailer app.registry.membership_application.datetime = DateTimeDummy( datetime.datetime(2018, 4, 26, 12, 23, 34)) engine = engine_from_config(my_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") DBSession.add(accountants_group) DBSession.flush() # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() self.testapp = TestApp(app)
def setUp(self): self.config = testing.setUp() self.config.include('pyramid_mailer.testing') try: DBSession.close() DBSession.remove() # print "closed and removed DBSession" except: pass # print "no session to close" # try: # os.remove('test_webtest_accountants.db') # #print "deleted old test database" # except: # pass # #print "never mind" # self.session = DBSession() my_settings = { # 'sqlalchemy.url': 'sqlite:///test_webtest_accountants.db', 'sqlalchemy.url': 'sqlite:///:memory:', 'available_languages': 'da de en es fr', 'c3smembership.dashboard_number': '30' } engine = engine_from_config(my_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) self._insert_members() with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") try: DBSession.add(accountants_group) DBSession.flush() # print("adding group staff") except: print("could not add group staff.") # pass # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] try: DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() except: print("it borked! (rut)") # pass from c3smembership import main app = main({}, **my_settings) from webtest import TestApp self.testapp = TestApp(app)
def setUp(self): self.config = testing.setUp() self.config.include('pyramid_mailer.testing') try: DBSession.remove() except: pass #engine = create_engine('sqlite:///test_model_groups.db') engine = create_engine('sqlite://') self.session = DBSession self.session.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: group1 = Group(name=u'staff') DBSession.add(group1) DBSession.flush() self.assertEquals(group1.__str__(), 'group:staff')
def setUp(self): """ Setup test cases """ self.config = testing.setUp() self.config.include('pyramid_mailer.testing') DBSession.close() DBSession.remove() my_settings = { 'sqlalchemy.url': 'sqlite:///:memory:', 'available_languages': 'da de en es fr', 'c3smembership.dashboard_number': '30' } engine = engine_from_config(my_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) # self._insert_members() with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") DBSession.add(accountants_group) DBSession.flush() # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() app = main({}, **my_settings) self.testapp = TestApp(app)
def main(argv=sys.argv): """ initialize the database """ if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) # Setup alembic database migration information. # This creates the alembic_version table in the database # which is the basis for migrations and the "alembic current" # command. alembic_cfg = Config('alembic.ini') command.stamp(alembic_cfg, 'head') # add some content with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") try: DBSession.add(accountants_group) DBSession.flush() except: # pragma: no cover print("could not add group staff.") # pass with transaction.manager: # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] try: DBSession.add(staffer1) DBSession.flush() except: # pragma: no cover print("it borked! (rut)") # one more staffer with transaction.manager: staffer2 = C3sStaff( login=u"reel", password=u"boo", email=u"*****@*****.**", ) staffer2.groups = [accountants_group] try: DBSession.add(staffer2) DBSession.flush() except: # pragma: no cover print("it borked! (reel)") # a member, actually a membership form submission with transaction.manager: member1 = C3sMember( firstname=u"Firstnäme", # includes umlaut lastname=u"Lastname", email=u"*****@*****.**", password=u"berries", address1=u"address one", address2=u"address two", postcode=u"12345 foo", city=u"Footown Mäh", country=u"Foocountry", locale=u"en", date_of_birth=date(1971, 02, 03), email_is_confirmed=False, email_confirm_code=u"ABCDEFGHIJ", num_shares=u'10', date_of_submission=datetime.now(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", ) try: DBSession.add(member1) except: # pragma: no cover pass with transaction.manager: normal_de = C3sMember( # german normal firstname=u'Ada Traumhaft', lastname=u'Musiziert', email=u'*****@*****.**', address1=u"Musikergasse 34", address2=u"Hinterhaus", postcode=u"12345", city=u"Foostadt Ada", country=u"Germany", locale=u"de", date_of_birth=date(1971, 3, 4), email_is_confirmed=False, email_confirm_code=u'NORMAL_DE1', password=u'adasrandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'23', ) normal_en = C3sMember( # english normal firstname=u'James', lastname=u'Musician', email=u'*****@*****.**', address1=u"james addr 1", address2=u"james appartment 2", postcode=u"12345", city=u"Jamestown", country=u"Jamescountry", locale=u"en", date_of_birth=date(1972, 4, 5), email_is_confirmed=False, email_confirm_code=u'NORMAL_DE', password=u'jamesrandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"", num_shares=u'2', ) investing_de = C3sMember( # german investing firstname=u'Herman', lastname=u'Investor', email=u'*****@*****.**', address1=u"c/o Mutti", address2=u"addr two4", postcode=u"12344", city=u"Footown M44", country=u"Austria", locale=u"de", date_of_birth=date(1974, 9, 8), email_is_confirmed=False, email_confirm_code=u'INVESTING_DE', password=u'arandompasswor4', date_of_submission=date.today(), membership_type=u'investing', member_of_colsoc=False, name_of_colsoc=u"", num_shares=u'6', ) investing_en = C3sMember( # english investing firstname=u'Britany', lastname=u'Investing', email=u'*****@*****.**', address1=u"aone5", address2=u"atwo5", postcode=u"12355", city=u"London", country=u"United Kingdom", locale=u"en", date_of_birth=date(1978, 4, 1), email_is_confirmed=False, email_confirm_code=u'INVESTING_EN', password=u'arandompasswor5', date_of_submission=date.today(), membership_type=u'investing', member_of_colsoc=True, name_of_colsoc=u"", num_shares=u'60', ) legal_entity_de = C3sMember( # german investing legal entity firstname=u'Günther Vorstand', lastname=u'Deutscher Musikverlag', email=u'*****@*****.**', address1=u"Ährenweg 1", address2=u"", postcode=u"98765", city=u"Teststadt", country=u"Germany", locale=u"de", date_of_birth=date(1987, 3, 6), email_is_confirmed=False, email_confirm_code=u'VERLAG_DE', password=u'arandompasswor6', date_of_submission=date.today(), membership_type=u'investing', member_of_colsoc=False, name_of_colsoc=u"", num_shares=u'60', ) legal_entity_en = C3sMember( # english investing legal entity firstname=u'John BigBoss', lastname=u'Some Company', email=u'*****@*****.**', address1=u"foo boulevard", address2=u"123-345", postcode=u"98765", city=u"London", country=u"United Kingdom", locale=u"en", date_of_birth=date(1982, 4, 2), email_is_confirmed=False, email_confirm_code=u'COMPANY_EN', password=u'arandompasswor6', date_of_submission=date.today(), membership_type=u'investing', member_of_colsoc=False, name_of_colsoc=u"", num_shares=u'60', ) DBSession.add(normal_de) DBSession.add(normal_en) DBSession.add(investing_de) DBSession.add(investing_en) legal_entity_de.is_legalentity = True DBSession.add(legal_entity_de) legal_entity_en.is_legalentity = True DBSession.add(legal_entity_en)
def staff_view(request): """ This view lets admins edit staff/cashier personnel: who may act as cashier etc.? """ _staffers = C3sStaff.get_all() class Staffer(colander.MappingSchema): login = colander.SchemaNode( colander.String(), title='login', ) password = colander.SchemaNode( colander.String(), title='passwort', ) schema = Staffer() stafferform = deform.Form( schema, buttons=[ deform.Button('new_staffer', 'save') ] ) if 'action' in request.POST: #print(request.POST['id']) try: _staffer = C3sStaff.get_by_id(int(request.POST['id'])) except: # print("exception!") return HTTPFound(location=request.route_url('staff')) #print(request.POST['action']) if request.POST['action'] == u'delete': #print("will delete staff id %s" % _staffer.id) C3sStaff.delete_by_id(_staffer.id) #print("deleted staff id %s" % _staffer.id) # send mail encrypted = encrypt_with_gnupg('''hi, %s was deleted from the backend by %s. best, your membership tool''' % (_staffer.login, request.authenticated_userid)) message = Message( subject='[C3S Yes] staff was deleted.', sender='*****@*****.**', recipients=[ request.registry.settings['c3smembership.mailaddr']], body=encrypted ) mailer = get_mailer(request) mailer.send(message) return HTTPFound(location=request.route_url('staff')) elif request.POST['action'] == 'edit': appstruct = { 'login': _staffer.login, 'password': '******', } stafferform.set_appstruct(appstruct) if 'new_staffer' in request.POST: #print "new staffer!" controls = request.POST.items() try: appstruct = stafferform.validate(controls) #print('validated!') except ValidationFailure, e: return { 'stafferform': e.render() } # XXX login must be unique! existing = C3sStaff.get_by_login(appstruct['login']) if existing is not None: #print "that staffer exists!" if u'_UNCHANGED_' in appstruct['password']: pass else: existing.password = appstruct['password'] existing.last_password_change = datetime.now() encrypted = encrypt_with_gnupg('''hi, the password of %s was changed by %s. best, your membership tool''' % (existing.login, request.authenticated_userid)) message = Message( subject='[C3S Yes] staff password changed.', sender='*****@*****.**', recipients=[ request.registry.settings['c3smembership.mailaddr']], body=encrypted ) else: # create new entry staffer = C3sStaff( login=appstruct['login'], password=appstruct['password'], email=u'', ) staffer.groups = [Group.get_staffers_group()] #print "about to add user" DBSession.add(staffer) DBSession.flush() print "added staffer" # send mail encrypted = encrypt_with_gnupg('''hi, %s was added to the backend by %s. best, your membership tool''' % (staffer.login, request.authenticated_userid)) message = Message( subject='[C3S Yes] staff was added.', sender='*****@*****.**', recipients=[ request.registry.settings['c3smembership.mailaddr']], body=encrypted ) mailer = get_mailer(request) mailer.send(message) return HTTPFound( request.route_url('staff') )
def main(argv=sys.argv): """ initialize the database """ if len(argv) != 2: usage(argv) config_uri = argv[1] setup_logging(config_uri) settings = get_appsettings(config_uri) engine = engine_from_config(settings, 'sqlalchemy.') DBSession.configure(bind=engine) Base.metadata.create_all(engine) # add some content with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") try: DBSession.add(accountants_group) DBSession.flush() print("adding group staff") except: print("could not add group staff.") # pass with transaction.manager: # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] try: DBSession.add(staffer1) print("adding staff rut") DBSession.flush() except: print("it borked! (rut)") # pass # one more staffer with transaction.manager: staffer2 = C3sStaff( login=u"reel", password=u"boo", email=u"*****@*****.**", ) staffer2.groups = [accountants_group] try: DBSession.add(staffer2) print("adding staff reel") DBSession.flush() except: print("it borked! (reel)") # pass # a member, actually a membership form submission with transaction.manager: member1 = C3sMember( firstname=u"Firstnäme", # includes umlaut lastname=u"Lastname", email=u"*****@*****.**", password=u"berries", address1=u"address one", address2=u"address two", postcode=u"12345 foo", city=u"Footown Mäh", country=u"Foocountry", locale=u"DE", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u"ABCDEFGHIJ", num_shares=u'10', date_of_submission=datetime.now(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", ) try: DBSession.add(member1) print("adding Firstnäme") except: pass # even more members import random import string print("about to add %s members..." % how_many) with transaction.manager: for i in range(how_many): # create 50 members with semi-random dates #print i member = C3sMember( firstname=u"Firstnäme%s" % i, # includes umlaut lastname=u"Lastname", email=u"*****@*****.**", password=u"berries", address1=u"address one", address2=u"address two", postcode=u"12345 foo", city=u"Footown Mäh", country=u"Foocountry", locale=u"DE", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u''.join( random.choice(string.ascii_uppercase + string.digits) for x in range(8)), num_shares=random.randint(1, 60), date_of_submission=datetime.now(), membership_type=random.choice((u'normal', u'investing')), member_of_colsoc=random.choice((True, False)), name_of_colsoc=u"GEMA", ) try: DBSession.add(member) except IntegrityError: print("exception!!!!!!!!!!!!!!!!!!!!1")
def setUp(self): self.config = testing.setUp() self.config.include('pyramid_mailer.testing') engine = create_engine(u'sqlite://') from c3smembership.models import Base DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: member1 = C3sMember( firstname=u'firsie', lastname=u'lastie', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"de", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCDEFGFOO', password=u'arandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'23', ) member2 = C3sMember( # german firstname=u'AAASomeFirstnäme', lastname=u'XXXSomeLastnäme', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"de", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCDEFGBAR', password=u'arandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'23', ) member3 = C3sMember( # german firstname=u'BBBSomeFirstnäme', lastname=u'AAASomeLastnäme', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"de", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCDEFGBAZ', password=u'arandompassword', date_of_submission=date.today(), membership_type=u'investing', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=23, ) DBSession.add(member1) DBSession.add(member2) DBSession.add(member3) accountants_group = Group(name=u"staff") try: DBSession.add(accountants_group) DBSession.flush() # print("adding group staff") except: print("could not add group staff.") # pass # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] try: DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() except: print("it borked! (rut)")
def setUp(self): """ Setup test cases """ self.config = testing.setUp() self.config.include('pyramid_mailer.testing') DBSession.close() DBSession.remove() my_settings = { 'sqlalchemy.url': 'sqlite:///:memory:', 'available_languages': 'da de en es fr', 'c3smembership.dashboard_number': '30' } engine = engine_from_config(my_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) # self._insert_members() with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") DBSession.add(accountants_group) DBSession.flush() # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() with transaction.manager: member1 = C3sMember( # german firstname=u'SomeFirstnäme', lastname=u'SomeLastnäme', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"de", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCDEFGFOO', password=u'arandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'23', ) shares1_m1 = Shares( number=2, date_of_acquisition=date.today(), reference_code=u'ABCDEFGH', signature_received=True, signature_received_date=date(2014, 6, 7), payment_received=True, payment_received_date=date(2014, 6, 8), signature_confirmed=True, signature_confirmed_date=date(2014, 6, 8), payment_confirmed=True, payment_confirmed_date=date(2014, 6, 9), accountant_comment=u'no comment', ) member1.shares = [shares1_m1] shares2_m1 = Shares( number=23, date_of_acquisition=date.today(), reference_code=u'IJKLMNO', signature_received=True, signature_received_date=date(2014, 1, 7), payment_received=True, payment_received_date=date(2014, 1, 8), signature_confirmed=True, signature_confirmed_date=date(2014, 1, 8), payment_confirmed=True, payment_confirmed_date=date(2014, 1, 9), accountant_comment=u'not connected', ) member1.shares.append(shares2_m1) member1.membership_accepted = True member2 = C3sMember( # english firstname=u'AAASomeFirstnäme', lastname=u'XXXSomeLastnäme', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"en", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCDEFGBAR', password=u'arandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'2', ) founding_member3 = C3sMember( # english firstname=u'BBBSomeFirstnäme', lastname=u'YYYSomeLastnäme', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"en", date_of_birth=date.today(), email_is_confirmed=False, email_confirm_code=u'ABCBARdungHH_', password=u'anotherrandompassword', date_of_submission=date.today(), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'2', ) member4_lost = C3sMember( firstname=u'Resigned', lastname=u'Smith', email=u'*****@*****.**', address1=u"addr one", address2=u"addr two", postcode=u"12345", city=u"Footown Mäh", country=u"Foocountry", locale=u"en", date_of_birth=date(1980, 1, 2), email_is_confirmed=False, email_confirm_code=u'RESIGNEDSMITH', password=u'arandompassword', date_of_submission=date.today() - timedelta(days=370), membership_type=u'normal', member_of_colsoc=True, name_of_colsoc=u"GEMA", num_shares=u'2', ) DBSession.add(shares1_m1) DBSession.add(shares2_m1) DBSession.add(member1) DBSession.add(member2) DBSession.add(founding_member3) DBSession.add(member4_lost) app = main({}, **my_settings) self.testapp = TestApp(app)
def test_join_c3s(self): # setup self.config = testing.setUp() self.config.include('pyramid_mailer.testing') DBSession.close() DBSession.remove() my_settings = { 'sqlalchemy.url': 'sqlite:///:memory:', 'available_languages': 'da de en es fr', 'c3smembership.dashboard_number': '30' } engine = engine_from_config(my_settings) DBSession.configure(bind=engine) Base.metadata.create_all(engine) with transaction.manager: # a group for accountants/staff accountants_group = Group(name=u"staff") DBSession.add(accountants_group) DBSession.flush() # staff personnel staffer1 = C3sStaff( login=u"rut", password=u"berries", email=u"*****@*****.**", ) staffer1.groups = [accountants_group] DBSession.add(accountants_group) DBSession.add(staffer1) DBSession.flush() app = main({}, **my_settings) self.testapp = TestApp(app) # sucess for valid entry res = self.testapp.get('/', status=200) form = self._fill_form_valid_natural(res.form) res = form.submit(u'submit', status=302) res = res.follow() self.assertTrue('information below to be correct' in res.body) # success for 18th birthday res = self.testapp.get('/', status=200) form = self._fill_form_valid_natural(res.form) form['year'] = unicode(date.today().year - 18) form['month'] = unicode(date.today().month) form['day'] = unicode(date.today().day) res = form.submit(u'submit', status=302) res = res.follow() self.assertTrue('information below to be correct' in res.body) # failure on test one day before 18th birthday res = self.testapp.get('/', status=200) form = self._fill_form_valid_natural(res.form) form['year'] = unicode(date.today().year - 18) form['month'] = unicode(date.today().month) form['day'] = unicode(date.today().day + 1) res = form.submit(u'submit', status=200) self.assertTrue('underaged person is currently not' in res.body) # failure for statute not checked res = self.testapp.get('/', status=200) form = self._fill_form_valid_natural(res.form) form['got_dues_regulations'].value__set(False) res = form.submit(u'submit', status=200) # failure for dues regulations not checked res = self.testapp.get('/', status=200) form = self._fill_form_valid_natural(res.form) form['got_dues_regulations'].value__set(False) res = form.submit(u'submit', status=200) # teardown DBSession.close() DBSession.remove() testing.tearDown()
def test_group(self): #test_group = Group(name=u'testgroup') #self.session.add(test_group) result = Group.get_staffers_group() self.assertEquals(result.__str__(), 'group:staff')