完善Bug 和 普通用户 所有网站的视图
This commit is contained in:
parent
5235fe1e77
commit
5474141c26
@ -5,8 +5,11 @@ from .models import User
|
||||
|
||||
@admin.register(User)
|
||||
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")
|
||||
search_fields = ("username", "email")
|
||||
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(...),
|
||||
password: str = Form(...),
|
||||
email: str = Form(...),
|
||||
code: str = Form(None)
|
||||
code: str = Form(...)
|
||||
):
|
||||
if User.objects.filter(username=username).exists():
|
||||
return {"success": False, "message": "用户名已存在"}
|
||||
|
||||
user = User(username=username, email=email, role="user")
|
||||
user.set_password(password)
|
||||
user.save()
|
||||
|
||||
if code:
|
||||
try:
|
||||
reg = RegistrationCode.objects.get(code=code)
|
||||
if not reg.is_available():
|
||||
return {"success": False, "message": "注册码已达使用上限"}
|
||||
user.authorized_websites.set(reg.manager.managed_websites.all())
|
||||
reg.used_count += 1
|
||||
reg.save()
|
||||
except RegistrationCode.DoesNotExist:
|
||||
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)
|
||||
|
||||
return {
|
||||
@ -51,6 +56,7 @@ def register(
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@auth_router.post("/login")
|
||||
def login(
|
||||
request,
|
||||
|
@ -117,13 +117,20 @@ def approve_request(request, request_id: int = Query(...), approve: bool = Query
|
||||
|
||||
@router.get("/my-sites", auth=jwt_auth)
|
||||
@login_required
|
||||
def list_my_authorized_websites(request):
|
||||
def list_user_manager_websites(request):
|
||||
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)}
|
||||
|
||||
|
||||
@router.get("/public-sites")
|
||||
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)}
|
||||
|
@ -21,6 +21,15 @@ class User(AbstractUser):
|
||||
related_name="authorized_users",
|
||||
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):
|
||||
return self.role == 'admin'
|
||||
|
||||
|
@ -9,3 +9,18 @@ class ResumeDetailInline(admin.StackedInline):
|
||||
class ResumeDetailAdmin(admin.ModelAdmin):
|
||||
list_display = ("resume", "phone", "updated_at")
|
||||
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="数据库别名")
|
||||
description = models.TextField(blank=True, verbose_name="描述")
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = "网站"
|
||||
verbose_name_plural = "网站列表"
|
||||
|
Loading…
x
Reference in New Issue
Block a user