Skip to content
This repository has been archived by the owner on Oct 5, 2021. It is now read-only.

Commit

Permalink
simplifying
Browse files Browse the repository at this point in the history
  • Loading branch information
FoxMaSk committed Nov 20, 2017
1 parent f0ac4b2 commit aa1e000
Show file tree
Hide file tree
Showing 15 changed files with 83 additions and 159 deletions.
6 changes: 2 additions & 4 deletions django_th/publish.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,7 @@ def provider(self, service):
:param service:
:return: data
"""
service_provider = default_provider.get_service(
str(service.provider.name.name))
service_provider = default_provider.get_service(str(service.provider.name.name))

# 1) get the data from the provider service
module_name = 'th_' + service.provider.name.name.split('Service')[1].lower()
Expand All @@ -82,8 +81,7 @@ def consumer(self, service, data, to_update, status):
:return: status
"""
# consumer - the service which uses the data
service_consumer = default_provider.get_service(
str(service.consumer.name.name))
service_consumer = default_provider.get_service(str(service.consumer.name.name))
kwargs = {'user': service.user}
getattr(service_consumer, '__init__')(service.consumer.token, **kwargs)
instance = getattr(service_consumer, 'save_data')
Expand Down
33 changes: 12 additions & 21 deletions django_th/recycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,11 @@
from __future__ import absolute_import

# django
from django.conf import settings
from django.core.cache import caches

# trigger happy
from django_th.my_services import MyService

from logging import getLogger

cache = caches['django_th']
logger = getLogger('django_th.trigger_happy')


Expand All @@ -19,21 +16,15 @@ def recycle():
the purpose of this tasks is to recycle the data from the cache
with version=2 in the main cache
"""
logger = getLogger('django_th.trigger_happy')
all_packages = MyService.all_packages()
for package in all_packages:
if package in settings.DJANGO_TH.get('services_wo_cache'):
continue
cache = caches['django_th']
# http://niwinz.github.io/django-redis/latest/#_scan_delete_keys_in_bulk
for service in cache.iter_keys('th_*'):
try:
# get the value from the cache version=2
service_value = cache.get(service, version=2)
# put it in the version=1
cache.set(service, service_value)
# remote version=2
cache.delete_pattern(service, version=2)
except ValueError:
pass
# http://niwinz.github.io/django-redis/latest/#_scan_delete_keys_in_bulk
for service in cache.iter_keys('th_*'):
try:
# get the value from the cache version=2
service_value = cache.get(service, version=2)
# put it in the version=1
cache.set(service, service_value)
# remote version=2
cache.delete_pattern(service, version=2)
except ValueError:
pass
logger.info('recycle of cache done!')
3 changes: 1 addition & 2 deletions django_th/services/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ def _get_content(data, which_content):
"""
content = ''
if data.get(which_content):
if type(data.get(which_content)) is list or type(data.get(which_content)) is tuple or type(data.get(
which_content)) is dict:
if not isinstance(data.get(which_content), str):
if 'value' in data.get(which_content)[0]:
content = data.get(which_content)[0].value
else:
Expand Down
2 changes: 1 addition & 1 deletion django_th/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ def get_tags(model, trigger_id):
tags = ''
if len(trigger.tag) > 0:
# is there several tag ?
tags = ["#" + tag.strip() for tag in trigger.tag.split(',')] if ',' in trigger.tag else "#" + trigger.tag
tags = ["#" + tag.strip() for tag in trigger.tag.split(',')]
tags = str(','.join(tags)) if isinstance(tags, list) else tags
tags = ' ' + tags
return tags
Expand Down
40 changes: 14 additions & 26 deletions th_evernote/evernote_mgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,12 @@ def get_tag(note_store, my_tags):
tag_id = []
listtags = note_store.listTags()
# cut the string by piece of tag with comma
if ',' in my_tags:
for my_tag in my_tags.split(','):
for tag in listtags:
# remove space before and after
# thus we keep "foo bar"
# but not " foo bar" nor "foo bar "
if tag.name.lower() == my_tag.lower().lstrip().rstrip():
tag_id.append(tag.guid)
break
else:
for my_tag in my_tags.split(','):
for tag in listtags:
if tag.name.lower() == my_tags.lower():
# remove space before and after
# thus we keep "foo bar"
# but not " foo bar" nor "foo bar "
if tag.name.lower() == my_tag.lower().lstrip().rstrip():
tag_id.append(tag.guid)
break

