def resolve_cpq_code(cpq_code, cpq_type=CPQType.INVOICE): """Returns the CPQ object (Quote or Invoice) for this `cpq_code` """ check_hash = cpq_code[:CPQ_CHECK_HASH_LENGTH] cpq_code = cpq_code[CPQ_CHECK_HASH_LENGTH:] if is_valid_cpq_code_check_hash(cpq_code, check_hash): if cpq_type == CPQType.INVOICE: CPQModel = resolve_model_dynamically( settings.HTK_CPQ_INVOICE_MODEL) elif cpq_type == CPQType.QUOTE: CPQModel = resolve_model_dynamically(settings.HTK_CPQ_QUOTE_MODEL) elif cpq_type == CPQType.GROUP_QUOTE: CPQModel = resolve_model_dynamically( settings.HTK_CPQ_GROUP_QUOTE_MODEL) else: raise Exception('Bad value for cpq_type') try: padded = base36_to_int(cpq_code) if is_luhn_valid(padded): xored = padded // 10 cpq_id = xored ^ CPQ_XOR_KEY cpq = CPQModel.objects.get(id=cpq_id) else: cpq = None except ValueError: cpq = None except CPQModel.DoesNotExist: cpq = None else: cpq = None return cpq
def resolve_cpq_code(cpq_code, cpq_type=CPQType.INVOICE): """Returns the CPQ object (Quote or Invoice) for this `cpq_code` """ check_hash = cpq_code[:CPQ_CHECK_HASH_LENGTH] cpq_code = cpq_code[CPQ_CHECK_HASH_LENGTH:] if is_valid_cpq_code_check_hash(cpq_code, check_hash): if cpq_type == CPQType.INVOICE: CPQModel = resolve_model_dynamically(settings.HTK_CPQ_INVOICE_MODEL) elif cpq_type == CPQType.QUOTE: CPQModel = resolve_model_dynamically(settings.HTK_CPQ_QUOTE_MODEL) else: raise Exception('Bad value for cpq_type') try: padded = base36_to_int(cpq_code) if is_luhn_valid(padded): xored = padded / 10 cpq_id = xored ^ CPQ_XOR_KEY cpq = CPQModel.objects.get(id=cpq_id) else: cpq = None except ValueError: cpq = None except CPQModel.DoesNotExist: cpq = None else: cpq = None return cpq
def get_stripe_customer_model(): if hasattr(settings, 'HTK_STRIPE_CUSTOMER_MODEL'): from htk.utils.general import resolve_model_dynamically StripeCustomerModel = resolve_model_dynamically(settings.HTK_STRIPE_CUSTOMER_MODEL) else: StripeCustomerModel = None return StripeCustomerModel
def get_organizations(self): from htk.utils.general import resolve_model_dynamically Organization = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_MODEL')) organizations = Organization.objects.filter(members__user=self.user, members__active=True) return organizations
def get_stripe_customer_model(): if hasattr(settings, 'HTK_STRIPE_CUSTOMER_MODEL'): from htk.utils.general import resolve_model_dynamically StripeCustomerModel = resolve_model_dynamically( settings.HTK_STRIPE_CUSTOMER_MODEL) else: StripeCustomerModel = None return StripeCustomerModel
def organizations(self): from htk.utils.general import resolve_model_dynamically Organization = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_MODEL')) organizations = Organization.objects.filter( members__user=self.user, members__active=True).order_by( 'name', 'handle', ).distinct() return organizations
def get_kv_storage_model(): """Gets the key-value storage model class """ model_name = htk_setting('HTK_KV_STORAGE_MODEL', None) if model_name: from htk.utils.general import resolve_model_dynamically KVStorageModel = resolve_model_dynamically(model_name) else: KVStorageModel = None return KVStorageModel
def get_receivables_by_year(year): InvoiceModel = resolve_model_dynamically(settings.HTK_CPQ_INVOICE_MODEL) receivables = InvoiceModel.objects.filter( invoice_type=CPQType.INVOICE.value, date__year=year, paid=True ).order_by( 'date' ) return receivables
def organizations(self): from htk.utils.general import resolve_model_dynamically Organization = resolve_model_dynamically(htk_setting('HTK_ORGANIZATION_MODEL')) organizations = Organization.objects.filter( members__user=self.user, members__active=True ).order_by( 'name', 'handle', ) return organizations
def get_kv_storage_model(namespace=None): """Gets the key-value storage model class """ if namespace is None: namespace = 'default' model_name = htk_setting('HTK_KV_STORAGE_MODELS', {}).get(namespace) if model_name: from htk.utils.general import resolve_model_dynamically KVStorageModel = resolve_model_dynamically(model_name) else: KVStorageModel = None return KVStorageModel
def wrapped_view(request, *args, **kwargs): organization_id = kwargs.get('org_id') Organization = resolve_model_dynamically(htk_setting('HTK_ORGANIZATION_MODEL')) organization = get_object_or_404(Organization, id=organization_id) kwargs['organization'] = organization has_permission = False user = request.user if user.is_authenticated(): if self.role == OrganizationMemberRoles.OWNER: has_permission = organization.has_owner(user) elif self.role == OrganizationMemberRoles.ADMIN: has_permission = organization.has_admin(user) elif self.role == OrganizationMemberRoles.MEMBER: has_permission = organization.has_member(user) if has_permission: response = view_func(request, *args, **kwargs) else: response = HttpResponseForbidden() return response
def wrapped_view(request, *args, **kwargs): organization_id = kwargs.get('org_id') Organization = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_MODEL')) organization = get_object_or_404(Organization, id=organization_id) kwargs['organization'] = organization has_permission = False user = request.user if user.is_authenticated(): if self.role == OrganizationMemberRoles.OWNER: has_permission = organization.has_owner(user) elif self.role == OrganizationMemberRoles.ADMIN: has_permission = organization.has_admin(user) elif self.role == OrganizationMemberRoles.MEMBER: has_permission = organization.has_member(user) if has_permission: response = view_func(request, *args, **kwargs) else: response = HttpResponseForbidden() return response
def resolve_invoice_code(invoice_code): """Returns the Invoice for this `invoice_code` """ check_hash = invoice_code[:INVOICE_CHECK_HASH_LENGTH] invoice_code = invoice_code[INVOICE_CHECK_HASH_LENGTH:] if is_valid_invoice_code_check_hash(invoice_code, check_hash): InvoiceModel = resolve_model_dynamically(settings.HTK_INVOICE_MODEL) try: padded = base36_to_int(invoice_code) if is_luhn_valid(padded): xored = padded / 10 invoice_id = xored ^ INVOICE_XOR_KEY invoice = InvoiceModel.objects.get(id=invoice_id) else: invoice = None except ValueError: invoice = None except InvoiceModel.DoesNotExist: invoice = None else: invoice = None return invoice
def get_invoice_years(): InvoiceModel = resolve_model_dynamically(settings.HTK_CPQ_INVOICE_MODEL) invoice_years = [ d.year for d in InvoiceModel.objects.dates('date', 'year') ] return invoice_years
def get_user_profile_model(): user_profile_model_name = htk_setting("HTK_USER_PROFILE_MODEL") UserProfileModel = resolve_model_dynamically(user_profile_model_name) return UserProfileModel
class HtkOrganizationTeamInline(admin.StackedInline): model = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_TEAM_MODEL')) extra = 0 can_delete = True
class HtkOrganizationTeamMemberPositionInline(admin.TabularInline): model = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_TEAM_MEMBER_POSITION_MODEL')) extra = 0 can_delete = True
class HtkOrganizationInvitationInline(admin.TabularInline): model = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_INVITATION_MODEL')) extra = 0 can_delete = True
class HtkOrganizationAttributeInline(admin.TabularInline): model = resolve_model_dynamically( htk_setting('HTK_ORGANIZATION_ATTRIBUTE_MODEL')) extra = 0 can_delete = True
def get_user_profile_model(): user_profile_model_name = htk_setting('HTK_USER_PROFILE_MODEL') UserProfileModel = resolve_model_dynamically(user_profile_model_name) return UserProfileModel
def get_receivables_by_year(year): InvoiceModel = resolve_model_dynamically(settings.HTK_CPQ_INVOICE_MODEL) receivables = InvoiceModel.objects.filter( invoice_type=CPQType.INVOICE.value, date__year=year, paid=True).order_by('date') return receivables
def get_invoice_years(): InvoiceModel = resolve_model_dynamically(settings.HTK_CPQ_INVOICE_MODEL) invoice_years = [d.year for d in InvoiceModel.objects.dates('date', 'year')] return invoice_years
from django.contrib import admin from htk.utils import htk_setting from htk.utils.general import resolve_model_dynamically InvoiceModel = resolve_model_dynamically(htk_setting('HTK_CPQ_INVOICE_MODEL')) InvoiceLineItemModel = resolve_model_dynamically(htk_setting('HTK_CPQ_INVOICE_LINE_ITEM_MODEL')) QuoteModel = resolve_model_dynamically(htk_setting('HTK_CPQ_QUOTE_MODEL')) QuoteLineItemModel = resolve_model_dynamically(htk_setting('HTK_CPQ_QUOTE_LINE_ITEM_MODEL')) class InvoiceLineItemInline(admin.TabularInline): model = InvoiceLineItemModel extra = 0 can_delete = True class InvoiceAdmin(admin.ModelAdmin): model = InvoiceModel list_display = ( 'id', 'customer', 'notes', 'total', 'date', 'paid', 'invoice_type', 'payment_terms', 'view_invoice_link', ) inlines = (
# Django Imports from django.contrib import admin from django.utils.safestring import mark_safe # HTK Imports from htk.utils import htk_setting from htk.utils.general import resolve_model_dynamically GroupQuoteModel = resolve_model_dynamically( htk_setting('HTK_CPQ_GROUP_QUOTE_MODEL')) GroupQuoteLineItemModel = resolve_model_dynamically( htk_setting('HTK_CPQ_GROUP_QUOTE_LINE_ITEM_MODEL')) InvoiceModel = resolve_model_dynamically(htk_setting('HTK_CPQ_INVOICE_MODEL')) InvoiceLineItemModel = resolve_model_dynamically( htk_setting('HTK_CPQ_INVOICE_LINE_ITEM_MODEL')) QuoteModel = resolve_model_dynamically(htk_setting('HTK_CPQ_QUOTE_MODEL')) QuoteLineItemModel = resolve_model_dynamically( htk_setting('HTK_CPQ_QUOTE_LINE_ITEM_MODEL')) class InvoiceLineItemInline(admin.TabularInline): model = InvoiceLineItemModel extra = 0 can_delete = True class InvoiceAdmin(admin.ModelAdmin): model = InvoiceModel list_display = ( 'id',
def get_translation_model(translation): translations_map = htk_setting('HTK_BIBLE_TRANSLATIONS_MAP') translation_model_class = translations_map.get(translation.upper()) translation_model = (resolve_model_dynamically(translation_model_class) if translation_model_class else None) return translation_model