class UnauthenticatedViewTestCase(TestCase): def setUp(self): from pyvac.config import includeme from .conf import settings super(UnauthenticatedViewTestCase, self).setUp() self.maxDiff = None # authz_policy = ACLAuthorizationPolicy() self.config = testing.setUp(settings=settings) self.config.include(includeme) self.session = DBSession() transaction.begin() def tearDown(self): super(UnauthenticatedViewTestCase, self).tearDown() self.session.flush() transaction.commit() testing.tearDown() def create_request(self, params=None, environ=None, matchdict=None, headers=None, path='/', cookies=None, post=None, **kw): if params and not isinstance(params, MultiDict): mparams = MultiDict() for k, v in params.items(): if hasattr(v, '__iter__'): [mparams.add(k, vv) for vv in v] else: mparams.add(k, v) params = mparams rv = DummyRequest(params, environ, headers, path, cookies, post, matchdict=(matchdict or {}), **kw) return rv def assertIsRedirect(self, view): self.assertIsInstance(view, HTTPFound)
class UnauthenticatedViewTestCase(TestCase): mocks = [] def __init__(self, methodName='runTest'): super(UnauthenticatedViewTestCase, self).__init__(methodName) # pylint: disable=W0142 self.mocks = [patch(*mock_args) for mock_args in self.mocks] self.maxDiff = None def setUp(self): from pyvac.config import includeme from .conf import settings super(UnauthenticatedViewTestCase, self).setUp() self.maxDiff = None # authz_policy = ACLAuthorizationPolicy() self.config = testing.setUp(settings=settings) self.config.include(includeme) self.session = DBSession() transaction.begin() for dummy in self.mocks: dummy.start() def tearDown(self): super(UnauthenticatedViewTestCase, self).tearDown() self.session.flush() transaction.commit() testing.tearDown() for dummy in reversed(self.mocks): dummy.stop() def create_request(self, params=None, environ=None, matchdict=None, headers=None, path='/', cookies=None, post=None, **kw): if params and not isinstance(params, MultiDict): mparams = MultiDict() for k, v in params.items(): mparams.add(k, v) params = mparams rv = DummyRequest(params, environ, headers, path, cookies, post, matchdict=(matchdict or {}), **kw) return rv def assertIsRedirect(self, view): self.assertIsInstance(view, HTTPFound)
def replay(settings): with open(settings["pyvac.celery.yaml"]) as fdesc: Conf = yaml.load(fdesc, YAMLLoader) caldav_url = Conf.get("caldav").get("url") # XXX Register the database create_engine(settings, scoped=True) session = DBSession() calendar = get_calendar(caldav_url) requests = Request.find(session, where=(Request.status == "APPROVED_ADMIN",), order_by=Request.user_id) print "total requests", len(requests) print "" req_to_add = [] # for each requests for req in requests: print "-" * 10 print req.id, req.summarycal, req.date_from, req.date_to # check if entry in caldav exists results = calendar.date_search(req.date_from, req.date_to) if not results: # need to add missing entry in caldav print "need to insert request" req_to_add.append(req.id) else: summaries = [] for event in results: try: parse_event(event) except Exception: continue event.load() # XXX: if needed to delete entries # uid = event.instance.vevent.uid.value # ics = '%s/%s.ics' % (caldav_url, uid) # print delFromCal(caldav_url, ics) summary = event.instance.vevent.summary.value summaries.append(summary) if req.summarycal not in summaries: print "need to insert request" req_to_add.append(req.id) for req_id in set(req_to_add): req = Request.by_id(session, req_id) print "processing", req.id, req.summarycal, req.date_from, req.date_to ics_url = addToCal(caldav_url, req.date_from, req.date_to, req.summarycal) # save ics url in request req.ics_url = ics_url session.add(req) session.flush() transaction.commit()
def setUp(self): from pyvac.config import includeme from .conf import settings super(UnauthenticatedViewTestCase, self).setUp() self.maxDiff = None # authz_policy = ACLAuthorizationPolicy() self.config = testing.setUp(settings=settings) self.config.include(includeme) self.session = DBSession() transaction.begin() for dummy in self.mocks: dummy.start()
def run(self, *args, **kwargs): self.log = log # init database connection session = DBSession() # process pool life cycle self.process_pool_cycle(session) # process user pool increment self.process_pool_increment(session) session.flush() transaction.commit() return True
def run(self, *args, **kwargs): self.log = log # init database connection session = DBSession() req_accepted_notified = Request.by_status(session, 'ACCEPTED_MANAGER', notified=True) self.log.info('number of ACCEPTED_NOTIFIED requests: %d' % len(req_accepted_notified)) req_list = [] req_list.extend(req_accepted_notified) for req in req_list: self.log.info('selecting task for req type %r' % req.status) check_status = req.status if req.status == 'ACCEPTED_MANAGER' and req.notified: check_status = 'ACCEPTED_NOTIFIED' req_task = self.worker_tasks[check_status] self.log.info('task selected %r' % req_task.name) data = { 'req_id': req.id, } async_result = subtask(req_task).delay(data=data) self.log.info('task scheduled %r' % async_result) return True
def authenticated_userid(self, request): auth = request.environ.get('HTTP_AUTHORIZATION') try: authmeth, auth = auth.split(' ', 1) except AttributeError as ValueError: # not enough values to unpack return None if authmeth.lower() != 'basic': return None try: # Python 3's string is already unicode auth = auth.strip().decode('base64') if sys.version_info[0] == 2: auth = unicode(auth) except binascii.Error: # can't decode return None try: login, password = auth.split(':', 1) except ValueError: # not enough values to unpack return None if User.by_credentials(DBSession(), login, password): return login return None
def main(argv=sys.argv): if len(argv) != 2: usage(argv) config_uri = argv[1] settings = get_appsettings(config_uri) engine = create_engine('pyvac', settings, scoped=False) config = Configurator(settings=settings) config.end() from pyvac.models import (Base, Permission, Group, User, Request, Countries, VacationType, PasswordRecovery, Sudoer, CPVacation, RTTVacation, RequestHistory) session = DBSession() try: from IPython import embed from IPython.config.loader import Config cfg = Config() cfg.InteractiveShellEmbed.confirm_exit = False embed(config=cfg, banner1="Welcome to pyvac shell.") except ImportError: import code code.interact("pyvac shell", local=locals())
def run(self, *args, **kwargs): self.log = log # init database connection session = DBSession() # init conf conf = ConfCache() remconf = conf.get('reminder', {}).get('trial_thresholds', {}) self.countries = remconf.get('countries') self.trial_thresholds = remconf.get('values') self.subject = conf.get('reminder', {}).get('subject', 'Reminder') self.log.info('reminder conf: %s / %s' % (self.countries, self.trial_thresholds)) if not self.countries or not self.trial_thresholds: self.log.error('configuration is missing for trial reminder.') return False datas = [self.get_data(session, country) for country in self.countries] # flatten the list datas = [item for sublist in datas for item in sublist] self.log.info('number of reminders to send: %d' % len(datas)) for data in datas: async_result = subtask(WorkerTrialReminder).delay(data=data) self.log.info('task reminder scheduled %r' % async_result) return True
def setUp(self): from pyvac.config import includeme from .conf import settings super(UnauthenticatedViewTestCase, self).setUp() self.maxDiff = None # authz_policy = ACLAuthorizationPolicy() self.config = testing.setUp(settings=settings) self.config.include(includeme) self.session = DBSession() transaction.begin()
def populate(engine, ldap): """ Retrieve users from ldap directory and import them in local database """ session = DBSession() # retrieve managers from dedicated group managers = ldap.list_manager() # retrieve users searchFilter = '(&(objectClass=inetOrgPerson)(employeetype=Employee))' required = ['objectClass', 'employeeType', 'cn', 'givenName', 'sn', 'manager', 'mail', 'ou', 'uid', 'userPassword'] users = ldap._search(searchFilter, required) for user_dn, user_entry in users: user_data = ldap.parse_ldap_entry(user_dn, user_entry) login = user_data['login'].decode('utf-8') # check what type of user it is group = u'user' # if it's a manager he should be in manager group if user_data['dn'] in managers: group = u'manager' # if it's an admin he should be in admin group what = '(member=%s)' % user_data['dn'] if len(ldap._search_admin(what, None)) > 0: group = u'admin' user = User.by_login(session, login) if not user: user = User.create_from_ldap(session, user_data, group) else: # update user with ldap informations in case it changed user.email = user_data['email'].decode('utf-8') user.firstname = user_data['firstname'].decode('utf-8') user.lastname = user_data['lastname'].decode('utf-8') user.manager_dn = user_data['manager_dn'].decode('utf-8') user.dn = user_data['dn'].decode('utf-8') user.role = group session.add(user) session.commit()
def replay(settings): with open(settings['pyvac.celery.yaml']) as fdesc: Conf = yaml.load(fdesc, YAMLLoader) caldav_url = Conf.get('caldav').get('url') # XXX Register the database create_engine(settings, scoped=True) session = DBSession() calendar = get_calendar(caldav_url) requests = Request.find(session, where=(Request.status == 'APPROVED_ADMIN',), order_by=Request.user_id) print 'total requests', len(requests) print '' req_to_add = [] # for each requests for req in requests: print '-' * 10 print req.id, req.summarycal, req.date_from, req.date_to # check if entry in caldav exists results = calendar.date_search(req.date_from, req.date_to) if not results: # need to add missing entry in caldav print 'need to insert request' req_to_add.append(req.id) else: summaries = [] for event in results: try: parse_event(event) except Exception: continue event.load() # XXX: if needed to delete entries # uid = event.instance.vevent.uid.value # ics = '%s/%s.ics' % (caldav_url, uid) # print delFromCal(caldav_url, ics) summary = event.instance.vevent.summary.value summaries.append(summary) if req.summarycal not in summaries: print 'need to insert request' req_to_add.append(req.id) for req_id in set(req_to_add): req = Request.by_id(session, req_id) print 'processing', req.id, req.summarycal, req.date_from, req.date_to ics_url = addToCal(caldav_url, req.date_from, req.date_to, req.summarycal) # save ics url in request req.ics_url = ics_url session.add(req) session.flush() transaction.commit()
def run(self, *args, **kwargs): self.log = log # init database connection session = DBSession() statuses = [ 'PENDING', 'ACCEPTED_MANAGER', 'DENIED', 'APPROVED_ADMIN', 'CANCELED', 'ERROR' ] for status in statuses: requests = Request.by_status(session, status) self.log.info('number of requests for %s: %d' % (status, len(requests))) req_accepted_notified = Request.by_status(session, 'ACCEPTED_MANAGER', notified=True) self.log.info('number of ACCEPTED_NOTIFIED requests: %d' % len(req_accepted_notified)) # req_pending_notified = Request.by_status(session, 'PENDING', # notified=True) # self.log.info('number of PENDING_NOTIFIED requests: %d' % # len(req_pending_notified)) req_list = [] req_list.extend(req_accepted_notified) # req_list.extend(req_pending_notified) for req in req_list: self.log.info('selecting task for req type %r' % req.status) check_status = req.status if req.status == 'ACCEPTED_MANAGER' and req.notified: check_status = 'ACCEPTED_NOTIFIED' # if req.status == 'PENDING' and req.notified: # check_status = 'PENDING_NOTIFIED' req_task = self.worker_tasks[check_status] self.log.info('task selected %r' % req_task.name) data = { 'req_id': req.id, } async_result = subtask(req_task).delay(data=data) self.log.info('task scheduled %r' % async_result) return True
def run(self, *args, **kwargs): self.log = log self.session = DBSession() self.smtp = SmtpCache() self.log.debug('using session %r, %r' % (self.session, id(self.session))) req = kwargs.get('data') # don't log credentials like in caldav.url params = req.copy() params.pop('caldav.url', None) self.log.info('[Task %s]: RECEIVED %r' % (self.name, params)) self.process(req) return True
def locale_negotiator(request): """ Locale negotiator for pyramid views. This version differs from Pyramid's :py:func:`default_locale_negotiator <pyramid.i18n.default_locale_negotiator>` in that it gets the locale from the url parameter or the cookie, and fallbacks to the user's lang. """ login = authenticated_userid(request) if login: from pyvac.models import DBSession, User session = DBSession() user = User.by_login(session, login) if user.country == 'us': return 'en' if user.country == 'zh': return 'en' return user.country return None
def populate(engine, ldap): """ Retrieve users from ldap directory and import them in local database """ session = DBSession() # retrieve managers from dedicated group managers = ldap.list_manager() # retrieve users searchFilter = '(&(objectClass=inetOrgPerson)(employeetype=Employee))' required = ['objectClass', 'employeeType', 'cn', 'givenName', 'sn', 'manager', 'mail', 'ou', 'uid', 'userPassword'] users = ldap._search(searchFilter, required) for user_dn, user_entry in users: user_data = ldap.parse_ldap_entry(user_dn, user_entry) if not user_data or not user_data.get('login'): continue login = user_data['login'].decode('utf-8') # check what type of user it is group = 'user' # if it's a manager he should be in manager group if user_data['dn'] in managers: group = 'manager' # if it's an admin he should be in admin group what = '(member=%s)' % user_data['dn'] if len(ldap._search_admin(what, None)) > 0: group = 'admin' user = User.by_login(session, login) if not user: user = User.create_from_ldap(session, user_data, group) else: # update user with ldap informations in case it changed user.email = user_data['email'].decode('utf-8') user.firstname = user_data['firstname'].decode('utf-8') user.lastname = user_data['lastname'].decode('utf-8') user.manager_dn = user_data['manager_dn'].decode('utf-8') user.dn = user_data['dn'].decode('utf-8') user.role = group session.add(user) session.commit()
def populate(engine): Base.metadata.create_all(engine) session = DBSession() vactype = VacationType(name='Télétravail') session.add(vactype) fr_country = Countries.by_name(session, name='fr') lu_country = Countries.by_name(session, name='lu') us_country = Countries.by_name(session, name='us') zh_country = Countries.by_name(session, name='zh') # Remote is available for everyone vactype.countries.append(fr_country) vactype.countries.append(lu_country) vactype.countries.append(us_country) vactype.countries.append(zh_country) session.commit()
def populate(engine): Base.metadata.create_all(engine) session = DBSession() user_perm = Permission(name='user_view') admin_perm = Permission(name='admin_view') manager_perm = Permission(name='manager_view') sudo_perm = Permission(name='sudo_view') session.add(user_perm) session.add(admin_perm) session.add(manager_perm) session.add(sudo_perm) admin_group = Group(name='admin') admin_group.permissions.append(user_perm) admin_group.permissions.append(admin_perm) admin_group.permissions.append(manager_perm) admin_group.permissions.append(sudo_perm) session.add(admin_group) manager_group = Group(name='manager') manager_group.permissions.append(user_perm) manager_group.permissions.append(manager_perm) manager_group.permissions.append(sudo_perm) session.add(manager_group) user_group = Group(name='user') user_group.permissions.append(user_perm) session.add(user_group) sudoer_group = Group(name='sudoer') sudoer_group.permissions.append(sudo_perm) session.add(sudoer_group) vactype1 = VacationType(name='CP') session.add(vactype1) vactype2 = VacationType(name='RTT') session.add(vactype2) vactype3 = VacationType(name='Congé Parental') session.add(vactype3) vactype4 = VacationType(name='Récupération') session.add(vactype4) vactype5 = VacationType(name='Maladie', visibility='admin') session.add(vactype5) vactype6 = VacationType(name='Exceptionnel') session.add(vactype6) vactype7 = VacationType(name='Compensatoire') session.add(vactype7) vactype8 = VacationType(name='Télétravail') session.add(vactype8) fr_country = Countries(name='fr') session.add(fr_country) lu_country = Countries(name='lu') session.add(lu_country) us_country = Countries(name='us') session.add(us_country) zh_country = Countries(name='zh') session.add(zh_country) now = datetime.now() cp_pool1 = Pool(name='acquis', date_start=datetime(now.year, 6, 1), date_end=datetime(now.year + 1, 5, 31), status='active', vacation_type=vactype1, country=fr_country, pool_group=1, date_last_increment=now, ) session.add(cp_pool1) cp_pool2 = Pool(name='restant', date_start=datetime(now.year - 1, 6, 1), date_end=datetime(now.year, 5, 31), status='active', vacation_type=vactype1, country=fr_country, pool_group=1, date_last_increment=now, ) session.add(cp_pool2) cplu_pool1 = Pool(name='acquis', alias='légaux', date_start=datetime(now.year, 1, 1), date_end=datetime(now.year + 1, 3, 31), status='active', vacation_type=vactype1, country=lu_country, pool_group=2, date_last_increment=now, ) session.add(cplu_pool1) cplu_pool2 = Pool(name='restant', alias='report', date_start=datetime(now.year - 1, 1, 1), date_end=datetime(now.year, 3, 31), status='active', vacation_type=vactype1, country=lu_country, pool_group=2, date_last_increment=now, ) session.add(cplu_pool2) rtt_pool = Pool(name=vactype2.name, date_start=datetime(now.year, 1, 1), date_end=datetime(now.year + 1, 12, 31), status='active', vacation_type=vactype2, country=fr_country, date_last_increment=now, ) session.add(rtt_pool) # CP is available for everyone vactype1.countries.append(fr_country) vactype1.countries.append(lu_country) vactype1.countries.append(us_country) vactype1.countries.append(zh_country) # RTT only available for france vactype2.countries.append(fr_country) # Parental vacation is available for everyone vactype3.countries.append(fr_country) vactype3.countries.append(lu_country) vactype3.countries.append(us_country) vactype3.countries.append(zh_country) # Recovery is available for everyone vactype4.countries.append(fr_country) vactype4.countries.append(lu_country) vactype4.countries.append(us_country) vactype4.countries.append(zh_country) # Sickness vacation is available for all countries vactype5.countries.append(fr_country) vactype5.countries.append(lu_country) vactype5.countries.append(us_country) vactype5.countries.append(zh_country) # Exception vacation is available for all countries vactype6.countries.append(fr_country) vactype6.countries.append(lu_country) vactype6.countries.append(us_country) vactype6.countries.append(zh_country) # Holiday recovery is only available for LU vactype7.countries.append(lu_country) # Remote is available for everyone vactype8.countries.append(fr_country) vactype8.countries.append(lu_country) vactype8.countries.append(us_country) vactype8.countries.append(zh_country) common_password = '******' admin = User(login='******', password=common_password, email='*****@*****.**', firstname='The', lastname='Administrator', role='admin', _country=fr_country) admin.groups.append(admin_group) session.add(admin) session.commit()
def setUpModule(): engine = create_engine(settings) populate(engine) session = DBSession() user_group = Group.by_name(session, 'user') manager_group = Group.by_name(session, 'manager') sudoer_group = Group.by_name(session, 'sudoer') common_password = '******' cp_vacation = VacationType.by_name(session, 'CP') rtt_vacation = VacationType.by_name(session, 'RTT') recovery_vacation = VacationType.by_name(session, 'Récupération') sickness_vacation = VacationType.by_name(session, 'Maladie') exception_vacation = VacationType.by_name(session, 'Exceptionnel') fr_country = Countries.by_name(session, 'fr') us_country = Countries.by_name(session, 'us') lu_country = Countries.by_name(session, 'lu') manager1 = User( login='******', password=common_password, email='*****@*****.**', firstname='First', lastname='Manager', role='manager', _country=fr_country, ) manager1.groups.append(manager_group) session.add(manager1) manager2 = User( login='******', password=common_password, email='*****@*****.**', firstname='Second', lastname='Manager', role='manager', _country=fr_country, ) manager2.groups.append(manager_group) session.add(manager2) manager_us = User( login='******', password=common_password, email='*****@*****.**', firstname='Third', lastname='Manager', role='manager', _country=us_country, ) manager_us.groups.append(manager_group) session.add(manager_us) user1 = User( login='******', password=common_password, email='*****@*****.**', manager=manager1, firstname='John', lastname='Doe', _country=fr_country, registration_number=1337, ) user1.groups.append(user_group) session.add(user1) user2 = User( login='******', password=common_password, email='*****@*****.**', manager=manager2, firstname='Jane', lastname='Doe', _country=fr_country, ) user2.groups.append(user_group) user2.groups.append(sudoer_group) session.add(user2) session.flush() sudoer = Sudoer(source_id=user2.id, target_id=1) session.add(sudoer) user3 = User( login='******', password=common_password, email='*****@*****.**', manager=manager1, firstname='Sarah', lastname='Doe', _country=lu_country, ) user3.groups.append(user_group) session.add(user3) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('14/04/2015', '%d/%m/%Y') req1 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=cp_vacation, status='PENDING', user=user1, notified=False) session.add(req1) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('21/04/2015', '%d/%m/%Y') req2 = Request( date_from=date_from, date_to=date_to, days=10, vacation_type=cp_vacation, status='PENDING', user=user2, notified=False, ) session.add(req2) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req3 = Request( date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status='ACCEPTED_MANAGER', user=user1, notified=True, ) session.add(req3) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req4 = Request( date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status='CANCELED', user=user1, notified=True, ) session.add(req4) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req5 = Request( date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status='APPROVED_ADMIN', user=manager_us, notified=True, ) session.add(req5) date_from = datetime.strptime('24/08/2011', '%d/%m/%Y') date_to = datetime.strptime('24/08/2011', '%d/%m/%Y') req6 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status='APPROVED_ADMIN', user=user1, notified=True, label='AM') session.add(req6) date_from = datetime.strptime('14/07/2014', '%d/%m/%Y') date_to = datetime.strptime('14/07/2014', '%d/%m/%Y') req7 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status='APPROVED_ADMIN', user=user1, notified=True, label='AM') session.add(req7) # used for rtt vacation checks date_from = datetime.strptime('01/04/2016', '%d/%m/%Y') date_to = datetime.strptime('02/04/2016', '%d/%m/%Y') req8 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status='PENDING', user=user1, notified=True) session.add(req8) date_from = datetime.strptime('01/03/2016', '%d/%m/%Y') date_to = datetime.strptime('02/03/2016', '%d/%m/%Y') req9 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status='ACCEPTED_MANAGER', user=user1, notified=True) session.add(req9) date_from = datetime.strptime('01/02/2016', '%d/%m/%Y') date_to = datetime.strptime('02/02/2016', '%d/%m/%Y') req10 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status='APPROVED_ADMIN', user=user1, notified=True) session.add(req10) date_from = datetime.strptime('01/06/2016', '%d/%m/%Y') date_to = datetime.strptime('02/06/2016', '%d/%m/%Y') req11 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=recovery_vacation, status='APPROVED_ADMIN', user=user1, notified=True) session.add(req11) date_from = datetime.strptime('12/04/2015', '%d/%m/%Y') date_to = datetime.strptime('12/04/2015', '%d/%m/%Y') req12 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status='DENIED', user=user1, notified=True) session.add(req12) date_from = datetime.strptime('06/06/2016', '%d/%m/%Y') date_to = datetime.strptime('06/06/2016', '%d/%m/%Y') req13 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=sickness_vacation, status='APPROVED_ADMIN', user=user1, notified=True) session.add(req13) date_from = datetime.strptime('13/06/2016', '%d/%m/%Y') date_to = datetime.strptime('13/06/2016', '%d/%m/%Y') req14 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=exception_vacation, status='APPROVED_ADMIN', user=user2, message="I need to see Star Wars, I'm a huge fan", notified=True) session.add(req14) session.commit()
def populate(engine): Base.metadata.create_all(engine) session = DBSession() user_perm = Permission(name=u"user_view") admin_perm = Permission(name=u"admin_view") manager_perm = Permission(name=u"manager_view") sudo_perm = Permission(name=u"sudo_view") session.add(user_perm) session.add(admin_perm) session.add(manager_perm) session.add(sudo_perm) admin_group = Group(name=u"admin") admin_group.permissions.append(user_perm) admin_group.permissions.append(admin_perm) admin_group.permissions.append(manager_perm) admin_group.permissions.append(sudo_perm) session.add(admin_group) manager_group = Group(name=u"manager") manager_group.permissions.append(user_perm) manager_group.permissions.append(manager_perm) manager_group.permissions.append(sudo_perm) session.add(manager_group) user_group = Group(name=u"user") user_group.permissions.append(user_perm) session.add(user_group) sudoer_group = Group(name=u"sudoer") sudoer_group.permissions.append(sudo_perm) session.add(sudoer_group) vactype1 = VacationType(name=u"CP") session.add(vactype1) vactype2 = VacationType(name=u"RTT") session.add(vactype2) vactype3 = VacationType(name=u"Congé Parental") session.add(vactype3) vactype4 = VacationType(name=u"Récupération") session.add(vactype4) vactype5 = VacationType(name=u"Maladie", visibility=u"admin") session.add(vactype5) vactype6 = VacationType(name=u"Exceptionnel") session.add(vactype6) fr_country = Countries(name=u"fr") session.add(fr_country) lu_country = Countries(name=u"lu") session.add(lu_country) us_country = Countries(name=u"us") session.add(us_country) zh_country = Countries(name=u"zh") session.add(zh_country) # CP is available for everyone vactype1.countries.append(fr_country) vactype1.countries.append(lu_country) vactype1.countries.append(us_country) vactype1.countries.append(zh_country) # RTT only available for france vactype2.countries.append(fr_country) # Parental vacation is available for everyone vactype3.countries.append(fr_country) vactype3.countries.append(lu_country) vactype3.countries.append(us_country) vactype3.countries.append(zh_country) # Recovery is available for everyone vactype4.countries.append(fr_country) vactype4.countries.append(lu_country) vactype4.countries.append(us_country) vactype4.countries.append(zh_country) # Sickness vacation is available for all countries vactype5.countries.append(fr_country) vactype5.countries.append(lu_country) vactype5.countries.append(us_country) vactype5.countries.append(zh_country) # Exception vacation is available for all countries vactype6.countries.append(fr_country) vactype6.countries.append(lu_country) vactype6.countries.append(us_country) vactype6.countries.append(zh_country) common_password = u"changeme" admin = User( login=u"admin", password=common_password, email=u"*****@*****.**", firstname=u"The", lastname=u"Administrator", role=u"admin", _country=fr_country, ) admin.groups.append(admin_group) session.add(admin) session.commit()
def populate(engine): session = DBSession() cp = VacationType.by_id(session, 1) rtt = VacationType.by_id(session, 2) parent = VacationType.by_id(session, 3) fr_country = Countries.by_name(session, u'fr') session.add(fr_country) lu_country = Countries.by_name(session, u'lu') session.add(lu_country) us_country = Countries.by_name(session, u'us') session.add(us_country) zh_country = Countries.by_name(session, u'zh') session.add(zh_country) # CP is available for everyone cp.countries.append(fr_country) cp.countries.append(lu_country) cp.countries.append(us_country) cp.countries.append(zh_country) # RTT only available for france rtt.countries.append(fr_country) # parent is available for everyone parent.countries.append(fr_country) parent.countries.append(lu_country) parent.countries.append(us_country) parent.countries.append(zh_country) session.commit()
def populate(engine): Base.metadata.create_all(engine) session = DBSession() user_perm = Permission(name=u'user_view') admin_perm = Permission(name=u'admin_view') manager_perm = Permission(name=u'manager_view') sudo_perm = Permission(name=u'sudo_view') session.add(user_perm) session.add(admin_perm) session.add(manager_perm) session.add(sudo_perm) admin_group = Group(name=u'admin') admin_group.permissions.append(user_perm) admin_group.permissions.append(admin_perm) admin_group.permissions.append(manager_perm) admin_group.permissions.append(sudo_perm) session.add(admin_group) manager_group = Group(name=u'manager') manager_group.permissions.append(user_perm) manager_group.permissions.append(manager_perm) manager_group.permissions.append(sudo_perm) session.add(manager_group) user_group = Group(name=u'user') user_group.permissions.append(user_perm) session.add(user_group) sudoer_group = Group(name=u'sudoer') sudoer_group.permissions.append(sudo_perm) session.add(sudoer_group) vactype1 = VacationType(name=u'CP') session.add(vactype1) vactype2 = VacationType(name=u'RTT') session.add(vactype2) vactype3 = VacationType(name=u'Congé Parental') session.add(vactype3) vactype4 = VacationType(name=u'Récupération') session.add(vactype4) vactype5 = VacationType(name=u'Maladie', visibility=u'admin') session.add(vactype5) vactype6 = VacationType(name=u'Exceptionnel') session.add(vactype6) vactype7 = VacationType(name=u'Compensatoire') session.add(vactype7) fr_country = Countries(name=u'fr') session.add(fr_country) lu_country = Countries(name=u'lu') session.add(lu_country) us_country = Countries(name=u'us') session.add(us_country) zh_country = Countries(name=u'zh') session.add(zh_country) # CP is available for everyone vactype1.countries.append(fr_country) vactype1.countries.append(lu_country) vactype1.countries.append(us_country) vactype1.countries.append(zh_country) # RTT only available for france vactype2.countries.append(fr_country) # Parental vacation is available for everyone vactype3.countries.append(fr_country) vactype3.countries.append(lu_country) vactype3.countries.append(us_country) vactype3.countries.append(zh_country) # Recovery is available for everyone vactype4.countries.append(fr_country) vactype4.countries.append(lu_country) vactype4.countries.append(us_country) vactype4.countries.append(zh_country) # Sickness vacation is available for all countries vactype5.countries.append(fr_country) vactype5.countries.append(lu_country) vactype5.countries.append(us_country) vactype5.countries.append(zh_country) # Exception vacation is available for all countries vactype6.countries.append(fr_country) vactype6.countries.append(lu_country) vactype6.countries.append(us_country) vactype6.countries.append(zh_country) # Holiday recovery is only available for LU vactype7.countries.append(lu_country) common_password = u'changeme' admin = User(login=u'admin', password=common_password, email=u'*****@*****.**', firstname=u'The', lastname=u'Administrator', role=u'admin', _country=fr_country) admin.groups.append(admin_group) session.add(admin) session.commit()
def populate(engine): session = DBSession() cp = VacationType.by_id(session, 1) rtt = VacationType.by_id(session, 2) parent = VacationType.by_id(session, 3) recovery = VacationType.by_id(session, 4) fr_country = Countries.by_name(session, 'fr') session.add(fr_country) lu_country = Countries.by_name(session, 'lu') session.add(lu_country) us_country = Countries.by_name(session, 'us') session.add(us_country) zh_country = Countries.by_name(session, 'zh') session.add(zh_country) # CP is available for everyone cp.countries.append(fr_country) cp.countries.append(lu_country) cp.countries.append(us_country) cp.countries.append(zh_country) # RTT only available for france rtt.countries.append(fr_country) # parent is available for everyone parent.countries.append(fr_country) parent.countries.append(lu_country) parent.countries.append(us_country) parent.countries.append(zh_country) # recovery is available for everyone recovery.countries.append(fr_country) recovery.countries.append(lu_country) recovery.countries.append(us_country) recovery.countries.append(zh_country) session.commit()
def setUpModule(): engine = create_engine(settings) populate(engine) session = DBSession() user_group = Group.by_name(session, u'user') manager_group = Group.by_name(session, u'manager') common_password = u'changeme' cp_vacation = VacationType.by_name(session, u'CP') rtt_vacation = VacationType.by_name(session, u'RTT') fr_country = Countries.by_name(session, u'fr') us_country = Countries.by_name(session, u'us') manager1 = User(login=u'manager1', password=common_password, email=u'*****@*****.**', firstname=u'First', lastname=u'Manager', role=u'manager', _country=fr_country, ) manager1.groups.append(manager_group) session.add(manager1) manager2 = User(login=u'manager2', password=common_password, email=u'*****@*****.**', firstname=u'Second', lastname=u'Manager', role=u'manager', _country=fr_country, ) manager2.groups.append(manager_group) session.add(manager2) manager_us = User(login=u'manager3', password=common_password, email=u'*****@*****.**', firstname=u'Third', lastname=u'Manager', role=u'manager', _country=us_country, ) manager_us.groups.append(manager_group) session.add(manager_us) user1 = User(login=u'jdoe', password=common_password, email=u'*****@*****.**', manager=manager1, firstname=u'John', lastname=u'Doe', _country=fr_country, ) user1.groups.append(user_group) session.add(user1) user2 = User(login=u'janedoe', password=common_password, email=u'*****@*****.**', manager=manager2, firstname=u'Jane', lastname=u'Doe', _country=fr_country, ) user2.groups.append(user_group) session.add(user2) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('14/04/2015', '%d/%m/%Y') req1 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=cp_vacation, status=u'PENDING', user=user1, notified=False) session.add(req1) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('21/04/2015', '%d/%m/%Y') req2 = Request(date_from=date_from, date_to=date_to, days=10, vacation_type=cp_vacation, status=u'PENDING', user=user2, notified=False,) session.add(req2) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req3 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'ACCEPTED_MANAGER', user=user1, notified=True,) session.add(req3) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req4 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'CANCELED', user=user1, notified=True,) session.add(req4) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req5 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=manager_us, notified=True,) session.add(req5) date_from = datetime.strptime('24/08/2011', '%d/%m/%Y') date_to = datetime.strptime('24/08/2011', '%d/%m/%Y') req6 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True, label=u'AM') session.add(req6) date_from = datetime.strptime('14/07/2014', '%d/%m/%Y') date_to = datetime.strptime('14/07/2014', '%d/%m/%Y') req7 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True, label=u'AM') session.add(req7) # used for rtt vacation checks date_from = datetime.strptime('01/04/2016', '%d/%m/%Y') date_to = datetime.strptime('02/04/2016', '%d/%m/%Y') req8 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'PENDING', user=user1, notified=True) session.add(req8) date_from = datetime.strptime('01/03/2016', '%d/%m/%Y') date_to = datetime.strptime('02/03/2016', '%d/%m/%Y') req9 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'ACCEPTED_MANAGER', user=user1, notified=True) session.add(req9) date_from = datetime.strptime('01/02/2016', '%d/%m/%Y') date_to = datetime.strptime('02/02/2016', '%d/%m/%Y') req10 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True) session.add(req10) session.commit()
def setUpModule(): engine = create_engine(settings) populate(engine) session = DBSession() user_group = Group.by_name(session, u'user') manager_group = Group.by_name(session, u'manager') sudoer_group = Group.by_name(session, u'sudoer') common_password = u'changeme' cp_vacation = VacationType.by_name(session, u'CP') rtt_vacation = VacationType.by_name(session, u'RTT') recovery_vacation = VacationType.by_name(session, u'Récupération') sickness_vacation = VacationType.by_name(session, u'Maladie') exception_vacation = VacationType.by_name(session, u'Exceptionnel') fr_country = Countries.by_name(session, u'fr') us_country = Countries.by_name(session, u'us') manager1 = User(login=u'manager1', password=common_password, email=u'*****@*****.**', firstname=u'First', lastname=u'Manager', role=u'manager', _country=fr_country, ) manager1.groups.append(manager_group) session.add(manager1) manager2 = User(login=u'manager2', password=common_password, email=u'*****@*****.**', firstname=u'Second', lastname=u'Manager', role=u'manager', _country=fr_country, ) manager2.groups.append(manager_group) session.add(manager2) manager_us = User(login=u'manager3', password=common_password, email=u'*****@*****.**', firstname=u'Third', lastname=u'Manager', role=u'manager', _country=us_country, ) manager_us.groups.append(manager_group) session.add(manager_us) user1 = User(login=u'jdoe', password=common_password, email=u'*****@*****.**', manager=manager1, firstname=u'John', lastname=u'Doe', _country=fr_country, ) user1.groups.append(user_group) session.add(user1) user2 = User(login=u'janedoe', password=common_password, email=u'*****@*****.**', manager=manager2, firstname=u'Jane', lastname=u'Doe', _country=fr_country, ) user2.groups.append(user_group) user2.groups.append(sudoer_group) session.add(user2) session.flush() sudoer = Sudoer(source_id=user2.id, target_id=1) session.add(sudoer) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('14/04/2015', '%d/%m/%Y') req1 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=cp_vacation, status=u'PENDING', user=user1, notified=False) session.add(req1) date_from = datetime.strptime('10/04/2015', '%d/%m/%Y') date_to = datetime.strptime('21/04/2015', '%d/%m/%Y') req2 = Request(date_from=date_from, date_to=date_to, days=10, vacation_type=cp_vacation, status=u'PENDING', user=user2, notified=False,) session.add(req2) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req3 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'ACCEPTED_MANAGER', user=user1, notified=True,) session.add(req3) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req4 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'CANCELED', user=user1, notified=True,) session.add(req4) date_from = datetime.strptime('24/04/2015', '%d/%m/%Y') date_to = datetime.strptime('28/04/2015', '%d/%m/%Y') req5 = Request(date_from=date_from, date_to=date_to, days=5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=manager_us, notified=True,) session.add(req5) date_from = datetime.strptime('24/08/2011', '%d/%m/%Y') date_to = datetime.strptime('24/08/2011', '%d/%m/%Y') req6 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True, label=u'AM') session.add(req6) date_from = datetime.strptime('14/07/2014', '%d/%m/%Y') date_to = datetime.strptime('14/07/2014', '%d/%m/%Y') req7 = Request(date_from=date_from, date_to=date_to, days=0.5, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True, label=u'AM') session.add(req7) # used for rtt vacation checks date_from = datetime.strptime('01/04/2016', '%d/%m/%Y') date_to = datetime.strptime('02/04/2016', '%d/%m/%Y') req8 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'PENDING', user=user1, notified=True) session.add(req8) date_from = datetime.strptime('01/03/2016', '%d/%m/%Y') date_to = datetime.strptime('02/03/2016', '%d/%m/%Y') req9 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'ACCEPTED_MANAGER', user=user1, notified=True) session.add(req9) date_from = datetime.strptime('01/02/2016', '%d/%m/%Y') date_to = datetime.strptime('02/02/2016', '%d/%m/%Y') req10 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True) session.add(req10) date_from = datetime.strptime('01/06/2016', '%d/%m/%Y') date_to = datetime.strptime('02/06/2016', '%d/%m/%Y') req11 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=recovery_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True) session.add(req11) date_from = datetime.strptime('12/04/2015', '%d/%m/%Y') date_to = datetime.strptime('12/04/2015', '%d/%m/%Y') req12 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=rtt_vacation, status=u'DENIED', user=user1, notified=True) session.add(req12) date_from = datetime.strptime('06/06/2016', '%d/%m/%Y') date_to = datetime.strptime('06/06/2016', '%d/%m/%Y') req13 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=sickness_vacation, status=u'APPROVED_ADMIN', user=user1, notified=True) session.add(req13) date_from = datetime.strptime('13/06/2016', '%d/%m/%Y') date_to = datetime.strptime('13/06/2016', '%d/%m/%Y') req14 = Request(date_from=date_from, date_to=date_to, days=1, vacation_type=exception_vacation, status=u'APPROVED_ADMIN', user=user2, message=u"I need to see Star Wars, I'm a huge fan", notified=True) session.add(req14) session.commit()
def populate(engine): Base.metadata.create_all(engine) session = DBSession() user_perm = Permission(name=u'user_view') admin_perm = Permission(name=u'admin_view') manager_perm = Permission(name=u'manager_view') session.add(user_perm) session.add(admin_perm) session.add(manager_perm) admin_group = Group(name=u'admin') admin_group.permissions.append(user_perm) admin_group.permissions.append(admin_perm) admin_group.permissions.append(manager_perm) session.add(admin_group) manager_group = Group(name=u'manager') manager_group.permissions.append(user_perm) manager_group.permissions.append(manager_perm) session.add(manager_group) user_group = Group(name=u'user') user_group.permissions.append(user_perm) session.add(user_group) vactype1 = VacationType(name=u'CP') session.add(vactype1) vactype2 = VacationType(name=u'RTT') session.add(vactype2) fr_country = Countries(name=u'fr') session.add(fr_country) lu_country = Countries(name=u'lu') session.add(lu_country) us_country = Countries(name=u'us') session.add(us_country) zh_country = Countries(name=u'zh') session.add(zh_country) common_password = u'changeme' admin = User(login=u'admin', password=common_password, email=u'*****@*****.**', firstname=u'The', lastname=u'Administrator', role=u'admin', _country=fr_country) admin.groups.append(admin_group) session.add(admin) session.commit()
def setUp(self): transaction.begin() self.session = DBSession()