예제 #1
0
파일: views.py 프로젝트: divad12/myewb2
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),
                             )
예제 #2
0
파일: views.py 프로젝트: strafrecht/app
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()
예제 #3
0
 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()
예제 #4
0
파일: __init__.py 프로젝트: mmusbah/myewb2
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)
    )
예제 #5
0
    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
예제 #6
0
파일: views.py 프로젝트: art-solopov/mdwiki
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})
예제 #7
0
파일: views.py 프로젝트: divad12/myewb2
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))
예제 #8
0
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)