Skip to content

Commit dd374b3

Browse files
author
Mauricio Collazos
committed
added context variables to manage permissions
1 parent 5403c31 commit dd374b3

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

django_crud_generator/django_crud_generator.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def sanity_check(args):
113113
sys.exit(1)
114114

115115

116-
def generic_insert_with_folder(folder_name, file_name, args):
116+
def generic_insert_with_folder(folder_name, file_name, template_name, args):
117117
"""
118118
In general if we need to put a file on a folder, we use this method
119119
"""
@@ -147,11 +147,12 @@ def generic_insert_with_folder(folder_name, file_name, args):
147147
view_file,
148148
os.path.join(
149149
BASE_DIR,
150-
'view.py.tmpl'
150+
template_name
151151
),
152152
model_name=args['model_name'],
153153
model_prefix=args['model_prefix'],
154-
model_name_lower=args['model_name'].lower()
154+
model_name_lower=args['model_name'].lower(),
155+
application_name=args['django_application_folder'].split("/")[-1]
155156
)
156157
view_file.close()
157158

@@ -209,9 +210,9 @@ def execute_from_command_line():
209210
# Views has an specific logic, so we don't touch it
210211
simplified_file_name = convert(args['model_name'].strip())
211212

212-
generic_insert_with_folder("views", simplified_file_name,args)
213+
generic_insert_with_folder("views", simplified_file_name, "view.py.tmpl", args)
213214
# Seems like tests also has the same logic
214-
generic_insert_with_folder("tests", "test_{}".format(simplified_file_name),args)
215+
generic_insert_with_folder("tests", "test_{}".format(simplified_file_name), "tests.py.tmpl", args)
215216

216217
modules_to_inject = [
217218
'conf',

django_crud_generator/templates/view.py.tmpl

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ class List(LoginRequiredMixin, base_views.BaseListView):
2222
def __init__(self):
2323
super(List, self).__init__()
2424

25+
def get_context_data(self, **kwargs):
26+
context = super(List, self).get_context_data(**kwargs)
27+
28+
if self.request.user.has_perm("${application_name}.add_${model_name_lower}"):
29+
context['create_object_reversed_url'] = reverse_lazy(
30+
conf.${model_prefix}_CREATE_URL_NAME
31+
)
32+
33+
return context
34+
2535

2636
class Create(LoginRequiredMixin, PermissionRequiredMixin, base_views.BaseCreateView):
2737
"""
@@ -51,6 +61,28 @@ class Detail(LoginRequiredMixin, base_views.BaseDetailView):
5161
def __init__(self):
5262
super(Detail, self).__init__()
5363

64+
65+
def get_context_data(self, **kwargs):
66+
context = super(Detail, self).get_context_data(**kwargs)
67+
68+
if self.request.user.has_perm("inventory.change_provider"):
69+
context['update_object_reversed_url'] = reverse_lazy(
70+
conf.${model_prefix}_UPDATE_URL_NAME,
71+
kwargs={
72+
'pk': self.get_object().id
73+
}
74+
)
75+
76+
if self.request.user.has_perm("inventory.delete_provider"):
77+
context['delete_object_reversed_url'] = reverse_lazy(
78+
conf.${model_prefix}_DELETE_URL_NAME,
79+
kwargs={
80+
'pk': self.get_object().id
81+
}
82+
)
83+
84+
return context
85+
5486

5587
class Update(LoginRequiredMixin, PermissionRequiredMixin, base_views.BaseUpdateView):
5688
"""

0 commit comments

Comments
 (0)