added param to cookiejar_from_dict instead of creating new method.
authordaftshady <daftonshady@gmail.com>
Sat, 28 Sep 2013 16:08:58 +0000 (01:08 +0900)
committerdaftshady <daftonshady@gmail.com>
Sat, 28 Sep 2013 16:08:58 +0000 (01:08 +0900)
requests/cookies.py
requests/sessions.py

index 95157e7d0aed695831ce03ee71eba6a923ed152a..ea56c065a51477a09c2b8f629331ed86987dc334 100644 (file)
@@ -392,31 +392,21 @@ def morsel_to_cookie(morsel):
     return c
 
 
-def cookiejar_from_dict(cookie_dict, cookiejar=None):
+def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True):
     """Returns a CookieJar from a key/value dictionary.
 
     :param cookie_dict: Dict of key/values to insert into CookieJar.
+    :param cookiejar: (optional) A cookiejar to add the cookies to.
+    :param overwrite: (optional) If False, will not replace cookies
+        already in the jar with new ones.
     """
     if cookiejar is None:
         cookiejar = RequestsCookieJar()
 
     if cookie_dict is not None:
+        names_from_jar = [cookie.name for cookie in cookiejar]
         for name in cookie_dict:
-            cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
-    return cookiejar
-
-
-def merge_session_cookies(cookiejar, cookie_dict):
-    """Merges cookie_dict with session CookieJar.
+            if overwrite or (name not in names_from_jar):
+                cookiejar.set_cookie(create_cookie(name, cookie_dict[name]))
 
-    :param cookiejar: Should be session cookie.
-    :param cookie_dict: Dict of key/values to be merged.
-    """
-    if cookiejar is None:
-        cookiejar = RequestsCookieJar()
-
-    if cookie_dict is not None:
-        for k in cookie_dict:
-            # Session should not be modified by request cookie.
-            if k not in [cookie.name for cookie in cookiejar]:
-                cookiejar.set_cookie(create_cookie(k, cookie_dict[k]))
+    return cookiejar
index b917acc82b27afecabc4b3bf7afcfd497c2ea720..eda9f92d41220409c1c00f32be1f2889476c0644 100644 (file)
@@ -13,7 +13,7 @@ from collections import Mapping
 from datetime import datetime
 
 from .compat import cookielib, OrderedDict, urljoin, urlparse
-from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar, merge_session_cookies
+from .cookies import cookiejar_from_dict, extract_cookies_to_jar, RequestsCookieJar
 from .models import Request, PreparedRequest
 from .hooks import default_hooks, dispatch_hook
 from .utils import to_key_val_list, default_headers
@@ -323,7 +323,7 @@ class Session(SessionRedirectMixin):
         prep = self.prepare_request(req)
 
         # Add param cookies to session cookies
-        merge_session_cookies(self.cookies, cookies)
+        self.cookies = cookiejar_from_dict(cookies, cookiejar=self.cookies, overwrite=False)
 
         proxies = proxies or {}