예제 #1
0
파일: utils.py 프로젝트: ozamosi/ircious
def addPost(nick, channel, url, descr):
    """
    Add post to database

    >>> addPost('test-nick', 'test-channel', 'http://example.com', 'Super-cool')
    Traceback (most recent call last):
    ...
    ValueError: Invalid channel
    >>> u = User()
    >>> u.save()
    >>> inw = IrcNetwork()
    >>> inw.save()
    >>> ic = IrcChannel(name="ircious", network=inw, requested_by=u)
    >>> ic.save()
    >>> addPost('test-nick', 'ircious', 'http://example.com', 'Super-cool')
    >>> lo = LinkObj.objects.filter(last_post__comment='Super-cool')[0]
    >>> lo.screenshot
    >>> addPost('test-nick2', 'ircious', 'http://youtube.com/watch?v=_y36fG2Oba0', 'Great!')
    >>> lo = LinkObj.objects.filter(last_post__comment='Great!')[0]
    >>> lo.screenshot
    u'http://img.youtube.com/vi/_y36fG2Oba0/default.jpg'
    >>> addPost('test-nick3', 'ircious', 'http://example.com', 'Amazing')
    >>> lo = LinkObj.objects.all()[0]
    >>> lo.last_post.comment
    u'Amazing'
    """
    correctuser = getUserWithNick(nick)
    channelobjs = IrcChannel.objects.filter(name=channel)
    if not channelobjs:
        raise ValueError, "Invalid channel"
    channelobj = channelobjs[0]
    existinglinkobj = LinkObj.objects.filter(url=url)
    if not existinglinkobj:
        try:
            title = getTitleFromUrl(url)
        except IOError:
            return
        if 'youtube' in url:
            screenshot_url = getYoutubeScreenshotUrl(url)
        elif 'flickr' in url:
            screenshot_url = getFlickrScreenshotUrl(url)
        else:
            screenshot_url = None
        slug = slugify(title)
        if LinkObj.objects.filter(slug=slug):
            num = 1
            while LinkObj.objects.filter(slug=slug+str(num)):
                num += 1
            slug = slug + str(num)
        correctlinkobj = LinkObj(url=url, title=title, slug=slug, screenshot=screenshot_url)
        correctlinkobj.save()
    else:
        correctlinkobj = existinglinkobj[0]
    
    lp = LinkPost(link=correctlinkobj, user=correctuser, comment=descr, channel=channelobj)
    lp.save()
    correctlinkobj.last_post = lp
    correctlinkobj.save()
예제 #2
0
파일: tests.py 프로젝트: ozamosi/ircious
 def setUp(self):
     TestCase.setUp(self)
     u = User()
     u.save()
     n = Nick(nickname="ozamosi", user=u)
     n.save()
     inw = IrcNetwork()
     inw.save()
     ic = IrcChannel(network=inw, name="#ircious", requested_by=u)
     ic.save()
     lo = LinkObj(slug='test-one-that-actually-does-exist', url='http://example.com', title='Test')
     lo.save()
     lp = LinkPost(comment="Test", user=u, link=lo, channel=ic)
     lp.save()
     lo.last_post = lp
     lo.save()