Пример #1
0
 def _pre_setup(self):
     super(ViewTestCase, self)._pre_setup()
     self.store = kittystore.get_store(SettingsModule(),
                                  debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": self.store,
                             "HTTP_USER_AGENT": "testbot",
                             }
Пример #2
0
 def setUp(self):
     self.user = User.objects.create_user('testuser', '*****@*****.**',
                                          'testPass')
     self.client.login(username='******', password='******')
     store = kittystore.get_store(SettingsModule(), debug=False)
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     # Create 3 threads
     messages = []
     for msgnum in range(3):
         msg = Message()
         msg["From"] = "*****@*****.**"
         msg["Message-ID"] = "<id%d>" % (msgnum + 1)
         msg["Subject"] = "Dummy message"
         msg.set_payload("Dummy message")
         store.add_to_list(ml, msg)
         messages.append(msg)
     # 1st is unread, 2nd is read, 3rd is updated
     LastView.objects.create(list_address="*****@*****.**",
                             user=self.user,
                             threadid=get_message_id_hash("<id2>"))
     LastView.objects.create(list_address="*****@*****.**",
                             user=self.user,
                             threadid=get_message_id_hash("<id3>"))
     msg4 = Message()
     msg4["From"] = "*****@*****.**"
     msg4["Message-ID"] = "<id4>"
     msg4["Subject"] = "Dummy message"
     msg4["In-Reply-To"] = "<id3>"
     msg4.set_payload("Dummy message")
     store.add_to_list(ml, msg4)
     # Factory
     defaults = {"kittystore.store": store, "HTTP_USER_AGENT": "testbot"}
     self.factory = RequestFactory(**defaults)
Пример #3
0
 def process_request(self, request):
     try:
         request.environ['kittystore.store'] = self._local.store
     except AttributeError:
         request.environ['kittystore.store']  = \
                 self._local.__dict__.setdefault('store',
                     kittystore.get_store(settings))
Пример #4
0
 def setUp(self):
     self.user = User.objects.create_user('testuser', '*****@*****.**', 'testPass')
     self.client.login(username='******', password='******')
     store = kittystore.get_store(SettingsModule(), debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": store,
                             "HTTP_USER_AGENT": "testbot",
                             }
     # Create test data
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     # Create 3 threads
     messages = []
     for msgnum in range(3):
         msg = Message()
         msg["From"] = "*****@*****.**"
         msg["Message-ID"] = "<id%d>" % (msgnum+1)
         msg["Subject"] = "Dummy message"
         msg.set_payload("Dummy message")
         store.add_to_list(ml, msg)
         messages.append(msg)
     # 1st is unread, 2nd is read, 3rd is updated
     LastView.objects.create(list_address="*****@*****.**", user=self.user,
                             threadid=get_message_id_hash("<id2>"))
     LastView.objects.create(list_address="*****@*****.**", user=self.user,
                             threadid=get_message_id_hash("<id3>"))
     msg4 = Message()
     msg4["From"] = "*****@*****.**"
     msg4["Message-ID"] = "<id4>"
     msg4["Subject"] = "Dummy message"
     msg4["In-Reply-To"] = "<id3>"
     msg4.set_payload("Dummy message")
     store.add_to_list(ml, msg4)
Пример #5
0
 def setUp(self):
     self.user = User.objects.create_user('testuser', '*****@*****.**',
                                          'testPass')
     self.user.is_staff = True
     self.user.save()
     self.client.login(username='******', password='******')
     self.store = kittystore.get_store(SettingsModule(),
                                       debug=False,
                                       auto_create=True)
     self.client.defaults = {
         "kittystore.store": self.store,
         "HTTP_USER_AGENT": "testbot",
     }
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     # Create 2 threads
     self.messages = []
     for msgnum in range(2):
         msg = Message()
         msg["From"] = "*****@*****.**"
         msg["Message-ID"] = "<id%d>" % (msgnum + 1)
         msg["Subject"] = "Dummy message"
         msg.set_payload("Dummy message")
         msg["Message-ID-Hash"] = self.store.add_to_list(ml, msg)
         self.messages.append(msg)
Пример #6
0
 def process_request(self, request):
     try:
         request.environ['kittystore.store']  = self._local.store
     except AttributeError:
         request.environ['kittystore.store']  = \
                 self._local.__dict__.setdefault('store',
                     kittystore.get_store(settings))
