[or-cvs] [bridgedb/master] Fix some issues that popped up during BridgeDB deployment

nickm at torproject.org nickm at torproject.org
Tue Feb 15 20:34:38 UTC 2011


commit ce76133b4779011db023004d48288e606138b50e
Author: Christian Fromme <kaner at strace.org>
Date:   Tue Feb 15 19:45:12 2011 +0100

    Fix some issues that popped up during BridgeDB deployment
    - Install translations to ~/ by default instead of /usr
    - Use ~ as prefix by default
    - Make sure pseudo distributors don't end up as actual ring names
---
 README                  |    6 +++---
 bridgedb.conf           |    2 +-
 lib/bridgedb/Bridges.py |    4 ++++
 lib/bridgedb/Bucket.py  |   18 +++++++++++++++++-
 lib/bridgedb/I18n.py    |    6 ++++--
 setup.cfg               |    3 ++-
 6 files changed, 31 insertions(+), 8 deletions(-)

diff --git a/README b/README
index a77369f..64b402a 100644
--- a/README
+++ b/README
@@ -3,9 +3,9 @@ To set up:
  - Install Python 2.4 or later.
  - Install Twisted-Web, Twisted-Mail, PyOpenSSL, and all their dependencies.
  - To run unit tests, "python setup.py test"
- - python setup.py install --prefix=$HOME
- - To generate translation files, run "python setup.py trans" and then run
-   "python setup.py install_data" to install them
+ - python setup.py install
+ - To generate translation files, run "python setup.py trans" 
+ - Run "python setup.py install_data" to install them
  - Edit bridgedb.conf; put it somewhere good.
  - Make sure that the input files referred to in bridgedb.conf exist.
    - You can make a self-signed certificate with
diff --git a/bridgedb.conf b/bridgedb.conf
index 91465c7..44422a7 100644
--- a/bridgedb.conf
+++ b/bridgedb.conf
@@ -140,4 +140,4 @@ EMAIL_INCLUDE_FINGERPRINTS=False
 #   HTTPS_SHARE : EMAIL_SHARE : RESERVED_SHARE
 RESERVED_SHARE=2
 
-FILE_BUCKETS = {}
\ No newline at end of file
+FILE_BUCKETS = {}
diff --git a/lib/bridgedb/Bridges.py b/lib/bridgedb/Bridges.py
index 7ba5d6d..a06cf26 100644
--- a/lib/bridgedb/Bridges.py
+++ b/lib/bridgedb/Bridges.py
@@ -17,6 +17,7 @@ import socket
 import time
 
 import bridgedb.Storage
+import bridgedb.Bucket
 
 HEX_FP_LEN = 40
 ID_LEN = 20
@@ -453,6 +454,9 @@ class BridgeSplitter(BridgeHolder):
         ringname = db.insertBridgeAndGetRing(bridge, ringname, time.time())
         db.commit()
 
+        # Resolve pseudo distributor ring names
+        ringname = bridgedb.Bucket.getRealDistributorName(ringname)
+
         ring = self.ringsByName.get(ringname)
         ring.insert(bridge)
 
diff --git a/lib/bridgedb/Bucket.py b/lib/bridgedb/Bucket.py
index cf32ac9..39edaea 100644
--- a/lib/bridgedb/Bucket.py
+++ b/lib/bridgedb/Bucket.py
@@ -24,6 +24,22 @@ instead of 'unallocated'. This is why they are called pseudo-distributors.
 import time
 import bridgedb.Storage
 
+# What should pseudo distributors be prefixed with in the database so we can
+# distinguish them from real distributors?
+PSEUDO_DISTRI_PREFIX = "pseudo_"
+
+def getRealDistributorName(distributor):
+    """Return the *real* ring name for a given one. This is needed because
+       with pseudo distributors, we've got strings in the database that aren't
+       real distributors. 
+    """
+
+    # If it starts with "pseudo_", its really "unallocated"
+    if distributor.startswith(PSEUDO_DISTRI_PREFIX):
+        distributor = "unallocated"
+
+    return distributor
+
 class BucketData:
     """A file bucket value class.
        name      - Name of the bucket (From config)
@@ -95,7 +111,7 @@ class BucketManager:
         self.bucketList = []
         self.unallocatedList = []
         self.unallocated_available = False
-        self.distributor_prefix = "pseudo_"
+        self.distributor_prefix = PSEUDO_DISTRI_PREFIX
         self.db = bridgedb.Storage.Database(self.cfg.DB_FILE+".sqlite",
                                             self.cfg.DB_FILE)
 
diff --git a/lib/bridgedb/I18n.py b/lib/bridgedb/I18n.py
index 550b0b4..3383ec9 100644
--- a/lib/bridgedb/I18n.py
+++ b/lib/bridgedb/I18n.py
@@ -1,12 +1,14 @@
 # BridgeDB i18n strings & helper routines. The string should go into pootle
 
+import os
 import gettext
 
-def getLang(lang):
+def getLang(lang, localedir=os.path.expanduser("~") + "/share/locale"):
     """Return the Translation instance for a given language. If no Translation
        instance is found, return the one for 'en'
     """
-    return gettext.translation("bridgedb", languages=[lang], fallback="en")
+    return gettext.translation("bridgedb", localedir=localedir, 
+                               languages=[lang], fallback="en")
 
 def _(text):
     """This is necessary because strings are translated when they're imported.
diff --git a/setup.cfg b/setup.cfg
index e91c159..9fa8c68 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,2 +1,3 @@
 [install]
-install-data=/usr
+prefix=$HOME
+install-data=$HOME





More information about the tor-commits mailing list