drip package¶
Subpackages¶
Submodules¶
drip.admin module¶
-
class
drip.admin.DripAdmin(model, admin_site)¶ Bases:
django.contrib.admin.options.ModelAdmin-
add_view(request, extra_context=None)¶
-
av(view)¶
-
build_extra_context(extra_context)¶
-
change_view(request, object_id, extra_context=None)¶
-
get_mime_html(drip, user)¶
-
get_mime_html_from_alternatives(alternatives)¶
-
get_urls()¶
-
inlines= [<class 'drip.admin.QuerySetRuleInline'>]¶
-
list_display= ('name', 'enabled', 'message_class')¶
-
property
media¶
-
timeline(request, drip_id, into_past, into_future)¶ Return a list of people who should get emails.
-
users_fields= []¶
-
view_drip_email(request, drip_id, into_past, into_future, user_id)¶
-
-
class
drip.admin.DripForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None, renderer=None)¶ Bases:
django.forms.models.ModelForm-
property
media¶ Return all media required to render the widgets on this form.
-
property
-
class
drip.admin.QuerySetRuleInline(parent_model, admin_site)¶ Bases:
django.contrib.admin.options.TabularInline-
property
media¶
-
model¶ alias of
drip.models.QuerySetRule
-
property
drip.drips module¶
-
class
drip.drips.DripBase(drip_model, *args, **kwargs)¶ Bases:
objectA base object for defining a Drip.
You can extend this manually, or you can create full querysets and templates from the admin.
-
__init__(drip_model, *args, **kwargs)¶ Initialize self. See help(type(self)) for accurate signature.
-
apply_queryset_rules(qs)¶ First collect all filter/exclude kwargs and apply any annotations. Then apply all filters at once, and all excludes at once.
-
body_template= None¶
-
from_email= None¶
-
from_email_name= None¶
-
get_count_from_queryset(MessageClass)¶
-
get_queryset()¶
-
name= None¶ needs a unique name
-
now()¶ This allows us to override what we consider “now”, making it easy to build timelines of who gets what when.
-
prune()¶ Do an exclude for all Users who have a SentDrip already.
-
queryset()¶ Returns a queryset of auth.User who meet the criteria of the drip.
Alternatively, you could create Drips on the fly using a queryset builder from the admin interface…
-
run()¶ Get the queryset, prune sent people, and send it.
-
send()¶ Send the message to each user on the queryset.
Create SentDrip for each user that gets a message.
Returns count of created SentDrips.
-
subject_template= None¶
-
timedelta(*a, **kw)¶ If needed, this allows us the ability to manipulate the slicing of time.
-
walk(into_past=0, into_future=0)¶ Walk over a date range and create new instances of self with new ranges.
-
-
class
drip.drips.DripMessage(drip_base, user)¶ Bases:
object-
__init__(drip_base, user)¶ Initialize self. See help(type(self)) for accurate signature.
-
property
body¶
-
property
context¶
-
property
from_email¶
-
property
from_email_name¶
-
get_from_()¶
-
property
message¶
-
property
plain¶
-
property
subject¶
-
-
drip.drips.configured_message_classes()¶
-
drip.drips.message_class_for(name)¶
drip.helpers module¶
-
drip.helpers.STRFDATETIME_REPL(x)¶
-
drip.helpers.get_flexible_regex(string)¶
-
drip.helpers.parse(string)¶ Parse a string into a timedelta object.
-
drip.helpers.process_regex(d)¶
-
drip.helpers.process_string(string)¶
drip.models module¶
-
class
drip.models.Drip(id, date, lastchanged, name, enabled, from_email, from_email_name, subject_template, body_html_template, message_class)¶ Bases:
django.db.models.base.Model- Parameters
id (AutoField) – Id
date (DateTimeField) – Date
lastchanged (DateTimeField) – Lastchanged
name (CharField) – Drip name. A unique name for this drip.
enabled (BooleanField) – Enabled
from_email (EmailField) – From email. Set a custom from email.
from_email_name (CharField) – From email name. Set a name for a custom from email.
subject_template (TextField) – Subject template
body_html_template (TextField) – Body html template. You will have settings and user in the context.
message_class (CharField) – Message class
-
exception
DoesNotExist¶ Bases:
django.core.exceptions.ObjectDoesNotExist
-
exception
MultipleObjectsReturned¶ Bases:
django.core.exceptions.MultipleObjectsReturned
-
body_html_template¶ Model field: body html template
-
date¶ Model field: date
-
property
drip¶
-
enabled¶ Model field: enabled
-
from_email¶ Model field: from email
-
from_email_name¶ Model field: from email name
-
get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)¶ Autogenerated: Finds next instance based on
date.
-
get_next_by_lastchanged(*, field=<django.db.models.fields.DateTimeField: lastchanged>, is_next=True, **kwargs)¶ Autogenerated: Finds next instance based on
lastchanged.
-
get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)¶ Autogenerated: Finds previous instance based on
date.
-
get_previous_by_lastchanged(*, field=<django.db.models.fields.DateTimeField: lastchanged>, is_next=False, **kwargs)¶ Autogenerated: Finds previous instance based on
lastchanged.
-
id¶ Model field: ID
-
lastchanged¶ Model field: lastchanged
-
message_class¶ Model field: message class
-
name¶ Model field: Drip Name
-
objects= <django.db.models.manager.Manager object>¶
-
queryset_rules¶ Model field: drip, accesses the M2M
QuerySetRulemodel.
-
subject_template¶ Model field: subject template
-
class
drip.models.QuerySetRule(id, date, lastchanged, drip, method_type, field_name, lookup_type, field_value)¶ Bases:
django.db.models.base.Model- Parameters
id (AutoField) – Id
date (DateTimeField) – Date
lastchanged (DateTimeField) – Lastchanged
drip (ForeignKey to
Drip) – Dripmethod_type (CharField) – Method type
field_name (CharField) – Field name of user
lookup_type (CharField) – Lookup type
field_value (CharField) – Field value. Can be anything from a number, to a string. Or, do now-7 days or today+3 days for fancy timedelta.
-
exception
DoesNotExist¶ Bases:
django.core.exceptions.ObjectDoesNotExist
-
exception
MultipleObjectsReturned¶ Bases:
django.core.exceptions.MultipleObjectsReturned
-
property
annotated_field_name¶
-
apply(qs, now=<built-in method now of type object>)¶
-
apply_any_annotation(qs)¶
-
clean()¶ Hook for doing any extra model-wide validation after clean() has been called on every field by self.clean_fields. Any ValidationError raised by this method will not be associated with a particular field; it will have a special-case association with the field defined by NON_FIELD_ERRORS.
-
date¶ Model field: date
-
drip_id¶ Model field: drip
-
field_name¶ Model field: Field name of User
-
field_value¶ Model field: field value
-
filter_kwargs(qs, now=<built-in method now of type object>)¶
-
get_lookup_type_display(*, field=<django.db.models.fields.CharField: lookup_type>)¶ Autogenerated: Shows the label of the
lookup_type
-
get_method_type_display(*, field=<django.db.models.fields.CharField: method_type>)¶ Autogenerated: Shows the label of the
method_type
-
get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)¶ Autogenerated: Finds next instance based on
date.
-
get_next_by_lastchanged(*, field=<django.db.models.fields.DateTimeField: lastchanged>, is_next=True, **kwargs)¶ Autogenerated: Finds next instance based on
lastchanged.
-
get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)¶ Autogenerated: Finds previous instance based on
date.
-
get_previous_by_lastchanged(*, field=<django.db.models.fields.DateTimeField: lastchanged>, is_next=False, **kwargs)¶ Autogenerated: Finds previous instance based on
lastchanged.
-
id¶ Model field: ID
-
lastchanged¶ Model field: lastchanged
-
lookup_type¶ Model field: lookup type
-
method_type¶ Model field: method type
-
objects= <django.db.models.manager.Manager object>¶
-
set_booleans(field_value)¶
-
set_f_expressions(field_value)¶
-
set_time_deltas_and_dates(now, field_value)¶
-
class
drip.models.SentDrip(*args, **kwargs)¶ Bases:
django.db.models.base.ModelKeeps a record of all sent drips.
- Parameters
id (AutoField) – Id
date (DateTimeField) – Date
drip (ForeignKey to
Drip) – Dripuser (ForeignKey to
User) – Usersubject (TextField) – Subject
body (TextField) – Body
from_email (EmailField) – From email
from_email_name (CharField) – From email name
-
exception
DoesNotExist¶ Bases:
django.core.exceptions.ObjectDoesNotExist
-
exception
MultipleObjectsReturned¶ Bases:
django.core.exceptions.MultipleObjectsReturned
-
body¶ Model field: body
-
date¶ Model field: date
-
drip_id¶ Model field: drip
-
from_email¶ Model field: from email
-
from_email_name¶ Model field: from email name
-
get_next_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=True, **kwargs)¶ Autogenerated: Finds next instance based on
date.
-
get_previous_by_date(*, field=<django.db.models.fields.DateTimeField: date>, is_next=False, **kwargs)¶ Autogenerated: Finds previous instance based on
date.
-
id¶ Model field: ID
-
objects= <django.db.models.manager.Manager object>¶
-
subject¶ Model field: subject
-
user¶ Model field: user, accesses the
Usermodel.
-
user_id¶ Model field: user
drip.tests module¶
drip.utils module¶
-
drip.utils.check_redundant(model_stack, stack_limit)¶
-
drip.utils.get_field_name(field, RelatedObject)¶
-
drip.utils.get_fields(Model, parent_field='', model_stack=[], stack_limit=2, excludes=['permissions', 'comment', 'content_type'])¶ Given a Model, return a list of lists of strings with important stuff: … [‘test_user__user__customuser’, ‘customuser’, ‘User’, ‘RelatedObject’] [‘test_user__unique_id’, ‘unique_id’, ‘TestUser’, ‘CharField’] [‘test_user__confirmed’, ‘confirmed’, ‘TestUser’, ‘BooleanField’] …
-
drip.utils.get_full_field(parent_field, field_name)¶
-
drip.utils.get_out_fields(Model, parent_field, model_stack, excludes, fields)¶
-
drip.utils.get_rel_model(field, RelatedObject)¶
-
drip.utils.get_simple_fields(Model, **kwargs)¶
-
drip.utils.get_user_model()¶
-
drip.utils.give_model_field(full_field, Model)¶ Given a field_name and Model:
“test_user__unique_id”, <AchievedGoal>
Returns “test_user__unique_id”, “id”, <Model>, <ModelField>
-
drip.utils.is_valid_instance(field)¶