def create_blocking(room_ids, allowed, start_date, end_date, reason, created_by): blocking = Blocking() blocking.start_date = start_date blocking.end_date = end_date blocking.created_by_user = created_by _populate_blocking(blocking, room_ids, allowed, reason) db.session.add(blocking) db.session.flush() return blocking
def create_blocking(rooms, start_date, end_date, reason, allowed_principals): blocking = Blocking() blocking.start_date = start_date blocking.end_date = end_date blocking.reason = reason blocking.created_by_user = session.user blocking.allowed = allowed_principals blocking.blocked_rooms = [BlockedRoom(room_id=room.id) for room in rooms] db.session.add(blocking) db.session.flush() return blocking
def _save(self): self._blocking = blocking = Blocking() blocking.start_date = self._form.start_date.data blocking.end_date = self._form.end_date.data blocking.created_by_user = session.user blocking.reason = self._form.reason.data blocking.allowed = self._form.principals.data blocking.blocked_rooms = [BlockedRoom(room_id=room_id) for room_id in self._form.blocked_rooms.data] db.session.add(blocking) db.session.flush() # synchronizes relationships (e.g. BlockedRoom.room) flash(_(u'Blocking created'), 'success') self._process_blocked_rooms(blocking.blocked_rooms)
def migrate_blockings(self): state_map = { None: BlockedRoom.State.pending, False: BlockedRoom.State.rejected, True: BlockedRoom.State.accepted } print cformat('%{white!}migrating blockings') for old_blocking_id, old_blocking in self.rb_root['RoomBlocking'][ 'Blockings'].iteritems(): b = Blocking(id=old_blocking.id, created_by_id=self.merged_avatars.get( old_blocking._createdBy, old_blocking._createdBy), created_dt=as_utc(old_blocking._utcCreatedDT), start_date=old_blocking.startDate, end_date=old_blocking.endDate, reason=convert_to_unicode(old_blocking.message)) print cformat(u'- %{cyan}{}').format(b.reason) for old_blocked_room in old_blocking.blockedRooms: br = BlockedRoom( state=state_map[old_blocked_room.active], rejected_by=old_blocked_room.rejectedBy, rejection_reason=convert_to_unicode( old_blocked_room.rejectionReason), ) room = Room.get(get_room_id(old_blocked_room.roomGUID)) room.blocked_rooms.append(br) b.blocked_rooms.append(br) print cformat(u' %{blue!}Room:%{reset} {} ({})').format( room.full_name, BlockedRoom.State(br.state).title) for old_principal in old_blocking.allowed: principal_id = old_principal._id if old_principal._type == 'Avatar': principal_id = int( self.merged_avatars.get(old_principal._id, old_principal._id)) principal_type = 'User' else: principal_type = 'Group' bp = BlockingPrincipal( _principal=[principal_type, principal_id]) b._allowed.add(bp) print cformat(u' %{blue!}Allowed:%{reset} {}({})').format( bp.entity_type, bp.entity_id) db.session.add(b) db.session.commit()
def _create_blocking(**params): room = params.pop('room', dummy_room) state = params.pop('state', BlockedRoom.State.pending) params.setdefault('start_date', date.today()) params.setdefault('end_date', date.today()) params.setdefault('reason', u'Blocked') params.setdefault('created_by_user', dummy_user) blocking = Blocking(**params) if room is not None: br = BlockedRoom(room=room, state=state, blocking=blocking) if state == BlockedRoom.State.accepted: br.approve(notify_blocker=False) db.session.add(blocking) db.session.flush() return blocking