django角色授权架构

时间:2015-05-09 00:24:57

标签: django architecture permissions tastypie roles

你好我是django的新手,我正在为商店开发一个软件,商店连锁店的每个商店都有自己的客户和付款。因此,特定商店的员工(不需要了解其他商店)会有一个角色,并且商店的管理员(不是系统管理员,只是另一个)的角色需要了解每家商店付款的高级员工角色。

模型看起来像这样:

class Store(models.Model):
id = models.IntegerField(max_length=10, primary_key=True, default=0)
name = models.CharField(max_length=20)

def __unicode__(self):
    return self.name

class Clients(models.Model):
store = models.ForeignKey(Store) 
id = models.IntegerField(max_length=10, primary_key=True, default=0)
name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)

def __unicode__(self):
    return self.last_name

class Payments(models.Model):
client = models.ForeignKey(Clients)  
month_from = models.DateField(default='1111-01-01')
amount = models.IntegerField(default='0')

def __unicode__(self):
    return self.month_from.strftime('%Y-%m-%d')

这是客户端视图:

@login_required(login_url='/')

def clients(request):
query_string = ''
found_entries = None

if ('q' in request.GET) and request.GET['q'].strip():
    query_string = request.GET['q']

    entry_query = get_query(query_string, ['id', 'name',])
    print entry_query
    found_entries = Clients.objects.filter(entry_query).order_by('id')
    print found_entries
else:
    found_entries = Clients.objects.all()

return render_to_response('clients.html', { 'query_string': query_string, 'found_entries': found_entries }, context_instance=RequestContext(request))

并在html中显示如下客户列表:

{% if found_entries %}
     {% for Clients in found_entries %}
         {{ Clients.name }} {{ Clients.last_name }}
     {% endfor %}
{% endif %}
例如,员工表单商店1不需要了解商店3的客户,但需要了解商店1中的客户。管理员需要了解每个商店的每个客户。

这是最好的方法吗?我一直在寻找django-guardian,但不知道我是否可以通过团体许可轻松地解决这个问题。

此外,我考虑为每个商店制作个人应用程序,并创建第二个应用程序,使用tastypie通过Web服务从所有相应商店导入数据,这种方式更清晰。

0 个答案:

没有答案