projects
/
mudpy.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use new-style elements for accounts
[mudpy.git]
/
mudpy
/
misc.py
diff --git
a/mudpy/misc.py
b/mudpy/misc.py
index
ebccc26
..
7478f3f
100644
(file)
--- a/
mudpy/misc.py
+++ b/
mudpy/misc.py
@@
-57,7
+57,11
@@
class Element:
# parse out appropriate category and subkey names, add to list
if self.key.find(":") > 0:
# parse out appropriate category and subkey names, add to list
if self.key.find(":") > 0:
+ # TODO(fungi) this can be removed once old_style Elements
+ # are no longer needed
self.category, self.subkey = self.key.split(":", 1)
self.category, self.subkey = self.key.split(":", 1)
+ elif self.key.find(".") > 0:
+ self.category, self.subkey = self.key.split(".", 1)[-2:]
else:
self.category = "other"
self.subkey = self.key
else:
self.category = "other"
self.subkey = self.key
@@
-73,10
+77,6
@@
class Element:
# record or reset a pointer to the origin file
self.origin = self.universe.files[origin.source]
# record or reset a pointer to the origin file
self.origin = self.universe.files[origin.source]
- # add a data section to the origin if necessary
- if self.key not in self.origin.data:
- self.origin.data[self.key] = {}
-
# add or replace this element in the universe
self.universe.contents[self.key] = self
self.universe.categories[self.category][self.subkey] = self
# add or replace this element in the universe
self.universe.contents[self.key] = self
self.universe.categories[self.category][self.subkey] = self
@@
-88,7
+88,11
@@
class Element:
def destroy(self):
"""Remove an element from the universe and destroy it."""
def destroy(self):
"""Remove an element from the universe and destroy it."""
- del(self.origin.data[self.key])
+ if self.old_style:
+ del self.origin.data[self.key]
+ else:
+ for facet in self.facethash:
+ del self.origin.data[".".join((self.key, facet))]
del self.universe.categories[self.category][self.subkey]
del self.universe.contents[self.key]
del self
del self.universe.categories[self.category][self.subkey]
del self.universe.contents[self.key]
del self
@@
-156,6
+160,8
@@
class Element:
"disallowed")
if facet in ["loglevel"]:
value = int(value)
"disallowed")
if facet in ["loglevel"]:
value = int(value)
+ elif facet in ["administrator"]:
+ value = bool(value)
if not self.has_facet(facet) or not self.get(facet) == value:
if self.old_style:
if self.key not in self.origin.data:
if not self.has_facet(facet) or not self.get(facet) == value:
if self.old_style:
if self.key not in self.origin.data:
@@
-679,11
+685,15
@@
class User:
def authenticate(self):
"""Flag the user as authenticated and disconnect duplicates."""
if self.state is not "authenticated":
def authenticate(self):
"""Flag the user as authenticated and disconnect duplicates."""
if self.state is not "authenticated":
- log("User " + self.account.get("name") + " logged in.", 2)
self.authenticated = True
if ("mudpy.limit" in universe.contents and self.account.subkey in
universe.contents["mudpy.limit"].get("admins")):
self.authenticated = True
if ("mudpy.limit" in universe.contents and self.account.subkey in
universe.contents["mudpy.limit"].get("admins")):
- self.account.set("administrator", "True")
+ self.account.set("administrator", True)
+ log("Administrator %s authenticated." %
+ self.account.get("name"), 2)
+ else:
+ # log("User %s authenticated." % self.account.get("name"), 2)
+ log("User %s authenticated." % self.account.subkey, 2)
def show_menu(self):
"""Send the user their current menu."""
def show_menu(self):
"""Send the user their current menu."""
@@
-1723,7
+1733,7
@@
def handler_entering_account_name(user):
# otherwise, this could be a brand new user
else:
# otherwise, this could be a brand new user
else:
- user.account = Element("account
:" + name, universe, old_style=Tru
e)
+ user.account = Element("account
.%s" % name, univers
e)
user.account.set("name", name)
log("New user: " + name, 2)
user.state = "checking_new_account_name"
user.account.set("name", name)
log("New user: " + name, 2)
user.state = "checking_new_account_name"