Пример #7
0
 def setUp(self):
     self.store = kittystore.get_store(
             SettingsModule(), debug=False, auto_create=True)
     self.client = Mock()
     self.client.get_list.side_effect = lambda name: FakeMMList(name)
     self.mm_user = Mock()
     self.mm_user.user_id = "123456"
Пример #8
0
 def setUp(self):
     store = kittystore.get_store(SettingsModule(),
                                  debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": store,
                             "HTTP_USER_AGENT": "testbot",
                             }
     self.user = User.objects.create_user('testuser', '*****@*****.**', 'testPass')
Пример #9
0
 def process_request(self, request):
     try:
         request.environ["kittystore.store"] = self._local.store
     except AttributeError:
         request.environ["kittystore.store"] = self._local.__dict__.setdefault(
             "store", kittystore.get_store(settings.KITTYSTORE_URL, settings.KITTYSTORE_DEBUG)
         )
Пример #10
0
def get_store_from_options(opts):
    """
    Returns a Store instance from an options object. Known options are;
    - "settings": the Django settings module
    - "pythonpath": an additional Python path to import the Django settings
    """
    settings = get_settings_from_options(opts)
    return get_store(settings, debug=opts.debug)
Пример #11
0
 def process_request(self, request):
     try:
         request.environ['kittystore.store']  = self._local.store
     except AttributeError:
         request.environ['kittystore.store']  = \
                 self._local.__dict__.setdefault('store',
                     kittystore.get_store(settings.KITTYSTORE_URL,
                                          settings.KITTYSTORE_SEARCH_INDEX,
                                          settings.KITTYSTORE_DEBUG))
Пример #12
0
 def setUp(self):
     store = kittystore.get_store(SettingsModule(),
                                  debug=False,
                                  auto_create=True)
     self.client.defaults = {
         "kittystore.store": store,
         "HTTP_USER_AGENT": "testbot",
     }
     self.user = User.objects.create_user('testuser', '*****@*****.**',
                                          'testPass')
Пример #13
0
 def __call__(self, environ, start_response):
     try:
         environ['kittystore.store'] = self._local.store
     except AttributeError:
         environ['kittystore.store']  = \
                 self._local.__dict__.setdefault('store',
                     kittystore.get_store(settings))
     try:
         return self._app(environ, start_response)
     finally:
         environ['kittystore.store'].rollback()
Пример #14
0
 def __call__(self, environ, start_response):
     try:
         environ['kittystore.store']  = self._local.store
     except AttributeError:
         environ['kittystore.store']  = \
                 self._local.__dict__.setdefault('store',
                     kittystore.get_store(settings))
     try:
         return self._app(environ, start_response)
     finally:
         environ['kittystore.store'].rollback()
Пример #15
0
 def __call__(self, environ, start_response):
     try:
         environ["kittystore.store"] = self._local.store
     except AttributeError:
         environ["kittystore.store"] = self._local.__dict__.setdefault(
             "store", kittystore.get_store(settings.KITTYSTORE_URL, settings.KITTYSTORE_DEBUG)
         )
     try:
         return self._app(environ, start_response)
     finally:
         environ["kittystore.store"].rollback()
Пример #16
0
def main():
    opts, args = parse_args()
    print 'Importing messages from %s to database...' % opts.list_name
    store = get_store(opts.store, debug=opts.debug)
    mlist = DummyMailingList(opts.list_name)
    importer = DbImporter(mlist, store, opts)
    for mbfile in args:
        print "Importing from mbox file %s" % mbfile
        importer.from_mbox(mbfile)
        if opts.verbose:
            print '  %s emails are stored into the database' \
                  % store.get_list_size(opts.list_name)
Пример #17
0
 def process_request(self, request):
     if request.path == reverse("error_schemaupgrade"):
         return  # Display the error page
     try:
         request.environ["kittystore.store"] = self._local.store
     except AttributeError:
         try:
             store = kittystore.get_store(settings)
         except kittystore.SchemaUpgradeNeeded:
             return redirect("error_schemaupgrade")
         else:
             request.environ["kittystore.store"] = self._local.__dict__.setdefault("store", store)
Пример #18
0
 def setUp(self):
     store = kittystore.get_store(SettingsModule(),
                                  debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": store,
                             "HTTP_USER_AGENT": "testbot",
                             }
     # Create the list by adding a dummy message
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg>"
     msg.set_payload("Dummy message")
     store.add_to_list(ml, msg)