Expand All @@ -82,16 +76,8 @@ def set_tag(note_store, my_tags, tag_id):
:return: array of the tag to create
"""
new_tag = Types.Tag()
if ',' in my_tags:
for my_tag in my_tags.split(','):
new_tag.name = my_tag
note_tag_id = EvernoteMgr.create_tag(note_store, new_tag)
if note_tag_id is not False:
tag_id.append(note_tag_id)
else:
return False
elif my_tags:
new_tag.name = my_tags
for my_tag in my_tags.split(','):
new_tag.name = my_tag
note_tag_id = EvernoteMgr.create_tag(note_store, new_tag)
if note_tag_id is not False:
tag_id.append(note_tag_id)
Expand Down Expand Up @@ -124,9 +110,8 @@ def create_note(note_store, note, trigger_id, data):
return error(trigger_id, data, e)
except EDAMUserException as e:
if e.errorCode == EDAMErrorCode.ENML_VALIDATION:
sentence = "Data ignored due to validation" \
" error : err {code} {msg}".format(
code=e.errorCode, msg=e.parameter)
sentence = "Data ignored due to validation error : err {code} {msg}".format(code=e.errorCode,
msg=e.parameter)
logger.warning(sentence)
update_result(trigger_id, msg=sentence, status=True)
return True
Expand Down Expand Up @@ -157,8 +142,7 @@ def set_header():
preparing the hearder of Evernote
"""
return '<?xml version="1.0" encoding="UTF-8"?>' \
'<!DOCTYPE en-note SYSTEM ' \
'"http://xml.evernote.com/pub/enml2.dtd">\n'
'<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\n'

@staticmethod
def set_note_attribute(data):
Expand Down Expand Up @@ -201,6 +185,10 @@ def set_note_filter(filter_string):

@staticmethod
def set_evernote_spec():
"""
set the spec of the notes
:return: spec
"""
spec = NoteStore.NotesMetadataResultSpec()
spec.includeTitle = True
spec.includeAttributes = True
Expand Down
35 changes: 10 additions & 25 deletions th_github/my_github.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from github3 import GitHub

from logging import getLogger
import pypandoc
from th_github.models import Github

"""
Expand Down Expand Up @@ -64,15 +65,13 @@ def __init__(self, token=None, **kwargs):

def gh_footer(self, trigger, issue):

link = 'https://github.com/{0}/{1}/issues/{2}'.format(
trigger.repo, trigger.project, issue.id)
link = 'https://github.com/{0}/{1}/issues/{2}'.format(trigger.repo, trigger.project, issue.id)

provided_by = _('Provided by')
provided_from = _('from')
footer_from = "<br/><br/>{} <em>{}</em> {} <a href='{}'>{}</a>"

return footer_from.format(provided_by, trigger.trigger.description,
provided_from, link, link)
return footer_from.format(provided_by, trigger.trigger.description, provided_from, link, link)

def read_data(self, **kwargs):
"""
Expand All @@ -89,29 +88,20 @@ def read_data(self, **kwargs):
# then we can create an issue
if self.gh.ratelimit_remaining > 1:

import pypandoc

trigger = Github.objects.get(trigger_id=trigger_id)
issues = self.gh.issues_on(trigger.repo,
trigger.project,
since=date_triggered)
issues = self.gh.issues_on(trigger.repo, trigger.project, since=date_triggered)

for issue in issues:

content = pypandoc.convert(issue.body, 'md', format='html')
content += self.gh_footer(trigger, issue)

data.append({'title': issue.title, 'content': content})
# digester
self.send_digest_event(trigger_id,
issue.title,
'')
self.send_digest_event(trigger_id, issue.title, '')
cache.set('th_github_' + str(trigger_id), data)
else:
# rate limit reach, do nothing right now
logger.warning("Rate limit reached")
update_result(trigger_id, msg="Rate limit reached",
status=True)
update_result(trigger_id, msg="Rate limit reached", status=True)
else:
logger.critical("no token provided")
update_result(trigger_id, msg="No token provided", status=True)
Expand Down Expand Up @@ -139,15 +129,11 @@ def save_data(self, trigger_id, **data):
if limit > 1:
# repo goes to "owner"
# project goes to "repository"
r = self.gh.create_issue(trigger.repo,
trigger.project,
title,
body)
r = self.gh.create_issue(trigger.repo, trigger.project, title, body)
else:
# rate limit reach
logger.warn("Rate limit reached")
update_result(trigger_id, msg="Rate limit reached",
status=True)
logger.warning("Rate limit reached")
update_result(trigger_id, msg="Rate limit reached", status=True)
# put again in cache the data that could not be
# published in Github yet
cache.set('th_github_' + str(trigger_id), data, version=2)
Expand All @@ -156,8 +142,7 @@ def save_data(self, trigger_id, **data):
logger.debug(sentence)
status = True
else:
sentence = "no token or link provided for " \
"trigger ID {} ".format(trigger_id)
sentence = "no token or link provided for trigger ID {} ".format(trigger_id)
logger.critical(sentence)
update_result(trigger_id, msg=sentence, status=False)
status = False
Expand Down
20 changes: 6 additions & 14 deletions th_pushbullet/my_pushbullet.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,16 @@ def read_data(self, **kwargs):
title = 'From Pushbullet'
created = arrow.get(p.get('created'))
if created > date_triggered and p.get('type') == trigger.type and\
(p.get('sender_email') == p.get('receiver_email') or
p.get('sender_email') is None):
title = title + ' Channel' if p.get('channel_iden') and \
p.get('title') is None else title
(p.get('sender_email') == p.get('receiver_email') or p.get('sender_email') is None):
title = title + ' Channel' if p.get('channel_iden') and p.get('title') is None else title
# if sender_email and receiver_email are the same ;
# that means that "I" made a note or something
# if sender_email is None, then "an API" does the post

