Show
Ignore:
Timestamp:
07/24/08 16:16:21 (20 months ago)
Author:
JensDiemer
Message:

blog update 2:

  • nicer "create blog entry" form (existing tags can be selected)
  • some code cleanup
  • try to verify tag slugs
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/pylucid/PyLucid/plugins_internal/blog/blog.py

    r1712 r1713  
    244244        """ 
    245245        slug = urlargs.strip("/") 
    246         # TODO: Verify tag 
    247         tag_obj = BlogTag.objects.get(slug = slug) 
     246        # TODO: Exist there a better way to verify the tag slug? 
     247        for char in (" ", "/", ";"): 
     248            if char in slug: 
     249                return self.error( 
     250                    _("Wrong URL."), "Not allowed character in tag name!" 
     251                ) 
     252 
     253        try: 
     254            tag_obj = BlogTag.objects.safe_get(slug) 
     255        except BlogTag.DoesNotExist, err: 
     256            return self.error( 
     257                _("Wrong URL."), "tag '%s' unknown: %s" % (slug, err) 
     258            ) 
    248259 
    249260        self.current_page.title += ( 
     
    278289            #self.page_msg(self.request.POST) 
    279290            if form.is_valid(): 
     291                new_tags = form.cleaned_data.pop("new_tags") # ListCharField 
    280292                if blog_obj == None: 
    281293                    # a new blog entry should be created 
    282294                    blog_obj = BlogEntry( 
    283                         headline = form.cleaned_data["headline"], 
    284                         content = form.cleaned_data["content"], 
    285                         markup = form.cleaned_data["markup"], 
     295                        headline  = form.cleaned_data["headline"], 
     296                        content   = form.cleaned_data["content"], 
     297                        markup    = form.cleaned_data["markup"], 
    286298                        is_public = form.cleaned_data["is_public"], 
    287                         createby = self.request.user, 
     299                        createby  = self.request.user, 
    288300                    ) 
    289301                    blog_obj.save() 
    290302                    self.page_msg.green("New blog entry created.") 
    291                     tags_string = form.cleaned_data["tags"] 
    292303                else: 
    293304                    # Update a existing blog entry 
    294                     tags_string = form.cleaned_data.pop("tags") 
    295305                    self.page_msg.green("Update existing blog entry.") 
    296306                    blog_obj.lastupdateby = self.request.user 
     
    298308                        setattr(blog_obj, k, v) 
    299309 
    300                 tag_objects, new_tags = BlogTag.objects.get_or_creates( 
    301                     tags_string 
    302                 ) 
    303                 if new_tags: 
    304                     self.page_msg(_("New tags created: %s") % new_tags) 
    305  
    306                 # Add many-to-many 
    307                 for tag in tag_objects: 
    308                     blog_obj.tags.add(tag) 
     310                if new_tags != []: 
     311                    # There are new tags to create incoming via ListCharField 
     312                    # Create the new tags and add them to the blog entry 
     313                    new_tags = BlogTag.objects.add_new_tags(new_tags, blog_obj) 
     314                    if new_tags: 
     315                        self.page_msg(_("New tags created: %s") % new_tags) 
    309316 
    310317                blog_obj.save() 
     
    314321            if blog_obj == None: 
    315322                context["legend"] = _("Create a new blog entry") 
    316  
    317323                form = BlogEntryForm( 
    318                     initial={ 
    319                         "markup": self.preferences["default_markup"], 
    320                     } 
     324                    initial={"markup": self.preferences["default_markup"],} 
    321325                ) 
    322326            else: 
    323327                context["legend"] = _("Edit a existing blog entry") 
    324                 form = BlogEntryForm( 
    325                     instance=blog_obj, 
    326                     initial={"tags":blog_obj.get_tag_string()} 
    327                 ) 
     328                form = BlogEntryForm(instance=blog_obj) 
    328329 
    329330        context["form"]= form 
     
    471472                "Comment contains mod_keyword: '%s'" % mod_keyword 
    472473            ) 
    473  
    474474 
    475475 
     
    499499            is_public = False 
    500500        else: 
    501             self.submit_msg("Blog comment published.") 
    502             mail_title = _("Blog comment published.") 
     501            msg = _("Blog comment published.") 
     502            self.submit_msg(msg) 
     503            mail_title = msg 
    503504            is_public = True 
    504505 
     
    618619            return 
    619620 
    620 #        CommentForm = AdminCommentForm 
    621 # 
    622 # 
    623 #        CommentForm = forms.form_for_instance( 
    624 #            instance=comment_entry#, form=BlogCommentForm 
    625 #        ) 
    626  
    627621        blog_entry = comment_entry.blog_entry # ForeignKey("BlogEntry") 
    628622 
    629623        if self.request.method == 'POST': 
    630 #            form = CommentForm(self.request.POST) 
    631624            form = AdminCommentForm(self.request.POST, instance=comment_entry) 
    632625            #self.page_msg(self.request.POST) 
     
    641634                ) 
    642635        else: 
    643 #            form = CommentForm() 
    644636            form = AdminCommentForm(instance=comment_entry) 
    645637 
     
    717709        Build the tag cloud context. 
    718710        """ 
    719         tags = BlogTag.objects.all() 
    720  
    721         frequency = set() 
    722         # get the counter information 
    723         for tag in tags: 
    724             count = tag.blogentry_set.count() 
    725             tag.count = count 
    726             #self.page_msg(tag, count) 
    727             frequency.add(count) 
    728  
    729         min_frequency = float(min(frequency)) 
    730         max_frequency = float(max(frequency)) 
     711        tags, min_frequency, max_frequency = BlogTag.objects.get_tag_info() 
     712 
    731713        diff_frequency = float(max_frequency - min_frequency) 
    732714 
     
    757739        feed_name = raw_feed_name.strip("/") 
    758740 
    759         # Verify the feed name 
     741        # Verify raw_feed_name 
    760742        try: 
    761743            self._feed_info_by_filename(feed_name) 
     
    799781            tag_slug = feed_name[len(TAG_FEED_PREFIX):] 
    800782            try: 
    801                 tag_obj = BlogTag.objects.get(slug = tag_slug) 
     783                tag_obj = BlogTag.objects.safe_get(tag_slug) 
    802784            except BlogTag.DoesNotExist, err: 
    803785                raise WrongFeedFilename(