summaryrefslogtreecommitdiff
path: root/app/unused_apps/syndication
diff options
context:
space:
mode:
Diffstat (limited to 'app/unused_apps/syndication')
-rw-r--r--app/unused_apps/syndication/__init__.py0
-rw-r--r--app/unused_apps/syndication/admin.py20
-rw-r--r--app/unused_apps/syndication/migrations/0001_initial.py37
-rw-r--r--app/unused_apps/syndication/migrations/0002_auto_20160628_2149.py31
-rw-r--r--app/unused_apps/syndication/migrations/0003_auto_20161023_2014.py19
-rw-r--r--app/unused_apps/syndication/migrations/__init__.py0
-rw-r--r--app/unused_apps/syndication/models.py86
-rw-r--r--app/unused_apps/syndication/syndicators.py123
-rw-r--r--app/unused_apps/syndication/templatetags/__init__.py0
-rw-r--r--app/unused_apps/syndication/templatetags/facebook_processor.py23
-rw-r--r--app/unused_apps/syndication/views.py17
11 files changed, 0 insertions, 356 deletions
diff --git a/app/unused_apps/syndication/__init__.py b/app/unused_apps/syndication/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/app/unused_apps/syndication/__init__.py
+++ /dev/null
diff --git a/app/unused_apps/syndication/admin.py b/app/unused_apps/syndication/admin.py
deleted file mode 100644
index b873eb7..0000000
--- a/app/unused_apps/syndication/admin.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.contrib import admin
-
-from .models import Syndicate, SyndicatedItem, FBOAuthToken
-
-
-@admin.register(FBOAuthToken)
-class FBOAuthTokenAdmin(admin.ModelAdmin):
- list_display = ('__str__', 'expires',)
- pass
-
-
-@admin.register(Syndicate)
-class SyndicateAdmin(admin.ModelAdmin):
- pass
-
-
-@admin.register(SyndicatedItem)
-class SyndicatedItemAdmin(admin.ModelAdmin):
- list_display = ('__str__', 'syndicated_to',)
- pass
diff --git a/app/unused_apps/syndication/migrations/0001_initial.py b/app/unused_apps/syndication/migrations/0001_initial.py
deleted file mode 100644
index 9643d51..0000000
--- a/app/unused_apps/syndication/migrations/0001_initial.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9 on 2016-03-29 10:07
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.db.models.deletion
-
-
-class Migration(migrations.Migration):
-
- initial = True
-
- dependencies = [
- ('contenttypes', '0002_remove_content_type_name'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='Syndicate',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('name', models.CharField(max_length=200)),
- ],
- ),
- migrations.CreateModel(
- name='SyndicatedItem',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('object_id', models.PositiveIntegerField()),
- ('publish_date', models.DateTimeField()),
- ('status', models.CharField(blank=True, choices=[('1', 'Unsent'), ('2', 'Sent')], max_length=1, null=True)),
- ('rel_link', models.CharField(blank=True, max_length=300, null=True)),
- ('content_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
- ('syndicate', models.ManyToManyField(to='syndication.Syndicate')),
- ],
- ),
- ]
diff --git a/app/unused_apps/syndication/migrations/0002_auto_20160628_2149.py b/app/unused_apps/syndication/migrations/0002_auto_20160628_2149.py
deleted file mode 100644
index 51812bf..0000000
--- a/app/unused_apps/syndication/migrations/0002_auto_20160628_2149.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9 on 2016-06-28 21:49
-from __future__ import unicode_literals
-
-from django.db import migrations, models
-import django.utils.timezone
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('syndication', '0001_initial'),
- ]
-
- operations = [
- migrations.CreateModel(
- name='FBOAuthToken',
- fields=[
- ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
- ('short_token', models.TextField()),
- ('long_token', models.TextField(blank=True, null=True)),
- ('expires', models.DateTimeField(blank=True)),
- ('created', models.DateTimeField(default=django.utils.timezone.now)),
- ],
- ),
- migrations.AlterField(
- model_name='syndicateditem',
- name='status',
- field=models.CharField(choices=[('1', 'Unsent'), ('2', 'Sent')], max_length=1, null=True),
- ),
- ]
diff --git a/app/unused_apps/syndication/migrations/0003_auto_20161023_2014.py b/app/unused_apps/syndication/migrations/0003_auto_20161023_2014.py
deleted file mode 100644
index 2b311fb..0000000
--- a/app/unused_apps/syndication/migrations/0003_auto_20161023_2014.py
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by Django 1.9 on 2016-10-23 20:14
-from __future__ import unicode_literals
-
-from django.db import migrations
-
-
-class Migration(migrations.Migration):
-
- dependencies = [
- ('syndication', '0002_auto_20160628_2149'),
- ]
-
- operations = [
- migrations.AlterModelOptions(
- name='fboauthtoken',
- options={'get_latest_by': 'expires', 'ordering': ('-expires',)},
- ),
- ]
diff --git a/app/unused_apps/syndication/migrations/__init__.py b/app/unused_apps/syndication/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/app/unused_apps/syndication/migrations/__init__.py
+++ /dev/null
diff --git a/app/unused_apps/syndication/models.py b/app/unused_apps/syndication/models.py
deleted file mode 100644
index c348c1b..0000000
--- a/app/unused_apps/syndication/models.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from django.db import models
-from django.utils import timezone
-from django.conf import settings
-import datetime
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.contenttypes.fields import GenericForeignKey
-from django.db.models.signals import post_save
-from django.dispatch import receiver
-
-from .syndicators import post_to_medium, build_facebook_feed, post_to_twitter, post_photo_to_flickr, post_to_facebook
-
-
-class FBOAuthToken(models.Model):
- short_token = models.TextField()
- long_token = models.TextField(null=True, blank=True)
- expires = models.DateTimeField(blank=True)
- created = models.DateTimeField(default=timezone.now)
-
- def __str__(self):
- return str(self.expires)
-
- def long_token_link(self):
- token_url = "https://graph.facebook.com/oauth/access_token?client_id=%s&client_secret=%s&grant_type=fb_exchange_token&fb_exchange_token=%s" % (settings.FACEBOOK_APP_ID, settings.FACEBOOK_APP_SECRET, self.short_token)
- return token_url
-
- class Meta:
- ordering = ('-expires',)
- get_latest_by = 'expires'
-
- def save(self, *args, **kwargs):
- self.expires = self.created + datetime.timedelta(60)
- super(FBOAuthToken, self).save()
-
-
-class Syndicate(models.Model):
- name = models.CharField(max_length=200)
-
- def __str__(self):
- return self.name
-
-
-class SyndicatedItem(models.Model):
- content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
- object_id = models.PositiveIntegerField()
- content_object = GenericForeignKey('content_type', 'object_id')
- syndicate = models.ManyToManyField(Syndicate)
- publish_date = models.DateTimeField()
- STATUS = (
- ('1', "Unsent"),
- ('2', "Sent"),
- )
- status = models.CharField(max_length=1, choices=STATUS, null=True)
- rel_link = models.CharField(max_length=300, null=True, blank=True)
-
- def __str__(self):
- return str(self.content_object)
-
- def syndicated_to(self):
- return ','.join(str(synd) for synd in self.syndicate.all())
-
-
-@receiver(post_save, sender=SyndicatedItem)
-def post_save_events(sender, update_fields, created, instance, **kwargs):
- print(instance.status)
- if instance.status == "1":
- print("---------calling-----------")
- for item in instance.syndicate.all():
- print(item.name)
- if item.name == "Medium":
- instance.rel_link = post_to_medium(instance.content_object)
- instance.status = 2
- if item.name == "Facebook Instant Articles":
- build_facebook_feed()
- instance.status = 2
- if item.name == "Twitter":
- print("calling function")
- post_to_twitter(instance.content_object, instance.content_type.name)
- if item.name == "Flickr":
- if instance.content_type.name == "lux image":
- post_photo_to_flickr(instance.content_object)
- if item.name == "Facebook":
- post_to_facebook(instance.content_object, instance.content_type.name)
- post_save.disconnect(post_save_events, sender=SyndicatedItem)
- instance.status = "2"
- instance.save()
- post_save.connect(post_save_events, sender=SyndicatedItem)
diff --git a/app/unused_apps/syndication/syndicators.py b/app/unused_apps/syndication/syndicators.py
deleted file mode 100644
index 5f8762c..0000000
--- a/app/unused_apps/syndication/syndicators.py
+++ /dev/null
@@ -1,123 +0,0 @@
-import os
-from django.conf import settings
-from django.test.client import Client
-
-from twython import Twython
-from bs4 import BeautifulSoup
-from medium import Client as MediumClient
-import flickrapi
-import facebook
-
-from photos.models import LuxImage
-
-
-def absolute_urls_for_syndication(s):
- soup = BeautifulSoup(s, "lxml")
- for a in soup.find_all('a'):
- if a['href'][:1] == "/":
- a['href'] = "https://luxagraf.net%s" % a['href']
- return soup
-
-
-def post_to_medium(item):
- client = MediumClient(application_id=settings.MEDIUM_CLIENT_ID, application_secret=settings.MEDIUM_CLIENT_SECRET)
- client.access_token = settings.MEDIUM_INT_TOKEN
- user = client.get_current_user()
- head = '<p><i>This was originally posted <a href="https://luxagraf.net%s" rel="canonical">on my own site</a>.</i></p>' % item.get_absolute_url()
- body = "%s %s" % (head, absolute_urls_for_syndication(item.body_html))
- # Create a post.
- post = client.create_post(
- user_id=user["id"],
- title=item.title,
- content=body,
- content_format="html",
- publish_status="public",
- canonical_url="https://luxagraf.net%s" % item.get_absolute_url(),
- license="all-rights-reserved"
- )
- return post["url"]
-
-
-def build_facebook_feed():
- print("+++++++++++++building+++++++++++")
- c = Client()
- response = c.get('/iafeed.xml', HTTP_HOST='127.0.0.1')
- f = open("%siafeed.xml" % settings.FLATFILES_ROOT, 'wb')
- f.write(response.content)
- f.close()
-
-
-def post_to_twitter(obj, ctype):
- print("content type is" + ctype)
- t = Twython(settings.TWITTER_API_KEY, settings.TWITTER_API_SECRET, settings.TWITTER_ACCESS_TOKEN, settings.TWITTER_ACCESS_SECRET)
- imgs = []
- if ctype == "lux image":
- p = open(obj.get_largest_image(), 'rb')
- if obj.caption:
- status = obj.caption
- else:
- status = obj.title
- response = t.upload_media(media=p)
- imgs.append(response)
- elif ctype == "lux note":
- status = obj.body_markdown
- # parse out images and send seperately
- soup = BeautifulSoup(status, "lxml")
- loop = 0
- for img in soup.find_all('img'):
- src = img['src'].split("images/")[1]
- i = LuxImage.objects.get(image__icontains=src)
- p = open(i.get_largest_image(), 'rb')
- response = t.upload_media(media=p)
- imgs.append(response)
- loop = loop+1
- if loop == 3:
- break
- for t in soup.find_all('img'):
- t.replaceWith("")
- # truncate message
- if len(status) > 140:
- try:
- status = status.split("|")[0] + obj.get_absolute_url()
- except:
- status = status[:140] + obj.get_absolute_url()
- print(status)
- try:
- geo = t.reverse_geocode(lat=obj.latitude, lon=obj.longitude, accuracy=1500, granularity="city")
- geo_id = geo['result']['places'][0]['id']
- tweet = t.update_status(status=status, media_ids=[img['media_id'] for img in imgs], place_id=geo_id)
- except:
- try:
- tweet = t.update_status(status=status, media_ids=[img['media_id'] for img in imgs])
- except:
- tweet = t.update_status(status=status)
-
-
-def post_photo_to_flickr(photo):
- TOKEN_FILE = os.path.join(settings.PROJ_ROOT, "config/flickrToken")
- token = open(TOKEN_FILE).read()
- flickr = flickrapi.FlickrAPI(settings.FLICKR_API_KEY, settings.FLICKR_API_SECRET, token=token)
- sent = flickr.upload(filename=photo.get_image_path_by_size("original"), title=photo.title, description=photo.caption)
- photo_id = sent.find('photoid').text
- photo.flickr_id = photo_id
- try:
- flickr.photos.geo.setLocation(photo_id=photo_id, lat=photo.latitude, lon=photo.longitude, accuracy=12)
- except:
- pass
-
-
-def post_to_facebook(obj, ctype):
- from syndication.models import FBOAuthToken
- token = FBOAuthToken.objects.latest()
- graph = facebook.GraphAPI(access_token=token.long_token, version='2.2')
- if ctype == "lux image":
- p = open(obj.get_largest_image(), 'rb')
- if obj.caption:
- message = obj.caption
- else:
- message = obj.title
- try:
- fb_response = graph.put_photo(p, message=message)
- print(fb_response)
- except facebook.GraphAPIError as e:
- print('Something went wrong:', e.type, e.message)
diff --git a/app/unused_apps/syndication/templatetags/__init__.py b/app/unused_apps/syndication/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/app/unused_apps/syndication/templatetags/__init__.py
+++ /dev/null
diff --git a/app/unused_apps/syndication/templatetags/facebook_processor.py b/app/unused_apps/syndication/templatetags/facebook_processor.py
deleted file mode 100644
index 973f863..0000000
--- a/app/unused_apps/syndication/templatetags/facebook_processor.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from django import template
-from bs4 import BeautifulSoup
-
-from syndication.syndicators import absolute_urls_for_syndication
-
-register = template.Library()
-
-
-def wrap_image_tags(text):
- soup = BeautifulSoup(text, 'lxml')
- for img in soup.find_all('img'):
- if img.parent.name != "figure":
- new_tag = soup.new_tag('figure')
- img.wrap(new_tag)
- return soup
-
-
-def facebook_processor(text):
- ia = absolute_urls_for_syndication(text)
- ia = wrap_image_tags(str(ia)[12:-14])
- return str(ia)[12:-14]
-
-register.filter('facebook_processor', facebook_processor)
diff --git a/app/unused_apps/syndication/views.py b/app/unused_apps/syndication/views.py
deleted file mode 100644
index e489846..0000000
--- a/app/unused_apps/syndication/views.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from django.views.generic import ListView
-
-from .models import SyndicatedItem
-
-
-class FacebookFeedView(ListView):
- """
- Return a main entry and list of Entries in reverse chronological order
- """
- queryset = SyndicatedItem.objects.filter(syndicate__name__exact="Facebook")[:16]
-
- def get_template_names(self):
- return "fb-feed.xml"
-
- def render_to_response(self, context, **response_kwargs):
- response_kwargs.update({'content_type': 'text/xml'})
- return super(FacebookFeedView, self).render_to_response(context, **response_kwargs)