def new_room_widget(self, name): rclss = rooms.classes() choices = [(rcls, rcls) for rcls in rclss] choices.insert(0, (None, 'New room ...')) info = dict(name=name, choices=choices, selected='') return self.render_form_select(info)
def render_process(self, ctx, data): request = ctx.locate(inevow.IRequest) args = normalize_args(request.args) roomid = int(args['roomid']) room = tzindex.get(roomid) xname = args['xname'] xclass = args['xclass'] bxname = args['bxname'] bxclass = args['bxclass'] destid = args['dest'] if destid != 'None': destid = int(destid) dest = tzindex.get(destid) else: dest = None newroomcls = args['newroom'] newroomname = args['newroomname'] if newroomcls == 'None' and newroomname: newroomcls = 'Room' elif newroomcls == 'None': newroomcls = None if dest is None and newroomcls is None: self.goback(request, 'Choose existing room, or room type to clone.') return elif dest is not None and newroomcls is not None: self.goback(request, 'Choose only one target room: Existing room or New room.') return elif newroomcls and newroomcls in rooms.classes(): cls = getattr(rooms, newroomcls) newroomname = args['newroomname'] if newroomname: newroom = cls(newroomname) else: newroom = cls() dest = newroom print 'NR', dest, dest.name if xname and xclass in exits.classes(): xcls = getattr(exits, xclass) if bxname and bxclass in exits.classes(): bxcls = getattr(exits, xclass) bx = bxcls(bxname, room=dest) x = xcls(xname, room=room, destination=dest, return_name=bxname) else: x = xcls(xname, room=room, destination=dest) tzid = x.tzid editpage = '/edit/%s' % roomid request.redirect(editpage) else: self.goback(request, 'Give a name for the exit.')
def render_process(self, ctx, data): request = ctx.locate(inevow.IRequest) roomname = ctx.arg('roomname') roomclass = ctx.arg('roomclass') if roomname and roomclass in rooms.classes(): cls = getattr(rooms, roomclass) newroom = cls(roomname) tzid = newroom.tzid editpage = '/edit/%s' % tzid request.redirect(editpage) else: self.goback(request, 'Give a name for the room.')
def render_addroomform(self, ctx, data): action = '/rooms/add/' lines = [T.h2['Add Room']] roomclasses = rooms.classes() roomclasses.sort() choices = [(cls, cls) for cls in roomclasses] roomsinfo = dict(name='roomclass', choices=choices, selected='Room') row = T.tr[T.td[self.render_form_select(roomsinfo)], T.td[T.input(name='roomname')], T.td[T.input(type='submit', value=' Add ')]] tbl = T.table(_class="center")[row] lines.append(tbl) form = T.form(action=action, method='POST')[lines] return T.div(_class='addroom')[form]
def cmd_list(s, r): '''list |players|items|rooms|mobs|exits| List all objects of the given type. ''' listing = r['type'] if listing == 'players': objs = players.ls() classes = [] elif listing == 'items': objs = items.ls() classes = items.classes() elif listing == 'rooms': objs = rooms.ls() classes = rooms.classes() elif listing == 'mobs': objs = mobs.ls() classes = mobs.classes() elif listing == 'exits': objs = exits.ls() classes = exits.classes() if objs: s.message('Existing objects:') objs.sort(key=operator.attrgetter('tzid')) msgs = [] for obj in objs: tzid = '(%s)' % obj.tzid msgs.append('%s %s' % (tzid.rjust(4, ' '), obj)) s.mlmessage(msgs, indent=4) else: s.message('No', listing, 'yet.') if classes: classes = list(classes) classes.sort() if objs: s.message() s.message('Cloneable:') s.columns_v(classes, color=colors.white)
def _clone_room(s, objname, objtzid, newname=''): # next, try to clone a room # first look at existing rooms orig = rooms.getname(objname) or \ rooms.get(objtzid) # if it is not there, it might be a Room class if orig is None: if objname in rooms.classes(): cls = getattr(rooms, objname) obj = cls() else: obj = None else: obj = copy.copy(orig) if obj: if newname: obj.name = newname s.message(obj, 'created.') return obj
def render_process(self, ctx, data): request = ctx.locate(inevow.IRequest) args = normalize_args(request.args) roomid = int(args['roomid']) room = tzindex.get(roomid) xname = args['xname'] xclass = args['xclass'] bxname = args['bxname'] bxclass = args['bxclass'] destid = args['dest'] if destid != 'None': destid = int(destid) dest = tzindex.get(destid) else: dest = None newroomcls = args['newroom'] newroomname = args['newroomname'] if newroomcls == 'None' and newroomname: newroomcls = 'Room' elif newroomcls == 'None': newroomcls = None if dest is None and newroomcls is None: self.goback(request, 'Choose existing room, or room type to clone.') return elif dest is not None and newroomcls is not None: self.goback( request, 'Choose only one target room: Existing room or New room.') return elif newroomcls and newroomcls in rooms.classes(): cls = getattr(rooms, newroomcls) newroomname = args['newroomname'] if newroomname: newroom = cls(newroomname) else: newroom = cls() dest = newroom print 'NR', dest, dest.name if xname and xclass in exits.classes(): xcls = getattr(exits, xclass) if bxname and bxclass in exits.classes(): bxcls = getattr(exits, xclass) bx = bxcls(bxname, room=dest) x = xcls(xname, room=room, destination=dest, return_name=bxname) else: x = xcls(xname, room=room, destination=dest) tzid = x.tzid editpage = '/edit/%s' % roomid request.redirect(editpage) else: self.goback(request, 'Give a name for the exit.')