Changed some docstrings.

This commit is contained in:
Norman Jäckel 2014-05-06 13:21:46 +02:00 committed by Norman Jäckel
parent 8b2723e846
commit 43429d4015
4 changed files with 34 additions and 19 deletions

View File

@ -8,13 +8,13 @@ class SignalConnectMetaClass(type):
Classes must have a signal argument and a get_dispatch_uid classmethod. Classes must have a signal argument and a get_dispatch_uid classmethod.
The signal argument must be the Django signal the class should be The signal argument must be the Django signal the class should be
connected to. The get_dispatch_uid classmethod must return a unique connected to. The get_dispatch_uid classmethod must return a unique
value for each child class and None for base classes which will not be value for each child class and None for base classes because they will
connected. not be connected to the signal.
The classmethod get_all_objects is added as get_all classmethod to every The classmethod get_all_objects is added as get_all classmethod to every
class using this metaclass. Calling this on a base class or on child class using this metaclass. Calling this on a base class or on child
classes will retrieve all connected children, on instance for each child classes will retrieve all connected children, one instance for each
class. child class.
These instances will have a check_permission method which returns True These instances will have a check_permission method which returns True
by default. You can override this method to return False on runtime if by default. You can override this method to return False on runtime if
@ -24,6 +24,10 @@ class SignalConnectMetaClass(type):
of the default_weight attribute which is 0 by default. You can override of the default_weight attribute which is 0 by default. You can override
the attribute or the method to sort the children. the attribute or the method to sort the children.
Don't forget to set up the __init__ method so that it is able to receive
wildcard keyword arguments (see example below). This is necessary
because of Django's signal API.
Example: Example:
class Base(object): class Base(object):
@ -76,7 +80,7 @@ def get_all_objects(cls, request):
from all apps via signal. They are sorted using the get_default_weight from all apps via signal. They are sorted using the get_default_weight
method. Does not return objects where check_permission returns False. method. Does not return objects where check_permission returns False.
Expects a request object. Expects a django.http.HttpRequest object.
This classmethod is added as get_all classmethod to every class using This classmethod is added as get_all classmethod to every class using
the SignalConnectMetaClass. the SignalConnectMetaClass.

View File

@ -17,8 +17,10 @@ class MainMenuEntry(object):
__metaclass__ attribute (SignalConnectMetaClass) does the rest of the __metaclass__ attribute (SignalConnectMetaClass) does the rest of the
magic. magic.
For the appearance there are some optional attributes like For the appearance there are some optional attributes and methods like
permission_required, default_weight, stylesheets and javascript_files. permission_required, default_weight, stylesheets, javascript_files,
check_permission, get_url, get_default_weight, get_icon_css_class,
get_stylesheets and get_javascript_files.
""" """
__metaclass__ = SignalConnectMetaClass __metaclass__ = SignalConnectMetaClass
signal = Signal(providing_args=['request']) signal = Signal(providing_args=['request'])

View File

@ -7,12 +7,14 @@ from .dispatch import SignalConnectMetaClass
class PersonalInfo(object): class PersonalInfo(object):
""" """
Base class for a personal info collection for the personal info widget. Base class for a personal info collection for the personal info widget
on the dashboard.
Every app which wants to add info has to create a class subclassing Every app which wants to add info has to create a class subclassing
from this base class. For the content the headline and default_weight from this base class. For the content the headline attribute, the
attribute and the get_queryset method have to be set. The __metaclass__ default_weight attribute and the get_queryset method have to be set.
attribute (SignalConnectMetaClass) does the rest of the magic. The __metaclass__ attribute (SignalConnectMetaClass) does the rest of
the magic.
""" """
__metaclass__ = SignalConnectMetaClass __metaclass__ = SignalConnectMetaClass
signal = Signal(providing_args=['request']) signal = Signal(providing_args=['request'])
@ -21,7 +23,8 @@ class PersonalInfo(object):
def __init__(self, sender, request, **kwargs): def __init__(self, sender, request, **kwargs):
""" """
Initializes the personal info instance. This is done when the signal is sent. Initializes the personal info instance. This is done when the
signal is sent.
Only the required request argument is used. Because of Django's signal Only the required request argument is used. Because of Django's signal
API, we have to take also a sender argument and wildcard keyword API, we have to take also a sender argument and wildcard keyword
@ -32,8 +35,8 @@ class PersonalInfo(object):
@classmethod @classmethod
def get_dispatch_uid(cls): def get_dispatch_uid(cls):
""" """
Returns the classname as a unique string for each class. Returns None for Returns the classname as a unique string for each class. Returns
the base class so it will not be connected to the signal. None for the base class so it will not be connected to the signal.
""" """
if not cls.__name__ == 'PersonalInfo': if not cls.__name__ == 'PersonalInfo':
return cls.__name__ return cls.__name__

View File

@ -14,13 +14,16 @@ class Widget(object):
Every app which wants to add widgets to the dashboard has to create a Every app which wants to add widgets to the dashboard has to create a
widget class subclassing from this base class. The name attribute has to widget class subclassing from this base class. The name attribute has to
be set. The __metaclass__ attribute (SignalConnectMetaClass) does the be set. It has to be unique. The __metaclass__ attribute
rest of the magic. (SignalConnectMetaClass) does the rest of the magic.
For the appearance of the widget there are some optional attributes like For the appearance of the widget there are some attributes and methods
verbose_name, permission_required, default_column, default_weight, like verbose_name, permission_required, default_column, default_weight,
default_active, template_name, context, icon_css_class, default_active, template_name, context, icon_css_class,
more_link_pattern_name, stylesheets and javascript_files. more_link_pattern_name, stylesheets, javascript_files,
get_verbose_name, check_permission, get_html, get_context_data,
get_icon_css_class, get_url_for_more, get_stylesheets and
get_javascript_files. Most of them are optional.
""" """
__metaclass__ = SignalConnectMetaClass __metaclass__ = SignalConnectMetaClass
signal = Signal(providing_args=['request']) signal = Signal(providing_args=['request'])
@ -58,6 +61,9 @@ class Widget(object):
""" """
Returns the name as a unique string for each class. Returns None for Returns the name as a unique string for each class. Returns None for
the base class so it will not be connected to the signal. the base class so it will not be connected to the signal.
This does not follow the example implementation of
SignalConnectMetaClass, so take care here.
""" """
return cls.name return cls.name