def index(request):
    context = dict()
    if request.method == 'POST':

        if 'delete_tweet' in request.POST:
            _id = request.GET.get('id', None)
            Tweet.objects.filter(id=_id).delete()
            messages.success(request, "Tweet successfully deleted")
            return redirect('index')

        form = TweetForm(request.POST)

        if form.is_valid():
            new_tweet = Tweet(username=request.user,
                              tweet=request.POST['tweet'])
            try:
                new_tweet.full_clean()
                new_tweet.save()
            except ValidationError as e:
                context['error'] = e.message_dict['tweet'][0]
            else:
                messages.success(request, "Tweet Created!")
                return redirect('index')
    else:
        form = TweetForm()

    context['form'] = form
    context['tweets'] = Tweet.objects.filter(
        username=request.user).order_by('-post_date')

    return render(request, 'authenticated_user_feed.html', context)
Exemplo n.º 2
0
def create_tweet(author, content, original_tweet):
    new_tweet = Tweet(
        author=author,
        content=content,
        original_tweet=original_tweet,
    )
    new_tweet.save()
    return new_tweet
Exemplo n.º 3
0
def process(request):
    tweet = request.POST["tweet"]
    t = Tweet(
            text=tweet,
            p_date=timezone.now(),
            user=request.user
    )
    t.save()
    return HttpResponseRedirect(reverse('index'))
Exemplo n.º 4
0
def tweet(request):
    f = TweetForm(request.POST)
    if f.is_valid():
        t = Tweet()
        t.user = request.user
        t.text = f.cleaned_data["text"]
        t.published_on = datetime.datetime.today()
        t.save()
    return HttpResponseRedirect(reverse('twitter:home'))
Exemplo n.º 5
0
 def test_string_representation(self):
     twitter_account = TwitterAccount(name='Peter')
     tweet = Tweet(
         content='Erster Tweet, #cool!',
         created_at=datetime(2012, 12, 21, 19, 9, 0),
         account=twitter_account,
     )
     self.assertEqual(
         str(tweet), 'Peter at 2012-12-21 19:09:00 - Erster Tweet, #cool!')
Exemplo n.º 6
0
def tweet(request):
    if request.user.is_authenticated():
        t = Tweet()
        t.user = request.user
        t.text = request.POST["text"]
        t.published_on = datetime.datetime.today()
        t.save()
        return HttpResponseRedirect(reverse('twitter:home'))
    else:
        return HttpResponseRedirect(reverse('twitter:login'))
Exemplo n.º 7
0
def home(request):
    if request.method == "POST":
        canTweet = True
        error_tweet_30 = ""
        if request.session.has_key("time_of_last_tweet"):
            old_time = datetime.datetime.strptime(
                request.session["time_of_last_tweet"], "%d %m %Y %H:%M:%S")

            delta = datetime.datetime.today() - old_time
            print datetime.datetime.today()
            print old_time
            print delta
            print delta.total_seconds()
            print delta.seconds
            if delta.total_seconds() < 30:
                canTweet = False
                error_tweet_30 = "You have tweeted " + str(int(delta.total_seconds())) + \
                  " seconds ago."
        if canTweet:
            f = TweetForm(request.POST)
            if f.is_valid():
                t = Tweet()
                t.user = request.user
                t.text = f.cleaned_data["text"]
                d = datetime.datetime.today()
                t.published_on = d
                t.save()
                request.session["time_of_last_tweet"] = d.strftime(
                    "%d %m %Y %H:%M:%S")
                return HttpResponseRedirect(reverse("twitter:home"))
            else:
                tweets = Tweet.objects.order_by("-published_on")[:5]
                return render(request, 'twitter/home.html', {
                    "tweets": tweets,
                    "user": request.user,
                    "f": f
                })
        else:
            f = TweetForm()
            tweets = Tweet.objects.order_by("-published_on")[:5]
            return render(
                request, 'twitter/home.html', {
                    "tweets": tweets,
                    "user": request.user,
                    "f": f,
                    "er30": error_tweet_30
                })
    else:
        f = TweetForm()
        tweets = Tweet.objects.order_by("-published_on")[:5]
        return render(request, 'twitter/home.html', {
            "tweets": tweets,
            "user": request.user,
            "f": f
        })
