Beispiel #1
0
 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)
Beispiel #2
0
    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)
Beispiel #3
0
 def get(self):
     render_to(self.response, 'admin/events.html', events=Event.all())
Beispiel #4
0
    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)
Beispiel #5
0
 def get(self):
     render_to(self.response, 'dump.html',
               dump='<form action="/o/yaml" method="POST"><input type="submit" /> </form>')
Beispiel #6
0
 def get(self):
     render_to(self.response, 'admin/adjust.html', members=Member.all(),
               adjustments=Adjustment.all())
Beispiel #7
0
 def get(self):
     render_to(self.response, 'admin/import.html')
Beispiel #8
0
 def get(self):
     render_to(self.response, 'admin/parse.html')