|
# -*- coding: utf-8 -*-
from djadmin import ChangeOnlyModelAdmin, ReadOnlyModelAdmin
from django.contrib import admin
from django.db import transaction
from django_curtail_uuid import CurtailUUID
from account.models import (FranchiserInfo, LensmanIncomeExpensesInfo, LensmanInfo, SaleclerkInfo, TourGuideInfo,
UserIncomeExpensesInfo, UserInfo)
class LensmanInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
exclude = ('username', 'password', 'encryption')
list_display = ('lensman_id', 'unionid', 'username', 'name', 'sex', 'phone', 'location', 'proportion', 'nomark', 'origin', 'balance', 'user_status', 'outtake_status', 'status', 'created_at', 'updated_at')
list_filter = ('is_common_lensman', 'is_outtake_lensman', 'sex', 'user_status', 'outtake_status', 'status')
readonly_fields = ('lensman_id', )
search_fields = ('lensman_id', 'name', 'phone', 'location')
@transaction.atomic
def save_model(self, request, obj, form, change):
obj.save()
if not obj.lensman_id:
try:
user_id = UserInfo.objects.select_for_update().get(unionid=obj.unionid).user_id
except UserInfo.DoesNotExist:
user_id = None
obj.lensman_id = user_id or CurtailUUID.uuid(UserInfo, 'user_id')
obj.save()
fields = {
'user_from': UserInfo.LENSMAN_USER,
'unionid': obj.unionid,
'name': obj.name,
'sex': obj.sex,
'phone': obj.phone,
'location': obj.location,
'islensman': True,
'user_status': obj.user_status,
'outtake_status': obj.outtake_status,
'is_common_lensman': obj.is_common_lensman,
'is_outtake_lensman': obj.is_outtake_lensman,
}
user, created = UserInfo.objects.get_or_create(user_id=obj.lensman_id, defaults=fields)
if not created:
fields.pop('user_from', None)
for key, value in fields.iteritems():
setattr(user, key, value)
user.save()
class LensmanIncomeExpensesInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
list_display = ('lensman_id', 'photo_id', 'type', 'amount', 'balance', 'remark', 'status', 'created_at', 'updated_at')
list_filter = ('type', 'status')
class TourGuideInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
list_display = ('tourguide_id', 'unionid', 'name', 'sex', 'phone', 'location', 'no', 'user_status', 'status', 'created_at', 'updated_at')
list_filter = ('sex', 'user_status', 'status')
readonly_fields = ('tourguide_id', )
search_fields = ('tourguide_id', 'name', 'phone', 'location', 'no')
@transaction.atomic
def save_model(self, request, obj, form, change):
if not obj.tourguide_id:
try:
user_id = UserInfo.objects.select_for_update().get(unionid=obj.unionid).user_id
except UserInfo.DoesNotExist:
user_id = None
obj.tourguide_id = user_id or CurtailUUID.uuid(UserInfo, 'user_id')
obj.save()
fields = {
'user_from': UserInfo.TOURGUIDE_USER,
'unionid': obj.unionid,
'name': obj.name,
'sex': obj.sex,
'phone': obj.phone,
'location': obj.location,
'istourguide': True,
'user_status': obj.user_status,
'outtake_status': obj.outtake_status,
}
user, created = UserInfo.objects.get_or_create(user_id=obj.tourguide_id, defaults=fields)
if not created:
fields.pop('user_from', None)
for key, value in fields.iteritems():
setattr(user, key, value)
user.save()
class UserInfoAdmin(ChangeOnlyModelAdmin, admin.ModelAdmin):
list_display = ('user_id', 'user_from', 'username', 'openid', 'unionid', 'name', 'sex', 'nickname', 'phone', 'location', 'islensman', 'istourguide', 'balance', 'user_status', 'outtake_status', 'status', 'created_at', 'updated_at')
list_filter = ('user_from', 'sex', 'islensman', 'istourguide', 'user_status', 'outtake_status', 'status')
readonly_fields = ('user_id', )
search_fields = ('user_id', 'name', 'phone', 'location')
class UserIncomeExpensesInfoAdmin(ReadOnlyModelAdmin, admin.ModelAdmin):
list_display = ('user_id', 'photo_id', 'type', 'amount', 'balance', 'remark', 'status', 'created_at', 'updated_at')
list_filter = ('type', 'status')
class FranchiserInfoAdmin(admin.ModelAdmin):
readonly_fields = ('franchiser_id', )
list_display = ('franchiser_id', 'franchiser_name', 'franchiser_addr', 'franchiser_phone', 'franchiser_boss_name', 'franchiser_boss_phone', 'status', 'created_at', 'updated_at')
search_fields = ('franchiser_id', 'franchiser_name', 'franchiser_addr', 'franchiser_phone', 'franchiser_boss_name', 'franchiser_boss_phone')
list_filter = ('status', )
class SaleclerkInfoAdmin(admin.ModelAdmin):
readonly_fields = ('franchiser_id', )
list_display = ('franchiser_id', 'clerk_id', 'clerk_name', 'clerk_sex', 'clerk_phone', 'user_status', 'status', 'created_at', 'updated_at')
search_fields = ('franchiser_id', 'clerk_id', 'clerk_name', 'clerk_phone')
list_filter = ('user_status', 'status')
# admin.site.register(LensmanInfo, LensmanInfoAdmin)
# admin.site.register(LensmanIncomeExpensesInfo, LensmanIncomeExpensesInfoAdmin)
# admin.site.register(TourGuideInfo, TourGuideInfoAdmin)
admin.site.register(UserInfo, UserInfoAdmin)
# admin.site.register(UserIncomeExpensesInfo, UserIncomeExpensesInfoAdmin)
admin.site.register(FranchiserInfo, FranchiserInfoAdmin)
admin.site.register(SaleclerkInfo, SaleclerkInfoAdmin)
|