Example #1
0
 def edit_flags(self):
     ''' Super ugly code, yes - Edit existing flags in the database '''
     flag = Flag.by_uuid(self.get_argument('uuid', ''))
     if flag is not None:
         try:
             name = self.get_argument('name', '')
             if flag.name != name:
                 if Flag.by_name(name) is None:
                     logging.info("Updated flag name %s -> %s" %
                         (flag.name, name,)
                     )
                     flag.name = name
                 else:
                     raise ValueError("Flag name already exists")
             token = self.get_argument('token', '')
             if flag.token != token:
                 if Flag.by_token(token) is None:
                     logging.info("Updated %s's token %s -> %s" %
                         (flag.name, flag.token, token)
                     )
                     flag.token = token
                 else:
                     raise ValueError("Token is not unique")
             description = self.get_argument('description', '')
             if flag._description != description:
                 logging.info("Updated %s's description %s -> %s" %
                     (flag.name, flag._description, description,)
                 )
                 flag.description = description
             flag.value = self.get_argument('value', '')
             flag.capture_message = self.get_argument('capture_message', '')
             box = Box.by_uuid(self.get_argument('box_uuid', ''))
             if box is not None and flag not in box.flags:
                 logging.info("Updated %s's box %d -> %d" %
                     (flag.name, flag.box_id, box.id)
                 )
                 flag.box_id = box.id
             elif box is None:
                 raise ValueError("Box does not exist")
             self.dbsession.add(flag)
             self.dbsession.commit()
             self.redirect("/admin/view/game_objects")
         except ValueError as error:
             self.render("admin/view/game_objects.html", errors=["%s" % error])
     else:
         self.render("admin/view/game_objects.html",
             errors=["Flag does not exist"]
         )