body = p.get('body')
data.append({'title': title, 'content': body})
# digester
self.send_digest_event(trigger_id,
title,
'')
self.send_digest_event(trigger_id, title, '')

cache.set('th_pushbullet_' + str(trigger_id), data)
return data
Expand All @@ -102,16 +98,13 @@ def save_data(self, trigger_id, **data):
:return: the status of the save statement
:rtype: boolean
"""
title, content = super(ServicePushbullet, self).save_data(trigger_id,
**data)

title, content = super(ServicePushbullet, self).save_data(trigger_id, **data)
if self.token:
trigger = Pushbullet.objects.get(trigger_id=trigger_id)
if trigger.type == 'note':
status = self.pushb.push_note(title=title, body=content)
elif trigger.type == 'link':
status = self.pushb.push_link(title=title, body=content,
url=data.get('link'))
status = self.pushb.push_link(title=title, body=content, url=data.get('link'))
sentence = str('pushbullet {} created').format(title)
logger.debug(sentence)
else:
Expand All @@ -121,8 +114,7 @@ def save_data(self, trigger_id, **data):
update_result(trigger_id, msg=msg, status=False)
status = False
else:
msg = "no token or link provided for trigger " \
"ID {} ".format(trigger_id)
msg = "no token or link provided for trigger ID {} ".format(trigger_id)
logger.critical(msg)
update_result(trigger_id, msg=msg, status=False)
status = False
Expand Down
34 changes: 10 additions & 24 deletions th_reddit/my_reddit.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,8 @@ def read_data(self, **kwargs):
for submission in submissions:
title = 'From Reddit ' + submission.title
created = arrow.get(submission.created)
if created > date_triggered and submission.selftext is not None \
and trigger.share_link:
body = submission.selftext if submission.selftext \
else submission.url
if created > date_triggered and submission.selftext is not None and trigger.share_link:
body = submission.selftext if submission.selftext else submission.url
data.append({'title': title, 'content': body})
self.send_digest_event(trigger_id, title, '')

Expand All @@ -99,22 +97,17 @@ def save_data(self, trigger_id, **data):
# convert the format to be released in Markdown
status = False
data['output_format'] = 'md'
title, content = super(ServiceReddit, self).save_data(trigger_id,
**data)
title, content = super(ServiceReddit, self).save_data(trigger_id, **data)
if self.token:

trigger = Reddit.objects.get(trigger_id=trigger_id)
if trigger.share_link:
status = self.reddit.subreddit(trigger.subreddit)\
.submit(title=title, url=content)
status = self.reddit.subreddit(trigger.subreddit).submit(title=title, url=content)
else:
status = self.reddit.subreddit(trigger.subreddit)\
.submit(title=title, selftext=content)
status = self.reddit.subreddit(trigger.subreddit).submit(title=title, selftext=content)
sentence = str('reddit submission {} created').format(title)
logger.debug(sentence)
else:
msg = "no token or link provided for trigger " \
"ID {} ".format(trigger_id)
msg = "no token or link provided for trigger ID {} ".format(trigger_id)
logger.critical(msg)
update_result(trigger_id, msg=msg, status=False)
return status
Expand All @@ -125,14 +118,12 @@ def auth(self, request):
:param request:
:return:
"""
redirect_uri = '%s://%s%s' % (request.scheme, request.get_host(),
reverse("reddit_callback"))
redirect_uri = '%s://%s%s' % (request.scheme, request.get_host(), reverse("reddit_callback"))
reddit = RedditApi(client_id=self.consumer_key,
client_secret=self.consumer_secret,
redirect_uri=redirect_uri,
user_agent=self.user_agent)
auth_url = reddit.auth.url(['identity', 'read', 'submit', 'save'],
'redirect_uri')
auth_url = reddit.auth.url(['identity', 'read', 'submit', 'save'], 'redirect_uri')
return auth_url

def callback(self, request, **kwargs):
Expand All @@ -146,17 +137,12 @@ def callback(self, request, **kwargs):
:rtype: string
"""
code = request.GET.get('code', '')
redirect_uri = '%s://%s%s' % (request.scheme, request.get_host(),
reverse("reddit_callback"))
redirect_uri = '%s://%s%s' % (request.scheme, request.get_host(), reverse("reddit_callback"))
reddit = RedditApi(client_id=self.consumer_key,
client_secret=self.consumer_secret,
redirect_uri=redirect_uri,
user_agent=self.user_agent)

token = reddit.auth.authorize(code)

UserService.objects.filter(user=request.user,
name='ServiceReddit'
).update(token=token)

UserService.objects.filter(user=request.user, name='ServiceReddit').update(token=token)
return 'reddit/callback.html'

0 comments on commit aa1e000

Please sign in to comment.