def rb_merge_users(new_id, old_id): """Updates RB data after an Avatar merge :param new_id: Target user :param old_id: Source user (being deleted in the merge) """ from indico.modules.rb import settings as rb_settings from indico.modules.rb.models.blocking_principals import BlockingPrincipal from indico.modules.rb.models.blockings import Blocking from indico.modules.rb.models.reservations import Reservation from indico.modules.rb.models.rooms import Room old_user = User.get(int(old_id)) new_user = User.get(int(new_id)) for bp in BlockingPrincipal.find(): if bp.principal == old_user: bp.principal = new_user Blocking.find(created_by_id=old_id).update({'created_by_id': new_id}) Reservation.find(created_by_id=old_id).update({'created_by_id': new_id}) Reservation.find(booked_for_id=old_id).update({'booked_for_id': new_id}) Room.find(owner_id=old_id).update({'owner_id': new_id}) for key in ('authorized_principals', 'admin_principals'): principals = rb_settings.get(key) principals = principals_merge_users(principals, new_id, old_id) rb_settings.set(key, principals)
def _merge_users(target, source, **kwargs): BlockingPrincipal.merge_users(target, source, 'blocking') Blocking.find(created_by_id=source.id).update({Blocking.created_by_id: target.id}) Reservation.find(created_by_id=source.id).update({Reservation.created_by_id: target.id}) Reservation.find(booked_for_id=source.id).update({Reservation.booked_for_id: target.id}) Room.find(owner_id=source.id).update({Room.owner_id: target.id}) rb_settings.acls.merge_users(target, source)
def _merge_users(target, source, **kwargs): source_principals = set(source.in_blocking_acls.options(joinedload(BlockingPrincipal.blocking))) target_blockings = {x.blocking for x in target.in_blocking_acls.options(joinedload(BlockingPrincipal.blocking))} for principal in source_principals: if principal.blocking not in target_blockings: principal.user_id = target.id else: db.session.delete(principal) Blocking.find(created_by_id=source.id).update({Blocking.created_by_id: target.id}) Reservation.find(created_by_id=source.id).update({Reservation.created_by_id: target.id}) Reservation.find(booked_for_id=source.id).update({Reservation.booked_for_id: target.id}) Room.find(owner_id=source.id).update({Room.owner_id: target.id}) settings.acls.merge_users(target, source)
def rb_merge_users(new_id, old_id): """Updates RB data after an Avatar merge :param new_id: Target user :param old_id: Source user (being deleted in the merge) """ from indico.modules.rb import settings from indico.modules.rb.models.blocking_principals import BlockingPrincipal from indico.modules.rb.models.blockings import Blocking from indico.modules.rb.models.reservations import Reservation from indico.modules.rb.models.rooms import Room BlockingPrincipal.find(entity_type='Avatar', entity_id=old_id).update({'entity_id': new_id}) Blocking.find(created_by_id=old_id).update({'created_by_id': new_id}) Reservation.find(created_by_id=old_id).update({'created_by_id': new_id}) Reservation.find(booked_for_id=old_id).update({'booked_for_id': new_id}) Room.find(owner_id=old_id).update({'owner_id': new_id}) for key in ('authorized_principals', 'admin_principals'): principals = settings.get(key, []) principals = principals_merge_users(principals, new_id, old_id) settings.set(key, principals)
def _process(self): criteria = [] if self.only_mine: criteria += [Blocking.created_by_id == self._getUser().getId()] if self.timeframe == 'year': criteria += [Blocking.start_date <= date(date.today().year, 12, 31), Blocking.end_date >= date(date.today().year, 1, 1)] elif self.timeframe == 'recent': criteria += [Blocking.end_date >= date.today()] blockings = Blocking.find(*criteria, _eager_all='blocked_rooms.room').order_by(Blocking.start_date.desc()).all() return WPRoomBookingBlockingList(self, blockings=blockings).display()
def _process(self): criteria = [] if self.only_mine: criteria += [Blocking.created_by_user == session.user] if self.timeframe == 'year': criteria += [ Blocking.start_date <= date(date.today().year, 12, 31), Blocking.end_date >= date(date.today().year, 1, 1) ] elif self.timeframe == 'recent': criteria += [Blocking.end_date >= date.today()] blockings = (Blocking.find(*criteria).options( joinedload('blocked_rooms').joinedload('room')).order_by( Blocking.start_date.desc()).all()) return WPRoomBookingBlockingList(self, blockings=blockings).display()
def _process(self): criteria = [] if self.only_mine: criteria += [Blocking.created_by_user == session.user] if self.timeframe == "year": criteria += [ Blocking.start_date <= date(date.today().year, 12, 31), Blocking.end_date >= date(date.today().year, 1, 1), ] elif self.timeframe == "recent": criteria += [Blocking.end_date >= date.today()] blockings = ( Blocking.find(*criteria) .options(joinedload("blocked_rooms").joinedload("room")) .order_by(Blocking.start_date.desc()) .all() ) return WPRoomBookingBlockingList(self, blockings=blockings).display()