Пример #19
0
    def archive_message(self, mlist, msg):
        """Send the message to the archiver.

        :param mlist: The IMailingList object.
        :param msg: The message object.
        :returns: The url string or None if the message's archive url cannot
            be calculated.
        """
        if self.store is None:
            self.store = get_store(self.settings)
        msg.message_id_hash = self.store.add_to_list(mlist, msg)
        self.store.commit()
        # TODO: Update karma
        return msg.message_id_hash
Пример #20
0
    def archive_message(self, mlist, msg):
        """Send the message to the archiver.

        :param mlist: The IMailingList object.
        :param msg: The message object.
        :returns: The url string or None if the message's archive url cannot
            be calculated.
        """
        if self.store is None:
            self.store = get_store(self.store_url)
        msg.message_id_hash = self.store.add_to_list(mlist, msg)
        self.store.commit()
        # TODO: Update karma
        return msg.message_id_hash
Пример #21
0
 def setUp(self):
     store = kittystore.get_store(SettingsModule(),
                                  debug=False,
                                  auto_create=True)
     self.client.defaults = {
         "kittystore.store": store,
         "HTTP_USER_AGENT": "testbot",
     }
     # Create the list by adding a dummy message
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg>"
     msg.set_payload("Dummy message")
     store.add_to_list(ml, msg)
Пример #22
0
 def process_request(self, request):
     if request.path == reverse("error_schemaupgrade"):
         return # Display the error page
     if "kittystore.store" in request.environ:
         return # Already set, for example by unit tests
     try:
         request.environ['kittystore.store'] = self._local.store
     except AttributeError:
         try:
             store = kittystore.get_store(settings)
         except kittystore.SchemaUpgradeNeeded:
             return redirect("error_schemaupgrade")
         else:
             request.environ['kittystore.store'] = \
                     self._local.__dict__.setdefault('store', store)
Пример #23
0
def get_store_from_options(opts):
    """
    Returns a Store instance from an options object. Known options are;
    - "settings": the Django settings module
    - "pythonpath": an additional Python path to import the Django settings
    """
    settings = None
    if opts.pythonpath is not None:
        sys.path.append(opts.pythonpath)
    try:
        settings = importlib.import_module(opts.settings)
    except ImportError as e:
        raise StoreFromOptionsError("could not import settings '%s' (Is it on "
                                    "sys.path?): %s" % (opts.settings, e))
    return get_store(settings, debug=opts.debug)
Пример #24
0
 def process_request(self, request):
     if request.path == reverse("error_schemaupgrade"):
         return  # Display the error page
     if "kittystore.store" in request.environ:
         return  # Already set, for example by unit tests
     try:
         request.environ['kittystore.store'] = self._local.store
     except AttributeError:
         try:
             store = kittystore.get_store(settings)
         except kittystore.SchemaUpgradeNeeded:
             return redirect("error_schemaupgrade")
         else:
             request.environ['kittystore.store'] = \
                     self._local.__dict__.setdefault('store', store)
Пример #25
0
 def setUp(self):
     self.tmpdir = mkdtemp(prefix="hyperkitty-testing-")
     self.user = User.objects.create_user('testuser', '*****@*****.**', 'testPass')
     settings = SettingsModule()
     settings.KITTYSTORE_SEARCH_INDEX = self.tmpdir
     self.store = kittystore.get_store(settings, debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": self.store,
                             "HTTP_USER_AGENT": "testbot",
                             }
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     ml.archive_policy = ArchivePolicy.private
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msgid>"
     msg["Subject"] = "Dummy message"
     msg.set_payload("Dummy message")
     msg["Message-ID-Hash"] = self.msgid = self.store.add_to_list(ml, msg)
Пример #26
0
def updatedb():
    parser = OptionParser(usage="%prog -s store_url")
    parser.add_option("-s", "--store", help="the URL to the store database")
    parser.add_option("-d", "--debug", action="store_true",
            help="show SQL queries")
    opts, args = parser.parse_args()
    if opts.store is None:
        parser.error("the store URL is missing (eg: "
                     "sqlite:///kittystore.sqlite).")
    if args:
        parser.error("no arguments allowed.")
    print 'Upgrading the database schema if necessary...'
    store = get_store(opts.store, debug=opts.debug)
    version = list(store.db.execute(
                "SELECT patch.version FROM patch "
                "ORDER BY version DESC LIMIT 1"
                ))[0][0]
    print "Done, the current schema version is %d." % version
