Skip to content

Commit

Permalink
create lists via admin
Browse files Browse the repository at this point in the history
  • Loading branch information
onurmatik committed Oct 17, 2016
1 parent cba0082 commit 98329bf
Show file tree
Hide file tree
Showing 3 changed files with 68 additions and 1 deletion.
47 changes: 47 additions & 0 deletions twitter/lists/admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,52 @@
from django import forms
from django.contrib import admin
from django.conf import settings
from twitter.api import AppClient
from twitter.lists.models import List
from twitter.tokens.models import Token


class ListForm(forms.ModelForm):
name = forms.CharField(required=False)
members = forms.CharField(required=False, widget=forms.Textarea)
mode = forms.ChoiceField(choices=(('public', 'public'), ('private', 'private')))

class Meta:
model = List

def save(self, **kwargs):
if self.members:
# create a new Twitter list
client = AppClient(
consumer_key=settings.CONSUMER_KEY,
consumer_secret=settings.CONSUMER_SECRET,
)
response = client.api.lists.create.post(
name=self.name,
mode=self.mode,
)
list_id = response.data['id']
while len(self.members) > 0:
members = self.members[:100]
del(self.members[:100])
response = client.api.lists.members.create_all.post(
list_id=list_id,
screen_name=members,
)
else:
# URL; fetch an existing Twitter list
owner_screen_name, slug = self.name.split('/')[-2:]
token = Token.objects.get_for_resource('/lists/show')
if token:
client = token.get_client()
response = client.api.lists.show(
owner_screen_name=owner_screen_name,
slug=slug,
)
List.objects.create(
id=response.data['id'],
data=response.data,
)


@admin.register(List)
Expand Down
20 changes: 20 additions & 0 deletions twitter/lists/migrations/0006_auto_20161017_0740.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.2 on 2016-10-17 07:40
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('lists', '0005_auto_20161017_0618'),
]

operations = [
migrations.AlterField(
model_name='list',
name='id',
field=models.BigIntegerField(primary_key=True, serialize=False),
),
]
2 changes: 1 addition & 1 deletion twitter/lists/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


class List(models.Model):
id = models.BigIntegerField(primary_key=True, blank=True)
id = models.BigIntegerField(primary_key=True)
data = JSONField(blank=True, null=True)
updated = models.DateTimeField(auto_now=True)

Expand Down

0 comments on commit 98329bf

Please sign in to comment.