def detail(request, id, slug): event = get_object_or_404(Event, pk=id) parent = helpers.get_obj(ct=event.content_type, id=event.object_id) if not helpers.is_visible(request.user, parent): return render_to_response('denied.html', context_instance=RequestContext(request)) # create whiteboard if needed member = False if event.whiteboard == None: # this will fail if the event's parent is not a group... # so, only events attached to a group can have a whiteboard. try: method = getattr(event.content_object, "associate") wb = Article(title="Event%d" % (event.id), content="") event.content_object.associate(wb, commit=False) wb.save() event.whiteboard = wb event.save() # FIXME: we assume if you can see the event, you can edit it member = True except: pass return render_to_response("events/event_detail.html", { 'object': event, 'member': member, }, context_instance=RequestContext(request), )
def old_create_wiki(wiki): tags = wiki['tags'] admin = User.objects.first() root = Article.objects.first().urlpath_set.first() slug_list = deque(wiki["root"].split("/")[1:]) parent = traverse_ancestors(root, slug_list) # create Article article = Article(owner=admin, ) article.save() # create URLPath urlpath = URLPath(parent=parent, article=article, slug=wiki['slug'], site_id=1) urlpath.save() # add URLPath to Article article.urlpath_set.add(urlpath) article_revision = ArticleRevision( article=article, title=wiki['name'], #long_name=wiki['long_name'], content=wiki['content'], revision_number=1) # save wiki article_revision.save()
def handle(self, *args, **options): fake = Factory.create() for i in range(10): a = Article( name=fake.company(), body=fake.text(max_nb_chars=500), ) a.save()
def group_detail(request, group_slug, model=None, member_model=None, form_class=None, template_name=None, edit_template_name=None, options=None): """ View details of a group """ # how would we ever get here...??? (is this check redundant?) if model is None: # find group type and redirect group = get_object_or_404(BaseGroup, slug=group_slug) return HttpResponseRedirect(reverse("%s_detail" % group.model.lower(), kwargs={'group_slug': group_slug})) # keep this here to be RESTful (allow POST to object for editing) if request.method == 'POST': return edit_group(request, group_slug, model=model, member_model=member_model, form_class=form_class, template_name=edit_template_name, detail_template_name=template_name, options=options) # get group group = get_object_or_404(model, slug=group_slug) # membership status if group.user_is_member(request.user): member = group.members.get(user=request.user) elif group.user_is_pending_member(request.user): member = group.pending_members.get(user=request.user) else: member = None # retrieve whiteboard (create if needed) if group.whiteboard == None: wb = Article(title="Whiteboard", content="") group.associate(wb, commit=False) wb.save() group.whiteboard = wb group.save() # see if any admin tasks are outstanding # (should this only trigger for oustanding requets, instead of requests & invitations?) requests_outstanding = False if group.user_is_admin(request.user): if group.num_pending_members() > 0: requests_outstanding = True # render return render_to_response( template_name, { 'group': group, 'children': group.get_visible_children(request.user), 'is_admin': group.user_is_admin(request.user), 'requests_outstanding': requests_outstanding, 'joinform': GroupAddEmailForm() }, context_instance=RequestContext(request) )
def create_bot_wiki_article(self): article_kwargs = {'owner': self.user, 'group': None, 'group_read': True, 'group_write': False, 'other_read': True, 'other_write': False} article = Article(**article_kwargs) article.add_revision(ArticleRevision(title=self.name), save=True) article.save() self.wiki_article = article
class NewArticleView(LoginRequiredMixin, FormView): form_class = NewArticleForm template_name = 'wiki/new_article.html' def form_valid(self, form): with transaction.atomic(): self.article = Article(body=form.cleaned_data['body']) self.article.locale = self.request.LANGUAGE_CODE self.article.save() self.main_alias = Alias( name=form.cleaned_data['name'], article=self.article ) self.main_alias.save() return super().form_valid(form) def get_success_url(self): return reverse_lazy('article-detail', kwargs={'slug': self.main_alias.slug})
def topic(request, topic_id, group_slug=None, edit=False, template_name="topics/topic.html", bridge=None): topic = get_object_or_404(GroupTopic, id=topic_id) parent_group = topic.parent_group # XXX PERMISSIONS CHECK if not parent_group.is_visible(request.user) and not topic.creator == request.user: return HttpResponseForbidden() # XXX PERMISSIONS CHECK # only the owner of a topic or a group admin can edit a topic (??) if (request.method == "POST" and edit == True and \ topic.is_editable(request.user)): updated_body = request.POST.get('body', None) if updated_body is not None: topic.body = updated_body topic.save() return HttpResponseRedirect(topic.get_absolute_url()) # retrieve whiteboard (create if needed) if topic.whiteboard == None: # group_slug should always be valid - group never null! wb = Article(title="Post%d" % (topic.id), content="") if topic.group: topic.group.associate(wb, commit=False) wb.save() topic.whiteboard = wb topic.save() member = False if topic.group and topic.group.user_is_member(request.user): member = True grpadmin = topic.group.user_is_admin(request.user) return render_to_response(template_name, { "topic": topic, "group": topic.group, "member": member, "grpadmin": grpadmin, }, context_instance=RequestContext(request))
def edit_article(request, slug): article = None params = {} try: # Enables case-insentivity article = Article.objects.get(slug__iexact=slug) if article.slug != slug: return HttpResponseRedirect(reverse('edit_article', args=[article.slug])) except Article.DoesNotExist: title = slug.replace('_', ' ') article = Article(title=title, creator=request.user) if request.method == 'GET': # Check mutual exclusion lock = cache.get(article.title, None) if lock is None: lock = EditLock(article.title, request) elif not lock.is_mine(request): print "Possible editing conflict. Another user started editing", lock.created_at params['locked'] = xslt_param_builder("True") format = "%d %b %Y %H:%M:%S" params['lock_created'] = xslt_param_builder( lock.created_at.strftime(format) ) elif request.method == 'POST': article.title = request.POST['title'] article.content = request.POST['content'] article.save() cache.delete(article.title) view_url = reverse('view_article', args=[article.slug]) return HttpResponseRedirect(view_url) view_url = reverse('view_article', args=[slug]) params['viewurl'] = xslt_param_builder(view_url) return render_to_response('edit_article.xsl', article, params)