From 8c7fed81df7a19a1030ab2cccbe6618bd6d247f0 Mon Sep 17 00:00:00 2001 From: Matheus Faria Date: Mon, 7 Sep 2015 16:52:29 -0300 Subject: [PATCH] Widget system as a Django App --- colab/accounts/views.py | 2 +- colab/plugins/utils/widget_manager.py | 53 ----------------------------------------------------- colab/widgets/__init__.py | 0 colab/widgets/admin.py | 3 +++ colab/widgets/migrations/__init__.py | 0 colab/widgets/models.py | 3 +++ colab/widgets/tests.py | 3 +++ colab/widgets/views.py | 3 +++ colab/widgets/widget_manager.py | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 66 insertions(+), 54 deletions(-) delete mode 100644 colab/plugins/utils/widget_manager.py create mode 100644 colab/widgets/__init__.py create mode 100644 colab/widgets/admin.py create mode 100644 colab/widgets/migrations/__init__.py create mode 100644 colab/widgets/models.py create mode 100644 colab/widgets/tests.py create mode 100644 colab/widgets/views.py create mode 100644 colab/widgets/widget_manager.py diff --git a/colab/accounts/views.py b/colab/accounts/views.py index 874a3cb..d362420 100644 --- a/colab/accounts/views.py +++ b/colab/accounts/views.py @@ -15,7 +15,7 @@ from colab.super_archives.models import (EmailAddress, EmailAddressValidation) from colab.search.utils import get_collaboration_data, get_visible_threads from colab.accounts.models import User -from colab.plugins.utils.widget_manager import WidgetManager +from colab.widgets.widget_manager import WidgetManager from .forms import (UserCreationForm, ListsForm, UserUpdateForm) from .utils import mailman diff --git a/colab/plugins/utils/widget_manager.py b/colab/plugins/utils/widget_manager.py deleted file mode 100644 index 2b74149..0000000 --- a/colab/plugins/utils/widget_manager.py +++ /dev/null @@ -1,53 +0,0 @@ -from django.utils.safestring import mark_safe - -class Widget: - identifier = None - name = None - default_url = None - content = '' - - def get_body(self): - # avoiding regex in favor of performance - start = self.content.find('') - end = self.content.find('') - - if -1 in [start, end]: - return '' - - body = self.content[start + len(''):end] - return mark_safe(body) - - def get_header(self): - # avoiding regex in favor of performance - start = self.content.find('') - end = self.content.find('') - - if -1 in [start, end]: - return '' - - head = self.content[start + len(''):end] - return mark_safe(head) - - def generate_content(self, request=None): - self.content = '' - - -class WidgetManager(object): - widget_categories = {} - - @staticmethod - def register_widget(category, widget): - if not WidgetManager.widget_categories.has_key(category): - WidgetManager.widget_categories[category] = [] - - WidgetManager.widget_categories[category].append(widget) - - @staticmethod - def get_widgets(category, request=None): - if not WidgetManager.widget_categories.has_key(category): - return [] - - widgets = WidgetManager.widget_categories[category] - for widget in widgets: - widget.generate_content(request) - return widgets diff --git a/colab/widgets/__init__.py b/colab/widgets/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/colab/widgets/__init__.py diff --git a/colab/widgets/admin.py b/colab/widgets/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/colab/widgets/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/colab/widgets/migrations/__init__.py b/colab/widgets/migrations/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/colab/widgets/migrations/__init__.py diff --git a/colab/widgets/models.py b/colab/widgets/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/colab/widgets/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/colab/widgets/tests.py b/colab/widgets/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/colab/widgets/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/colab/widgets/views.py b/colab/widgets/views.py new file mode 100644 index 0000000..91ea44a --- /dev/null +++ b/colab/widgets/views.py @@ -0,0 +1,3 @@ +from django.shortcuts import render + +# Create your views here. diff --git a/colab/widgets/widget_manager.py b/colab/widgets/widget_manager.py new file mode 100644 index 0000000..1cd1c26 --- /dev/null +++ b/colab/widgets/widget_manager.py @@ -0,0 +1,53 @@ +from django.utils.safestring import mark_safe + +class Widget(object): + identifier = None + name = None + default_url = None + content = '' + + def get_body(self): + # avoiding regex in favor of performance + start = self.content.find('') + end = self.content.find('') + + if -1 in [start, end]: + return '' + + body = self.content[start + len(''):end] + return mark_safe(body) + + def get_header(self): + # avoiding regex in favor of performance + start = self.content.find('') + end = self.content.find('') + + if -1 in [start, end]: + return '' + + head = self.content[start + len(''):end] + return mark_safe(head) + + def generate_content(self, request=None): + self.content = '' + + +class WidgetManager(object): + widget_categories = {} + + @staticmethod + def register_widget(category, widget): + if not WidgetManager.widget_categories.has_key(category): + WidgetManager.widget_categories[category] = [] + + WidgetManager.widget_categories[category].append(widget) + + @staticmethod + def get_widgets(category, request=None): + if not WidgetManager.widget_categories.has_key(category): + return [] + + widgets = WidgetManager.widget_categories[category] + for widget in widgets: + widget.generate_content(request) + return widgets -- libgit2 0.21.2