def test_user_not_in_ks(self): # The user is not in KittyStore yet, this should not prevent the # listing of the subscriptions in Mailman self.mm_user.subscription_list_ids = ["*****@*****.**",] try: subs = get_subscriptions(self.store, self.client, self.mm_user) except AttributeError, e: #print_exc() self.fail("Subscriptions should be available even if " "the user has never voted yet\n%s" % format_exc())
def public_profile(request, user_id): class FakeMailmanUser(object): display_name = None created_on = None addresses = [] subscription_list_ids = [] store = get_store(request) try: client = mailmanclient.Client('%s/3.0' % settings.MAILMAN_REST_SERVER, settings.MAILMAN_API_USER, settings.MAILMAN_API_PASS) mm_user = client.get_user(user_id) except HTTPError: raise Http404("No user with this ID: %s" % user_id) except mailmanclient.MailmanConnectionError: db_user = store.get_user(user_id) if db_user is None: return HttpResponse("Can't connect to Mailman", content_type="text/plain", status=500) mm_user = FakeMailmanUser() mm_user.display_name = list(db_user.senders)[0].name mm_user.addresses = db_user.addresses fullname = mm_user.display_name if not fullname: fullname = store.get_sender_name(user_id) # Subscriptions subscriptions = get_subscriptions(store, client, mm_user) likes = sum([s["likes"] for s in subscriptions]) dislikes = sum([s["dislikes"] for s in subscriptions]) likestatus = "neutral" if likes - dislikes >= 10: likestatus = "likealot" elif likes - dislikes > 0: likestatus = "like" try: email = unicode(mm_user.addresses[0]) except KeyError: email = None if mm_user.created_on is not None: creation = dateutil.parser.parse(mm_user.created_on) else: creation = None context = { "fullname": fullname, "mm_user": mm_user, "email": email, "creation": creation, "subscriptions": subscriptions, "posts_count": sum([s["posts_count"] for s in subscriptions]), "likes": likes, "dislikes": dislikes, "likestatus": likestatus, } return render(request, "user_public_profile.html", context)
def subscriptions(request): store = get_store(request) # get the Mailman user try: mm_client = get_mailman_client() mm_user = mm_client.get_user(request.user.email) except (HTTPError, mailmanclient.MailmanConnectionError): mm_client = mm_user = None # Subscriptions subscriptions = get_subscriptions(store, mm_client, mm_user) return render(request, 'fragments/user_subscriptions.html', { "subscriptions": subscriptions, })
def subscriptions(request): store = get_store(request) # get the Mailman user try: mm_client = mailmanclient.Client( '%s/3.0' % settings.MAILMAN_REST_SERVER, settings.MAILMAN_API_USER, settings.MAILMAN_API_PASS) mm_user = mm_client.get_user(request.user.email) except (HTTPError, mailmanclient.MailmanConnectionError): mm_client = mm_user = None # Subscriptions subscriptions = get_subscriptions(store, mm_client, mm_user) return render(request, 'fragments/user_subscriptions.html', { "subscriptions": subscriptions, })
def subscriptions(request): store = get_store(request) # get the Mailman user try: mm_client = mailmanclient.Client('%s/3.0' % settings.MAILMAN_REST_SERVER, settings.MAILMAN_API_USER, settings.MAILMAN_API_PASS) mm_user = mm_client.get_user(request.user.email) except (HTTPError, mailmanclient.MailmanConnectionError): mm_client = mm_user = None # Subscriptions subscriptions = get_subscriptions(store, mm_client, mm_user) return render(request, 'fragments/user_subscriptions.html', { "subscriptions": subscriptions, })