Exemplo n.º 8
0
    def setUp(self):
        self.users = {
            'author': User.objects.create(username='******'),
            'user1': User.objects.create(username='******'),
            'user2': User.objects.create(username='******'),
            'user3': User.objects.create(username='******'),
        }

        self.tweet = Tweet(author=self.users['author'],
                           tweet_text='aaa',
                           pub_date=timezone.now())
        self.tweet.save()
Exemplo n.º 9
0
def new_tweet(request):
    current_user = request.user
    tweet_title = request.data.get('tweet_title')
    tweet_text = request.data.get('tweet_text')
    if tweet_text == '' or tweet_text == '':
        return Response(status=status.HTTP_400_BAD_REQUEST)
    tweet = Tweet(author=current_user,
                  tweet_title=tweet_title,
                  tweet_text=tweet_text,
                  pub_date=timezone.now())
    tweet.save()
    return Response(status=status.HTTP_201_CREATED)
Exemplo n.º 10
0
def create_tweet():
    print("FORM DATA:", dict(request.form))

    new_tweet = Tweet(content=request.form["content"],
                      user=request.form["User_name"])
    db.session.add(new_tweet)
    db.session.commit()

    return jsonify({
        "message": "Successfully Created (TODO)",
        "book": dict(request.form)
    })
def run():
    # create topic
    topic_example = TwTopic()
    topic_example.title = "migration"
    topic, created = TwTopic.objects.get_or_create(topic_example.__dict__)

    # create query string with well known migration organisations and their twitter accounts
    settings_dir = os.path.dirname(__file__)
    project_root = Path(os.path.dirname(settings_dir)).absolute()
    twitter_addresses_yaml = Path.joinpath(project_root, "twitter\\twitter_addresses.yaml")
    with open(twitter_addresses_yaml) as f:
        # use safe_load instead load
        data_map = yaml.safe_load(f)

    class TwitterAddresses:
        def __init__(self, entries):
            self.__dict__.update(entries)

    addresses = TwitterAddresses(data_map)
    pp = pprint.PrettyPrinter(indent=4)

    # query_string = ""
    # for (institution in addresses.institutions):
    #    query_string+= institution.twitter_account
    # institutions = list(map(lambda x: list(x.values())[0], addresses.institutions))
    institutions = addresses.institutions
    twitter_accounts = map(lambda x: x.get('institution').get('twitter_account').replace("@", ""), institutions)
    twitter_accounts_query_1 = map(lambda x: "(from:{}) OR ".format(x), twitter_accounts)
    twitter_accounts_query_2 = reduce(lambda x, y: x + y, twitter_accounts_query_1)
    twitter_accounts_query_2 += "#immigration lang:en"
    pp.pprint(twitter_accounts_query_2)

    params = {'query': '{}'.format(twitter_accounts_query_2), 'max_results': '500'}
    search_url = "https://api.twitter.com/2/tweets/search/all"

    connector = TwitterConnector(1)
    json_result = connector.get_from_twitter(search_url, params, True)
    # print(json.dumps(json_result, indent=4, sort_keys=True))

    twitter_data: list = json_result.get("data")
    for tweet_raw in twitter_data:
        try:
            tweet = Tweet()
            tweet.topic = topic
            tweet.query_string = twitter_accounts_query_2
            tweet.text = tweet_raw.get("text")
            tweet.twitter_id = tweet_raw.get("id")
            tweet.save()
        except IntegrityError:
            pass
Exemplo n.º 12
0
def postTweet(request):

    if request.method == 'POST':
        form = tweetForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            textarea = form.cleaned_data['textarea']
            p = Tweet(userName=username, content=textarea)
            p.save()
            return render_to_response('submit.html', {'user': username},
                                      context_instance=RequestContext(request))

    form = tweetForm()

    return render_to_response('newTweet.html', {'form': form},
                              context_instance=RequestContext(request))
Exemplo n.º 13
0
def tweet_view(request, slug):
    tweet = Tweet.objects.get(slug=slug)

    if request.method == 'POST':
        text = request.POST.get('tweet_comment')
        new_tweet = Tweet(author=request.user, body=text, replying_tweet=tweet)
        new_tweet.save()

    comments = Tweet.objects.filter(replying_tweet=tweet)
    context = {
        'tweet': tweet,
        'comments': comments,
        'username': request.user.get_username()
    }

    return render(request, 'twitter/tweet.html', context)
