完善Bug 和 普通用户 所有网站的视图
This commit is contained in:
parent
5235fe1e77
commit
5474141c26
@ -5,8 +5,11 @@ from .models import User
|
|||||||
|
|
||||||
@admin.register(User)
|
@admin.register(User)
|
||||||
class UserAdmin(DefaultUserAdmin):
|
class UserAdmin(DefaultUserAdmin):
|
||||||
list_display = ("username", "email", "role", "is_active", "is_staff", "last_login")
|
list_display = ("username", "email", "role", "source_manager", "is_active", "is_staff", "last_login")
|
||||||
list_filter = ("role", "is_active", "is_staff", "is_superuser")
|
list_filter = ("role", "is_active", "is_staff", "is_superuser")
|
||||||
|
search_fields = ("username", "email")
|
||||||
fieldsets = DefaultUserAdmin.fieldsets + (
|
fieldsets = DefaultUserAdmin.fieldsets + (
|
||||||
("角色权限", {"fields": ("role",)}),
|
("角色权限", {"fields": ("role", "source_manager")}),
|
||||||
|
("网站权限", {"fields": ("managed_websites", "authorized_websites")}),
|
||||||
)
|
)
|
||||||
|
filter_horizontal = ("groups", "user_permissions", "managed_websites", "authorized_websites")
|
||||||
|
@ -15,26 +15,31 @@ def register(
|
|||||||
username: str = Form(...),
|
username: str = Form(...),
|
||||||
password: str = Form(...),
|
password: str = Form(...),
|
||||||
email: str = Form(...),
|
email: str = Form(...),
|
||||||
code: str = Form(None)
|
code: str = Form(...)
|
||||||
):
|
):
|
||||||
if User.objects.filter(username=username).exists():
|
if User.objects.filter(username=username).exists():
|
||||||
return {"success": False, "message": "用户名已存在"}
|
return {"success": False, "message": "用户名已存在"}
|
||||||
|
|
||||||
user = User(username=username, email=email, role="user")
|
|
||||||
user.set_password(password)
|
|
||||||
user.save()
|
|
||||||
|
|
||||||
if code:
|
|
||||||
try:
|
try:
|
||||||
reg = RegistrationCode.objects.get(code=code)
|
reg = RegistrationCode.objects.get(code=code)
|
||||||
if not reg.is_available():
|
if not reg.is_available():
|
||||||
return {"success": False, "message": "注册码已达使用上限"}
|
return {"success": False, "message": "注册码已达使用上限"}
|
||||||
user.authorized_websites.set(reg.manager.managed_websites.all())
|
|
||||||
reg.used_count += 1
|
|
||||||
reg.save()
|
|
||||||
except RegistrationCode.DoesNotExist:
|
except RegistrationCode.DoesNotExist:
|
||||||
return {"success": False, "message": "注册码无效"}
|
return {"success": False, "message": "注册码无效"}
|
||||||
|
|
||||||
|
user = User(
|
||||||
|
username=username,
|
||||||
|
email=email,
|
||||||
|
role="user",
|
||||||
|
source_manager=reg.manager
|
||||||
|
)
|
||||||
|
user.set_password(password)
|
||||||
|
user.save()
|
||||||
|
|
||||||
|
reg.used_count += 1
|
||||||
|
reg.save()
|
||||||
|
RegistrationCode.objects.create(code=reg, user=user)
|
||||||
|
|
||||||
refresh = RefreshToken.for_user(user)
|
refresh = RefreshToken.for_user(user)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@ -51,6 +56,7 @@ def register(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@auth_router.post("/login")
|
@auth_router.post("/login")
|
||||||
def login(
|
def login(
|
||||||
request,
|
request,
|
||||||
|
@ -117,13 +117,20 @@ def approve_request(request, request_id: int = Query(...), approve: bool = Query
|
|||||||
|
|
||||||
@router.get("/my-sites", auth=jwt_auth)
|
@router.get("/my-sites", auth=jwt_auth)
|
||||||
@login_required
|
@login_required
|
||||||
def list_my_authorized_websites(request):
|
def list_user_manager_websites(request):
|
||||||
user = request.user
|
user = request.user
|
||||||
sites = user.authorized_websites.all().values("id", "name", "db_alias")
|
|
||||||
|
if not user.is_user():
|
||||||
|
return {"success": False, "message": "仅普通用户可申请网站"}
|
||||||
|
|
||||||
|
if not user.source_manager:
|
||||||
|
return {"success": False, "message": "您尚未绑定所属分管理,无法申请网站"}
|
||||||
|
|
||||||
|
sites = user.source_manager.managed_websites.all().values("id", "name", "db_alias")
|
||||||
return {"success": True, "websites": list(sites)}
|
return {"success": True, "websites": list(sites)}
|
||||||
|
|
||||||
|
|
||||||
@router.get("/public-sites")
|
@router.get("/public-sites")
|
||||||
def list_public_websites(request):
|
def list_public_websites(request):
|
||||||
websites = Website.objects.all().values("id", "name", "db_alias", "description")
|
websites = Website.objects.all().values("id", "name")
|
||||||
return {"success": True, "websites": list(websites)}
|
return {"success": True, "websites": list(websites)}
|
||||||
|
@ -21,6 +21,15 @@ class User(AbstractUser):
|
|||||||
related_name="authorized_users",
|
related_name="authorized_users",
|
||||||
help_text="普通用户被授权可访问的网站"
|
help_text="普通用户被授权可访问的网站"
|
||||||
)
|
)
|
||||||
|
source_manager = models.ForeignKey(
|
||||||
|
"self",
|
||||||
|
null=True,
|
||||||
|
blank=True,
|
||||||
|
on_delete=models.SET_NULL,
|
||||||
|
related_name="brought_users",
|
||||||
|
limit_choices_to={"role": "manager"},
|
||||||
|
verbose_name="所属分管理"
|
||||||
|
)
|
||||||
def is_admin(self):
|
def is_admin(self):
|
||||||
return self.role == 'admin'
|
return self.role == 'admin'
|
||||||
|
|
||||||
|
@ -9,3 +9,18 @@ class ResumeDetailInline(admin.StackedInline):
|
|||||||
class ResumeDetailAdmin(admin.ModelAdmin):
|
class ResumeDetailAdmin(admin.ModelAdmin):
|
||||||
list_display = ("resume", "phone", "updated_at")
|
list_display = ("resume", "phone", "updated_at")
|
||||||
search_fields = ("resume__name", "phone")
|
search_fields = ("resume__name", "phone")
|
||||||
|
|
||||||
|
@admin.register(ResumeBasic)
|
||||||
|
class ResumeBasicAdmin(admin.ModelAdmin):
|
||||||
|
list_display = (
|
||||||
|
'resume_id', 'name', 'age', 'gender', 'job_status', 'education',
|
||||||
|
'expected_position', 'last_active_time', 'update_time'
|
||||||
|
)
|
||||||
|
search_fields = ('name', 'phone', 'resume_id')
|
||||||
|
list_filter = ('job_status', 'gender', 'education', 'highest_education', 'source')
|
||||||
|
ordering = ('-update_time',)
|
||||||
|
|
||||||
|
@admin.display(description='数据来源')
|
||||||
|
def source_name(self, obj):
|
||||||
|
print(obj.source.name)
|
||||||
|
return obj.source.name if obj.source else "-"
|
@ -7,6 +7,9 @@ class Website(models.Model):
|
|||||||
db_alias = models.CharField(max_length=50, unique=True, verbose_name="数据库别名")
|
db_alias = models.CharField(max_length=50, unique=True, verbose_name="数据库别名")
|
||||||
description = models.TextField(blank=True, verbose_name="描述")
|
description = models.TextField(blank=True, verbose_name="描述")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "网站"
|
verbose_name = "网站"
|
||||||
verbose_name_plural = "网站列表"
|
verbose_name_plural = "网站列表"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user