Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
wbcrm / crm / admin.py
Size: Mime:
from django.contrib import admin
from django.contrib.auth import get_user_model
from fsm_admin.mixins import FSMTransitionMixin
from .models import activities, contacts, dynamic_fields, entries, entry_fields, in_charge_entries


admin.site.register(activities.ActivityType)
admin.site.register(dynamic_fields.DynamicCharField)
admin.site.register(dynamic_fields.DynamicRangeField)
admin.site.register(dynamic_fields.DynamicChoiceField)
admin.site.register(entry_fields.CompanyType)
admin.site.register(entry_fields.EntryStatus)
admin.site.register(entry_fields.PersonPrefix)
admin.site.register(entry_fields.Tag)


class AddressContactInline(admin.StackedInline):
    model = contacts.AddressContact
    extra = 0


class BankingContactInline(admin.StackedInline):
    model = contacts.BankingContact
    extra = 0


class EmailContactInline(admin.StackedInline):
    model = contacts.EmailContact
    extra = 0


class TelephoneContactInline(admin.StackedInline):
    model = contacts.TelephoneContact
    extra = 0


class WebsiteContactInline(admin.StackedInline):
    model = contacts.WebsiteContact
    extra = 0


class ActivityInline(admin.StackedInline):
    model = activities.Activity
    extra = 0
    fieldsets = (
        ('Main information', {'fields': ('title', 'description',)}),
    )


# class UserModelInline(admin.StackedInline):
#     model = get_user_model()
#     extra = 0
#     fieldsets = (
#         ('Main information', {'fields': ('first_name', 'last_name', 'email', 'username')}),
#     )


class EmployeesInline(admin.StackedInline):
    model = entries.Person
    fk_name = 'employer'
    extra = 0
    fieldsets = (
        ('Main information', {'fields': ('first_name', 'last_name',)}),
    )


@admin.register(entries.Company)
class CompanyAdmin(admin.ModelAdmin):
    search_fields = ('title',)
    list_display = ('title',)
    fieldsets = (
        ('Main information', {'fields': ('title', 'in_charge')}),
        ('Additional Fields', {'fields': ('additional_fields',)}),
        ('System-Files', {'fields': ('profile_image',)}),
    )
    raw_id_fields = (
        'in_charge',
    )
    inlines = [
        EmployeesInline,
        AddressContactInline,
        BankingContactInline,
        EmailContactInline,
        TelephoneContactInline,
        WebsiteContactInline,
    ]


@admin.register(entries.Person)
class PersonAdmin(admin.ModelAdmin):
    search_fields = ('first_name', 'last_name')
    list_display = ('first_name', 'last_name', 'employer',)
    fieldsets = (
        ('Main information', {'fields': ('first_name', 'last_name',)}),
        ('Work Fields', {'fields': ('employer', 'head')}),
        ('Additional Fields', {'fields': ('additional_fields',)}),
        ('Misc.', {'fields': ('birthday', 'in_charge')}),
        ('System-Files', {'fields': ('profile_image', 'signature',)}),
    )
    raw_id_fields = (
        'employer',
        'in_charge',
    )
    inlines = [
        AddressContactInline,
        BankingContactInline,
        EmailContactInline,
        TelephoneContactInline,
        WebsiteContactInline,
    ]


@admin.register(entries.Entry)
class EntryAdmin(admin.ModelAdmin):
    search_fields = ('search_name',)
    list_display = ('search_name', 'entry_type')
    fieldsets = (
        ('Main information', {'fields': ('search_name',)}),
    )


@admin.register(activities.Activity)
class ActivityAdmin(FSMTransitionMixin, admin.ModelAdmin):
    search_fields = ('title',)
    list_display = ('status','title', 'start', 'end', 'reminder')
    fieldsets = (
        ('Main information', {'fields': ('title', 'description', 'result')}),
        ('Meta', {'fields': ('status', 'type')}),
        ('Temporal Information', {'fields': ('due', 'start', 'end', 'reminder', 'duration', 'all_day')}),
        ('Unplanned Temporal Information', {'fields': ('unplanned_year', 'unplanned_quarter', 'unplanned_month', 'unplanned_week', 'unplanned_day', 'unplanned_week_day')}),
        ('Geographical Information', {'fields': ('location', 'location_longitude', 'location_latitude')}),
        ('Linked Entries', {'fields': ('assigned_to', 'participants',)}),
        ('Linked Activities', {'fields': ('preceded_by',)}),
        ('Reoccurance', {'fields': ('reoccurance_rule',)}),
    )

    raw_id_fields = (
        'assigned_to',
        'participants',
        'preceded_by',
    )

    inlines = [
        ActivityInline,
    ]

    fsm_field = ['status', ]

@admin.register(activities.ActivityReoccuranceRule)
class ActivityReoccuranceRuleAdmin(admin.ModelAdmin):
    fieldsets = (
        ('Information', {'fields': ('start','end','reoccurance')}),
        ('Activity Information', {'fields': ('activity_title','activity_description', 'activity_type', 'activity_assigned_to','activity_participants','activity_start','activity_end','activity_reminder')}),
    )
    raw_id_fields = (
        'activity_assigned_to',
        'activity_participants',
    )