示例#1
0
 def test_build_reference_title_from_url(self):
   ref_title = build_reference_title_from_url("http://mif/maf/mouf")
   self.assertEqual("mif/maf/mouf",ref_title)
   ref_title = build_reference_title_from_url("http://mif/maf/mouf.php")
   self.assertEqual("mif/maf/mouf.php",ref_title)
   ref_title = build_reference_title_from_url("http://glop.mif/maf/mouf.php")
   self.assertEqual("glop.mif/maf/mouf.php",ref_title)
   ref_title = build_reference_title_from_url("http://glop.mif/")
   self.assertEqual("glop.mif",ref_title)
   ref_title = build_reference_title_from_url("internal://glop.mif/maf/mouf.php")
   self.assertEqual("glop.mif/maf/mouf.php",ref_title)
   ref_title = build_reference_title_from_url("/glop.mif/maf/mouf.php")
   self.assertEqual("/glop.mif/maf/mouf.php",ref_title)
   ref_title = build_reference_title_from_url("http://")
   self.assertEqual("",ref_title)
示例#2
0
 def test_build_reference_title_from_url(self):
     ref_title = build_reference_title_from_url("http://mif/maf/mouf")
     self.assertEqual("mif/maf/mouf", ref_title)
     ref_title = build_reference_title_from_url("http://mif/maf/mouf.php")
     self.assertEqual("mif/maf/mouf.php", ref_title)
     ref_title = build_reference_title_from_url(
         "http://glop.mif/maf/mouf.php")
     self.assertEqual("glop.mif/maf/mouf.php", ref_title)
     ref_title = build_reference_title_from_url("http://glop.mif/")
     self.assertEqual("glop.mif", ref_title)
     ref_title = build_reference_title_from_url(
         "internal://glop.mif/maf/mouf.php")
     self.assertEqual("glop.mif/maf/mouf.php", ref_title)
     ref_title = build_reference_title_from_url("/glop.mif/maf/mouf.php")
     self.assertEqual("/glop.mif/maf/mouf.php", ref_title)
     ref_title = build_reference_title_from_url("http://")
     self.assertEqual("", ref_title)
示例#3
0
 def save(self):
   """Warning: the source will be saved as well as the related objects
   (no commit options).
   Returns the source.
   """
   form_url,_ = sanitize_url(self.cleaned_data["url"])
   form_title = self.cleaned_data["title"]
   form_feed_url,_ = sanitize_url(self.cleaned_data["feed_url"])
   if self.user.userprofile.web_feeds.filter(source__url=form_url).exists():
     # nothing to do
     return
   # try a bigger look-up anyway
   same_sources = WebFeed.objects.filter(source__url=form_url).all()
   # url are unique for sources
   if same_sources:
     new_feed = same_sources[0]
   else:
     if form_title:
       source_title = form_title
     else:
       source_title = build_reference_title_from_url(form_url)
     try:
       source_ref = Reference.objects.get(url=form_url)
     except ObjectDoesNotExist:
       source_ref = Reference(url=form_url,title=source_title,
                              pub_date=datetime.now(timezone.utc))
       source_ref.save()
     new_feed = WebFeed(source=source_ref)
     # assume that either form_feed_url or form_url have been
     # validated as a valid feed url
     new_feed.xmlURL = form_feed_url or form_url
     new_feed.last_update_check = datetime.utcfromtimestamp(0)\
                                          .replace(tzinfo=timezone.utc)
     new_feed.save()
   with transaction.atomic():
     source_ref.add_pin()
     source_ref.save()
     self.user.userprofile.sources.add(source_ref)
     self.user.userprofile.public_sources.add(source_ref)
     self.user.userprofile.web_feeds.add(new_feed)
     self.user.userprofile.save()
   return new_feed
示例#4
0
 def save(self):
     """Warning: the source will be saved as well as the related objects
 (no commit options).
 Returns the source.
 """
     form_url, _ = sanitize_url(self.cleaned_data["url"])
     form_title = self.cleaned_data["title"]
     form_feed_url, _ = sanitize_url(self.cleaned_data["feed_url"])
     if self.user.userprofile.web_feeds.filter(
             source__url=form_url).exists():
         # nothing to do
         return
     # try a bigger look-up anyway
     same_sources = WebFeed.objects.filter(source__url=form_url).all()
     # url are unique for sources
     if same_sources:
         new_feed = same_sources[0]
     else:
         if form_title:
             source_title = form_title
         else:
             source_title = build_reference_title_from_url(form_url)
         try:
             source_ref = Reference.objects.get(url=form_url)
         except ObjectDoesNotExist:
             source_ref = Reference(url=form_url,
                                    title=source_title,
                                    pub_date=datetime.now(timezone.utc))
             source_ref.save()
         new_feed = WebFeed(source=source_ref)
         # assume that either form_feed_url or form_url have been
         # validated as a valid feed url
         new_feed.xmlURL = form_feed_url or form_url
         new_feed.last_update_check = datetime.utcfromtimestamp(0)\
                                              .replace(tzinfo=timezone.utc)
         new_feed.save()
     self.user.userprofile.sources.add(source_ref)
     self.user.userprofile.public_sources.add(source_ref)
     self.user.userprofile.web_feeds.add(new_feed)
     return new_feed
