def get_model(self, item_type): models = htk_setting('HTK_SHOPIFY_SQL_MODELS') model_cls = models[item_type] from htk.utils import resolve_model_dynamically model = resolve_model_dynamically(model_cls) return model
def ready(self): GroupQuoteModel = resolve_model_dynamically( htk_setting('HTK_CPQ_GROUP_QUOTE_MODEL')) ## # signals signals.post_save.connect(sync_group_sub_quotes, sender=GroupQuoteModel)
def get_charges(self): """Get charges made on this Invoice """ payment = self.get_payment() stripe_customer_id = payment['stripe_customer'] StripeCustomerModel = resolve_model_dynamically(htk_setting('HTK_STRIPE_CUSTOMER_MODEL')) stripe_customer = StripeCustomerModel.objects.get(id=stripe_customer_id) charges = stripe_customer.get_charges() return charges
def create_invoice_for_payment(self, stripe_customer, line_items): """Creates an invoice for this Quote with successful payment by `stripe_customer` for `line_items` """ InvoiceModel = resolve_model_dynamically( htk_setting('HTK_CPQ_INVOICE_MODEL')) invoice = InvoiceModel.objects.create(date=utcnow(), customer=self.customer, paid=True, quote=self) invoice.record_payment(stripe_customer, line_items)
class Meta: model = resolve_model_dynamically( htk_setting('HTK_POSTAL_ADDRESS_MODEL')) exclude = ( 'latitude', 'longitude', 'street_number', 'street_name', 'unit_type', 'unit', )
def create_invoice_for_payment(self, stripe_customer, line_items): """Creates an invoice for this Quote with successful payment by `stripe_customer` for `line_items` """ InvoiceModel = resolve_model_dynamically(htk_setting('HTK_CPQ_INVOICE_MODEL')) invoice = InvoiceModel.objects.create( date=utcnow(), customer=self.customer, paid=True, quote=self ) invoice.record_payment(stripe_customer, line_items)
def get_charges(self): """Get charges made on this Invoice """ payment = self.get_payment() if payment: stripe_customer_id = payment['stripe_customer'] StripeCustomerModel = resolve_model_dynamically(htk_setting('HTK_STRIPE_CUSTOMER_MODEL')) stripe_customer = StripeCustomerModel.objects.get(id=stripe_customer_id) charges = stripe_customer.get_charges() else: charges = None return charges
def get_organization_customer_choices(): OrganizationCustomerModel = resolve_model_dynamically( htk_setting('HTK_CPQ_ORGANIZATION_CUSTOMER_MODEL')) choices = [( '', 'Select an Organization Customer', )] choices += [( org.id, org, ) for org in OrganizationCustomerModel.objects.all()] return choices
def get_admin_urls(): from htk.apps.cpq.constants.general import CPQ_APP_MODEL_NAMES admin_urls = [] app_label = htk_setting('HTK_DEFAULT_APP_LABEL') for app_model_name in CPQ_APP_MODEL_NAMES: app_model = resolve_model_dynamically('%s.%s' % (app_label, app_model_name,)) admin_url = { 'url' : reverse('admin:%s_%s_changelist' % (app_label, app_model_name,)), 'add_url' : reverse('admin:%s_%s_add' % (app_label, app_model_name,)), 'name' : app_model._meta.verbose_name_plural.title(), } admin_urls.append(admin_url) return admin_urls
def sync_group_sub_quotes(sender, instance, created, **kwargs): """signal handler for GroupQuote post-save """ if created: QuoteModel = resolve_model_dynamically( htk_setting('HTK_CPQ_QUOTE_MODEL')) group_quote = instance members = group_quote.organization.members.all() quotes = [ QuoteModel(customer=member, group_quote=group_quote, date=group_quote.date) for member in members ] QuoteModel.objects.bulk_create(quotes)
def sync_group_sub_quotes(sender, instance, created, **kwargs): """signal handler for GroupQuote post-save """ if created: QuoteModel = resolve_model_dynamically(htk_setting('HTK_CPQ_QUOTE_MODEL')) group_quote = instance members = group_quote.organization.members.all() quotes = [ QuoteModel( customer=member, group_quote=group_quote, date=group_quote.date ) for member in members ] QuoteModel.objects.bulk_create(quotes)
def clean_organization_customer(self): organization_customer = None organization_customer_id = self.cleaned_data['organization_customer'] if organization_customer_id: OrganizationCustomerModel = resolve_model_dynamically(htk_setting('HTK_CPQ_ORGANIZATION_CUSTOMER_MODEL')) try: organization_customer = OrganizationCustomerModel.objects.get(id=organization_customer_id) except OrganizationCustomerModel.DoesNotExist: pass if organization_customer is None: raise forms.ValidationError('Could not find organization') elif organization_customer.members.exists(): raise forms.ValidationError('Organization already has members. Importing is not allowed, as it would overwrite existing members. To re-import, delete existing members first.') self.organization_customer = organization_customer return organization_customer
def get_bible_book_model(): model_name = htk_setting('HTK_BIBLE_BOOK_MODEL') bible_book_model = resolve_model_dynamically(model_name) return bible_book_model
def get_organization_customer_choices(): OrganizationCustomerModel = resolve_model_dynamically(htk_setting('HTK_CPQ_ORGANIZATION_CUSTOMER_MODEL')) choices = [('', 'Select an Organization Customer',)] choices += [(org.id, org,) for org in OrganizationCustomerModel.objects.all()] return choices
def get_bible_passage_model(): model_name = htk_setting('HTK_BIBLE_PASSAGE_MODEL') bible_passage_model = resolve_model_dynamically(model_name) return bible_passage_model
def get_bible_chapter_model(): model_name = htk_setting('HTK_BIBLE_CHAPTER_MODEL') bible_chapter_model = resolve_model_dynamically(model_name) return bible_chapter_model
# Python Standard Library Imports from itertools import chain # HTK Imports from htk.sitemaps import HtkBaseSitemap from htk.utils import htk_setting from htk.utils import resolve_model_dynamically Product = resolve_model_dynamically(htk_setting('HTK_STORE_PRODUCT_MODEL')) ProductCollection = resolve_model_dynamically( htk_setting('HTK_STORE_PRODUCT_COLLECTION_MODEL')) class HtkStoreSitemap(HtkBaseSitemap): priority = 0.5 changefreq = 'daily' def get_static_view_names(self): static_view_names = [ 'store', 'store_collections', 'store_products', ] return static_view_names def get_model_instances(self): products = Product.objects.all() product_collections = ProductCollection.objects.all() _instances = chain( products, product_collections,
def get_bible_verse_model(): model_name = htk_setting('HTK_BIBLE_VERSE_MODEL') bible_verse_model = resolve_model_dynamically(model_name) return bible_verse_model
def get_token_model(): Token = resolve_model_dynamically(htk_setting('HTK_TOKEN_MODEL')) return Token
def get_feature_flag_model(): FeatureFlag = resolve_model_dynamically( htk_setting('HTK_FEATURE_FLAG_MODEL')) return FeatureFlag
def ready(self): GroupQuoteModel = resolve_model_dynamically(htk_setting('HTK_CPQ_GROUP_QUOTE_MODEL')) ## # signals signals.post_save.connect(sync_group_sub_quotes, sender=GroupQuoteModel)
def get_model_organization_member(): OrganizationMember = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_MEMBER_MODEL')) return OrganizationMember
from django.contrib.auth.decorators import login_required from django.core.urlresolvers import reverse from django.http import Http404 from django.shortcuts import redirect from htk.decorators.classes import restful_obj_seo_redirect from htk.utils import htk_setting from htk.utils import resolve_model_dynamically from htk.utils.templates import get_renderer from htk.utils.templates import get_template_context_generator from htk.view_helpers import add_page_title from htk.view_helpers import render_to_response_custom as _r from htk.view_helpers import wrap_data as htk_wrap_data Product = resolve_model_dynamically(htk_setting('HTK_STORE_PRODUCT_MODEL')) ProductCollection = resolve_model_dynamically(htk_setting('HTK_STORE_PRODUCT_COLLECTION_MODEL')) def index(request): renderer = get_renderer() wrap_data = get_template_context_generator() data = wrap_data(request) data['product_collections'] = ProductCollection.objects.all() response = renderer('store/index.html', data) return response def product_collections(request): renderer = get_renderer() wrap_data = get_template_context_generator() data = wrap_data(request) data['product_collections'] = ProductCollection.objects.all() response = renderer('store/collections.html', data)
def get_bible_chapter_model(): model_name = htk_setting('HTK_BIBLE_CHAPTER_MODEL') bible_chapter_model = resolve_model_dynamically(model_name) return bible_chapter_model
def get_bible_passage_model(): model_name = htk_setting('HTK_BIBLE_PASSAGE_MODEL') bible_passage_model = resolve_model_dynamically(model_name) return bible_passage_model
import pytz from django import forms from django.conf import settings from htk.apps.accounts.utils import associate_user_email from htk.apps.accounts.utils import get_user_by_email from htk.forms.utils import set_input_attrs from htk.forms.utils import set_input_placeholder_labels from htk.session_keys import * from htk.utils import htk_setting from htk.utils import resolve_model_dynamically UserProfile = resolve_model_dynamically(settings.AUTH_PROFILE_MODULE) class AddEmailForm(forms.Form): email = forms.EmailField(label='Email') def __init__(self, user=None, *args, **kwargs): super(AddEmailForm, self).__init__(*args, **kwargs) self.user = user set_input_attrs(self) set_input_placeholder_labels(self) def clean_email(self): email = self.cleaned_data['email'] user = get_user_by_email(email) if user is None: self.email = email else: raise forms.ValidationError('This email is already registered')
class Meta: model = resolve_model_dynamically(htk_setting('HTK_CPQ_CUSTOMER_MODEL')) exclude = ()
def init_model(self, module_str): model = resolve_model_dynamically(module_str) assert model is not None self.model = model
def get_bible_book_model(): model_name = htk_setting('HTK_BIBLE_BOOK_MODEL') bible_book_model = resolve_model_dynamically(model_name) return bible_book_model
from django.conf import settings from django.contrib.auth import get_user_model from django.contrib.auth.forms import SetPasswordForm # HTK Imports from htk.apps.accounts.emails import password_changed_email from htk.forms import AbstractModelInstanceUpdateForm from htk.forms.utils import set_input_attrs from htk.forms.utils import set_input_placeholder_labels from htk.utils import htk_setting from htk.utils import resolve_model_dynamically from htk.utils.geo import get_us_state_abbreviation_choices UserModel = get_user_model() UserProfile = resolve_model_dynamically(settings.AUTH_PROFILE_MODULE) class UserUpdateForm(AbstractModelInstanceUpdateForm): class Meta: model = UserModel exclude = ( # these fields should never be manipultated from this form 'email', # managed by UserEmail objects 'password', ) help_texts = { 'username' : htk_setting('HTK_USERNAME_HELP_TEXT'), }