def get(self, key): raid = Encounter.get(db.Key(key)) if raid: render_to(self.response, 'admin/parseadd.html', key=key, members=set([m.name for m in raid.attending_members()]), all_members=Member.all(), events=Event.all(), datetime=raid.datetime.strftime('%Y.%m.%d %H:%M'), items=[(i.item.gid, i.item.name, i.datetime.strftime('%Y.%m.%d %H:%M'), i.looter.name, (-1)*i.cost, str(i.key())) for i in raid.loots], raid=raid)
def post(self): all_members = Member.all() parsed = md.parseString(self.request.get('log').encode('utf-8')) members = [] for member in parsed.getElementsByTagName('member'): try: name = member.firstChild.firstChild except AttributeError: continue if name is None: continue name = name.toxml().strip().capitalize() class_ = member.childNodes[1].firstChild.toxml().upper() m = Member.gql('WHERE name = :1', name).get() if not m: new_member = Member(name=name, class_=class_) new_member.put() else: m.class_=class_ m.put() members.append(name) items = [] for item in parsed.getElementsByTagName('item'): try: name = item.firstChild.firstChild.toxml() except AttributeError: continue time = item.childNodes[1].firstChild.toxml() looter = item.childNodes[2].firstChild.toxml() pt = item.childNodes[3].firstChild.toxml() items.append(parse_item(name) + (time, looter, pt)) render_to(self.response, 'admin/parseadd.html', members=set(members), all_members=all_members, events=Event.all().order('name'), datetime=parsed.getElementsByTagName('start')[0].firstChild.toxml(), items=items)
def get(self): render_to(self.response, 'admin/events.html', events=Event.all())
def post(self): stream = file('rps.yaml', 'r') data = yaml.load(stream) id_to_key = {} items = defaultdict(list) att = defaultdict(list) memcache = {} for m in Member.all(): memcache[m.name] = m.key() for entry in data: if 'adjustment_id' in entry: continue # member = Member.gql('WHERE name = :1', entry['member_name']).get() # adj = Adjustment(pt=int(entry['adjustment_value']), # reason=entry['adjustment_reason'], # datetime=datetime.fromtimestamp(entry['adjustment_date']), # member=member) # adj.put() # elif 'item_id' in entry: if 'item_id' in entry: items[entry['raid_id']].append((entry['item_name'], entry['item_buyer'], entry['item_value'], entry['item_date'])) elif 'raid_added_by' in entry: event = Event.gql('WHERE name = :1', entry['raid_name']).get() if event: if not entry['raid_note']: entry['raid_note'] = '' raid = Encounter(event=event, note=entry['raid_note'], pt=int(entry['raid_value']), datetime=datetime.fromtimestamp(entry['raid_date'])) raid.put() id_to_key[entry['raid_id']] = raid.key() else: logging.error(entry) elif 'member_lastraid' in entry: continue else: try: att[entry['raid_id']].append(entry['member_name']) except KeyError: logging.error(entry) for rid, key in id_to_key.items(): r = Encounter.get(key) for member in att[rid]: m = memcache[member.capitalize()] if m: r.attendees.append(m) else: logging.error(member) r.put() for name, buyer, value, date in items[rid]: try: value = int(float(value))*(-1) except UnicodeEncodeError: logging.error(name) item = Item.gql('WHERE name = :1', name).get() if not item: item = Item(name=name, default_cost=value) item.put() loot = Loot(item=item, encounter=key, cost=value, looter=memcache[buyer], datetime=datetime.fromtimestamp(date)) loot.put() render_to(self.response, 'dump.html', dump=data)
def get(self): render_to(self.response, 'dump.html', dump='<form action="/o/yaml" method="POST"><input type="submit" /> </form>')
def get(self): render_to(self.response, 'admin/adjust.html', members=Member.all(), adjustments=Adjustment.all())
def get(self): render_to(self.response, 'admin/import.html')
def get(self): render_to(self.response, 'admin/parse.html')