示例#5
0
 def save(self):
   """Warning: the bookmark will be saved as well as the related objects
   (no commit options).
   Returns the bookmark.
   """
   url,_ = sanitize_url(self.cleaned_data["url"])
   title = self.cleaned_data["title"] \
           or build_reference_title_from_url(url)
   comment = self.cleaned_data["comment"]
   pub_date = self.cleaned_data["pub_date"] \
              or datetime.now(timezone.utc)
   src_url,_ = sanitize_url(self.cleaned_data["source_url"] \
                            or build_source_url_from_reference_url(url))
   src_title = self.cleaned_data["source_title"] \
              or build_reference_title_from_url(src_url)
   # Find or create a matching reference
   try:
     bookmarked_ref = Reference.objects.get(url=url)
     # Arbitrarily chose one of the possible sources
     src_query = bookmarked_ref.sources
     if src_query.count() > 1:
       ref_src = src_query.all()[0]
     else:
       ref_src = src_query.get()
   except ObjectDoesNotExist:
     try:
       ref_src = Reference.objects.get(url=src_url)
     except ObjectDoesNotExist:
       ref_src = Reference(url=src_url,title=src_title,pub_date=pub_date)
       ref_src.save()
     if src_url == url:
       bookmarked_ref = ref_src
     else:
       bookmarked_ref = Reference(url=url,
                                  title=title,
                                  pub_date=pub_date)
       bookmarked_ref.save()
       bookmarked_ref.sources.add(ref_src)
   with transaction.commit_on_success():
     try:
       bmk = UserBookmark.objects.get(owner=self.user,reference=bookmarked_ref)
     except ObjectDoesNotExist:
       bmk = UserBookmark(owner=self.user,reference=bookmarked_ref,
                          saved_date=datetime.now(timezone.utc))
       bookmarked_ref.save_count += 1
       bmk.save()
       bookmarked_ref.save()
     # allow the user-specific comment to be changed and also prefix
     # it with the user specified title if it differs from the
     # existing reference title.
     if comment:
       new_comment = comment
     else:
       new_comment = bmk.comment
     if self.cleaned_data["title"] and title!=bookmarked_ref.title \
        and not new_comment.startswith(title):
       new_comment = "%s: %s" % (title,new_comment)
     if new_comment!=bmk.comment:
       bmk.comment = new_comment
       bmk.save()
   with transaction.commit_on_success():
     if ref_src not in self.user.userprofile.sources.all():
       self.user.userprofile.sources.add(ref_src)
   with transaction.commit_on_success():
     for rust in ReferenceUserStatus\
       .objects.filter(owner=self.user,
                       reference=bookmarked_ref).all():
       rust.has_been_saved = True
       rust.save()
   return bmk
示例#6
0
 def save(self):
     """Warning: the bookmark will be saved as well as the related objects
 (no commit options).
 Returns the bookmark.
 """
     url, _ = sanitize_url(self.cleaned_data["url"])
     title = self.cleaned_data["title"] \
             or build_reference_title_from_url(url)
     comment = self.cleaned_data["comment"]
     pub_date = self.cleaned_data["pub_date"] \
                or datetime.now(timezone.utc)
     src_url,_ = sanitize_url(self.cleaned_data["source_url"] \
                              or build_source_url_from_reference_url(url))
     src_title = self.cleaned_data["source_title"] \
                or build_reference_title_from_url(src_url)
     # Find or create a matching reference
     try:
         bookmarked_ref = Reference.objects.get(url=url)
         # Arbitrarily chose one of the possible sources
         src_query = bookmarked_ref.sources
         if src_query.count() > 1:
             ref_src = src_query.all()[0]
         else:
             ref_src = src_query.get()
     except ObjectDoesNotExist:
         try:
             ref_src = Reference.objects.get(url=src_url)
         except ObjectDoesNotExist:
             ref_src = Reference(url=src_url,
                                 title=src_title,
                                 pub_date=pub_date)
             ref_src.save()
         if src_url == url:
             bookmarked_ref = ref_src
         else:
             bookmarked_ref = Reference(url=url,
                                        title=title,
                                        pub_date=pub_date)
             bookmarked_ref.save()
             bookmarked_ref.sources.add(ref_src)
     with transaction.commit_on_success():
         try:
             bmk = UserBookmark.objects.get(owner=self.user,
                                            reference=bookmarked_ref)
         except ObjectDoesNotExist:
             bmk = UserBookmark(owner=self.user,
                                reference=bookmarked_ref,
                                saved_date=datetime.now(timezone.utc))
             bookmarked_ref.save_count += 1
             bmk.save()
             bookmarked_ref.save()
         # allow the user-specific comment to be changed and also prefix
         # it with the user specified title if it differs from the
         # existing reference title.
         if comment:
             new_comment = comment
         else:
             new_comment = bmk.comment
         if self.cleaned_data["title"] and title!=bookmarked_ref.title \
            and not new_comment.startswith(title):
             new_comment = "%s: %s" % (title, new_comment)
         if new_comment != bmk.comment:
             bmk.comment = new_comment
             bmk.save()
     with transaction.commit_on_success():
         if ref_src not in self.user.userprofile.sources.all():
             self.user.userprofile.sources.add(ref_src)
     with transaction.commit_on_success():
         for rust in ReferenceUserStatus\
           .objects.filter(owner=self.user,
                           reference=bookmarked_ref).all():
             rust.has_been_saved = True
             rust.save()
     return bmk