Пример #27
0
 def setUp(self):
     self.user = User.objects.create_user('testuser', '*****@*****.**', 'testPass')
     self.user.is_staff = True
     self.client.login(username='******', password='******')
     self.store = kittystore.get_store(SettingsModule(), debug=False)
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     # Create 2 threads
     self.messages = []
     for msgnum in range(2):
         msg = Message()
         msg["From"] = "*****@*****.**"
         msg["Message-ID"] = "<id%d>" % (msgnum+1)
         msg["Subject"] = "Dummy message"
         msg.set_payload("Dummy message")
         msg["Message-ID-Hash"] = self.store.add_to_list(ml, msg)
         self.messages.append(msg)
     # Factory
     defaults = {"kittystore.store": self.store, "HTTP_USER_AGENT": "testbot"}
     self.factory = RequestFactory(**defaults)
Пример #28
0
 def setUp(self):
     self.user = User.objects.create_user(
             'testuser', '*****@*****.**', 'testPass')
     self.client.login(username='******', password='******')
     # use a temp variable below because self.client.session is actually a
     # property which returns a new instance en each call :-/
     session = self.client.session
     session["user_id"] = u"testuser"
     session.save()
     self.store = kittystore.get_store(SettingsModule(),
                                       debug=False, auto_create=True)
     self.client.defaults = {"kittystore.store": self.store,
                             "HTTP_USER_AGENT": "testbot",
                             }
     # Create a dummy message to test on
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg>"
     msg.set_payload("Dummy message")
     self.store.add_to_list(ml, msg)
Пример #29
0
 def setUp(self):
     self.tmpdir = mkdtemp(prefix="hyperkitty-testing-")
     self.user = User.objects.create_user('testuser', '*****@*****.**',
                                          'testPass')
     settings = SettingsModule()
     settings.KITTYSTORE_SEARCH_INDEX = self.tmpdir
     self.store = kittystore.get_store(settings,
                                       debug=False,
                                       auto_create=True)
     self.client.defaults = {
         "kittystore.store": self.store,
         "HTTP_USER_AGENT": "testbot",
     }
     ml = FakeList("*****@*****.**")
     ml.subject_prefix = u"[example] "
     ml.archive_policy = ArchivePolicy.private
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msgid>"
     msg["Subject"] = "Dummy message"
     msg.set_payload("Dummy message")
     msg["Message-ID-Hash"] = self.msgid = self.store.add_to_list(ml, msg)
Пример #30
0
 def setUp(self):
     self.user = User.objects.create_user('testuser', '*****@*****.**',
                                          'testPass')
     self.client.login(username='******', password='******')
     # use a temp variable below because self.client.session is actually a
     # property which returns a new instance en each call :-/
     session = self.client.session
     session["user_id"] = u"testuser"
     session.save()
     self.store = kittystore.get_store(SettingsModule(),
                                       debug=False,
                                       auto_create=True)
     self.client.defaults = {
         "kittystore.store": self.store,
         "HTTP_USER_AGENT": "testbot",
     }
     # Create a dummy message to test on
     ml = FakeList("*****@*****.**")
     msg = Message()
     msg["From"] = "*****@*****.**"
     msg["Message-ID"] = "<msg>"
     msg.set_payload("Dummy message")
     self.store.add_to_list(ml, msg)
Пример #31
0
 def setUp(self):
     store = kittystore.get_store(SettingsModule(),
                                  debug=False, auto_create=True)
     defaults = {"kittystore.store": store, "HTTP_USER_AGENT": "testbot"}
     self.factory = RequestFactory(**defaults)
Пример #32
0
 def setUp(self):
     self.store = get_store(SettingsModule(), auto_create=True)
     self.listname, self.m_hash = self.add_fetch_data()
Пример #33
0
 def setUp(self):
     self.store = get_store(SettingsModule(), auto_create=True)
Пример #34
0
    opts, args = parser.parse_args()
    if args:
        parser.error("no arguments allowed.")
    if opts.debug:
        debuglevel = logging.DEBUG
    else:
        debuglevel = logging.INFO
    logging.basicConfig(format='%(message)s', level=debuglevel)
    print 'Upgrading the database schema and populating ' \
          'the search index if necessary...'
    try:
        settings = get_settings_from_options(opts)
    except (StoreFromOptionsError, AttributeError), e:
        parser.error(e.args[0])
    try:
        store = get_store(settings, debug=opts.debug)
    except SchemaUpgradeNeeded:
        print "Upgrading the schema..."
        store, version = create_store(settings, debug=opts.debug)
        print "Done, the current schema version is %s." % version
        print "Synchonizing data from Mailman, this can take some time..."
        sync_mailman(store)
        store.commit()
        print "  ...done!"
    else:
        print "No schema upgrade needed."



#
# Manual Mailman sync