Exemplo n.º 14
0
def envoyer_tweet(request):
	if request.user.is_authenticated():
		login= UserProfil.objects.get(pk = request.user.pk)
		if request == "POST":
			tweet_form = TweetForm(request.POST)
			if tweet_form.is_valide():
				tweet = Tweet()
				tweet.message = tweet_form.cleaned_data['message']
				tweet.date = datetime.date.today()
				tweet.user = login
				tweet.save()
				return redirect(user_profil)
		else:
			tweet_form = TweetForm()
	tweets = Tweet.objects.all().order_by('date')
	contexte = {'tweets': tweets, 'tweet_form' : tweet_form}
	return render(request,'bienvenue.html', contexte)
Exemplo n.º 15
0
def home(request):
    if request.method == "POST":
        f = TweetForm(request.POST)
        if f.is_valid():
            t = Tweet()
            t.user = request.user
            t.text = f.cleaned_data["text"]
            t.published_on = datetime.datetime.today()
            t.save()
        else:
            tweets = Tweet.objects.order_by("-published_on")[:5]
            return render(request, 'twitter/home.html', {
                "tweets": tweets,
                "f": f
            })
    else:
        f = TweetForm()
        tweets = Tweet.objects.order_by("-published_on")[:5]
        return render(request, 'twitter/home.html', {"tweets": tweets, "f": f})
def run():
    # create topic
    topic_example = TwTopic()
    topic_example.title = "random"
    topic, created = TwTopic.objects.get_or_create(topic_example.__dict__)

    count = 500

    connector = TwitterConnector(1)

    random_stream_url = "https://api.twitter.com/2/tweets/sample/stream"

    headers = connector.create_headers()
    params = {'tweet.fields': 'lang'}
    response = requests.request("GET",
                                random_stream_url,
                                headers=headers,
                                stream=True,
                                params=params)
    print("is connected {}".format(response.status_code))

    if response.status_code != 200:
        raise Exception("Request returned an error: {} {}".format(
            response.status_code, response.text))
    for response_line in response.iter_lines():
        if response_line:
            json_response = json.loads(response_line)
            while True:
                if count == 0:
                    break
                twitter_data: list = json_response.get("data")
                if twitter_data.get("lang") == "en":
                    print(json.dumps(json_response, indent=4, sort_keys=True))
                    count += -1
                    try:
                        tweet = Tweet()
                        tweet.topic = topic
                        tweet.query_string = topic_example.title
                        tweet.text = twitter_data.get("text")
                        tweet.twitter_id = twitter_data.get("id")
                        tweet.save()
                    except IntegrityError:
                        pass
Exemplo n.º 17
0
def create_user(screen_name=None):
    screen_name = request.form["user"]
    twitter_user = twitter_api_client.get_user(screen_name)
    statuses = twitter_api_client.user_timeline(screen_name,
                                                tweet_mode="extended",
                                                count=150,
                                                exclude_replies=True,
                                                include_rts=False)
    print("STATUSES COUNT:", len(statuses))

    # get existing user from the db or initialize a new one:
    db_user = User.query.get(twitter_user.id) or User(id=twitter_user.id)
    db_user.screen_name = twitter_user.screen_name
    db_user.name = twitter_user.name
    db_user.location = twitter_user.location
    db_user.followers_count = twitter_user.followers_count
    db.session.add(db_user)
    db.session.commit()

    all_tweet_texts = [status.full_text for status in statuses]
    embeddings = list(
        basilica_api_client.embed_sentences(all_tweet_texts, model="twitter"))
    print("NUMBER OF EMBEDDINGS", len(embeddings))

    # TODO: explore using the zip() function maybe...
    counter = 0
    for status in statuses:
        print(status.full_text)
        print("----")

        # get existing tweet from the db or initialize a new one:
        db_tweet = Tweet.query.get(status.id) or Tweet(id=status.id)
        db_tweet.user_id = status.author.id
        db_tweet.full_text = status.full_text
        embedding = embeddings[counter]
        print(len(embedding))
        db_tweet.embedding = embedding
        db.session.add(db_tweet)
        counter += 1
    db.session.commit()

    return render_template("user.html", user=db_user, tweets=statuses)