#!/usr/bin/env python # Feeds # # Douglas Thrift # # $Id$ from __init__ import lock from ccscslab.facebook.models import TemplateBundle from ccscslab.facebook.utils import get_facebook from django.template import TemplateDoesNotExist from django.template.loader import render_to_string import optparse import os import re if __name__ == '__main__': parser = optparse.OptionParser() parser.add_option('-D', '--debug', action = 'store_true', dest = 'debug') options = parser.parse_args()[0] lock(options.debug) templates = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'templates', 'facebook')) _file = re.compile(r'^feed-([a-z]+)-one-line-0$') _facebook = get_facebook() for file in os.listdir(templates): match = _file.match(file) if match is not None: name = match.group(1) if options.debug: print name + ':' def templates(type): templates = [] index = 0 while True: try: template = render_to_string('facebook/feed-%s-%s-%u' % (name, type, index)).strip() except TemplateDoesNotExist: break if options.debug: print ' %s %u' % (type, index) if type == 'one-line': templates.append(template) else: data = template.split('\n', 2) template = {'template_title': data[0], 'template_body': data[1] if len(data) == 2 else ''} templates.append(template) index += 1 return templates try: full_story_template = templates('full-story')[0] except IndexError: full_story_template = None bundle_id = _facebook.feed.registerTemplateBundle(one_line_story_templates = templates('one-line'), short_story_templates = templates('short-story'), full_story_template = full_story_template) template_bundle, inserted = TemplateBundle.objects.get_or_create(name = name, defaults = {'bundle_id': bundle_id}) template_bundle.bundle_id = bundle_id template_bundle.save() if options.debug: print ' ' + ('inserted' if inserted else 'updated') for bundle_id in frozenset(map(lambda template: template['template_bundle_id'], _facebook.feed.getRegisteredTemplateBundles())) - frozenset(map(lambda template: template['bundle_id'], TemplateBundle.objects.values('bundle_id'))): if options.debug: print '%u:' % bundle_id _facebook.feed.deactivateTemplateBundleByID(template_bundle_id = bundle_id) if options.debug: print ' deactivated'