1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-19 10:26:17 +00:00

Removed class-based view in group creation

This commit is contained in:
zhengxie
2012-11-22 16:47:57 +08:00
parent 8dc8e158ee
commit 35b4c4f3e3
3 changed files with 44 additions and 133 deletions

View File

@@ -43,140 +43,52 @@ from seahub.utils import render_error, render_permission_error, \
from seahub.views import is_registered_user
from seahub.forms import RepoCreateForm, SharedRepoCreateForm
class GroupMixin(object):
def get_username(self):
return self.request.user.username
@login_required
def group_list(request):
username = request.user.username
def ajax_form_valid(self):
return HttpResponse(json.dumps({'success': True}),
content_type='application/json; charset=utf-8')
def ajax_form_invalid(self, form):
return HttpResponseBadRequest(
json.dumps(form.errors),
content_type='application/json; charset=utf-8')
def is_dept_group(self, group_id):
try:
BusinessGroup.objects.get(group_id=group_id, group_type='dept')
ret = True
except BusinessGroup.DoesNotExist:
ret = False
return ret
def is_proj_group(self, group_id):
try:
BusinessGroup.objects.get(group_id=group_id, group_type='proj')
ret = True
except BusinessGroup.DoesNotExist:
ret = False
return ret
class GroupListView(LoginRequiredMixin, GroupMixin, TemplateResponseMixin,
BaseFormView):
template_name = 'group/groups.html'
form_class = GroupAddForm
def form_valid(self, form):
group_name = form.cleaned_data['group_name']
username = self.get_username()
if request.method == 'POST':
"""
Add a new group.
"""
result = {}
content_type = 'application/json; charset=utf-8'
if self.request.cloud_mode:
# Check whether group name is duplicated in groups he joined and
# created.
form = GroupAddForm(request.POST)
if form.is_valid():
group_name = form.cleaned_data['group_name']
# Check whether group name is duplicated.
if request.cloud_mode:
checked_groups = get_personal_groups_by_user(username)
else:
# Check whether group name is duplicated in all groups.
checked_groups = get_personal_groups(-1, -1)
for g in checked_groups:
if g.group_name == group_name:
result['error'] = _(u'There is already a group with that name.')
return HttpResponse(json.dumps(result), status=400,
content_type='application/json; charset=utf-8')
content_type=content_type)
# Group name is valid, create that group.
try:
group_id = ccnet_threaded_rpc.create_group(
group_name.encode('utf-8'), username)
ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
username)
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
except SearpcError, e:
result['error'] = _(e.msg)
return HttpResponse(json.dumps(result), status=500,
content_type='application/json; charset=utf-8')
if self.request.is_ajax():
return self.ajax_form_valid()
content_type=content_type)
else:
return FormMixin.form_valid(self, form)
return HttpResponseBadRequest(json.dumps(form.errors),
content_type=content_type)
def form_invalid(self, form):
if self.request.is_ajax():
return self.ajax_form_invalid(form)
else:
return FormMixin.form_invalid(self, form)
### GET ###
joined_groups = get_personal_groups_by_user(username)
def get_context_data(self, **kwargs):
kwargs['joined_groups'] = get_personal_groups_by_user(self.get_username())
return kwargs
# class DeptGroupListView(GroupListView):
# template_name = 'group/dept_groups.html'
# def form_valid(self, form):
# group_name = form.cleaned_data['group_name']
# username = self.get_username()
# try:
# group_id = ccnet_threaded_rpc.create_group(
# group_name.encode('utf-8'), username)
# bg = BusinessGroup()
# bg.group_id = group_id
# bg.group_type = 'dept'
# bg.save()
# except SearpcError, e:
# result = {}
# result['error'] = _(e.msg)
# return HttpResponse(json.dumps(result),
# content_type='application/json; charset=utf-8')
# if self.request.is_ajax():
# return self.ajax_form_valid()
# else:
# return FormMixin.form_valid(self, form)
# def get_context_data(self, **kwargs):
# groups = [ g for g in get_personal_groups_by_user(self.get_username()) \
# if self.is_dept_group(g.id)]
# kwargs['groups'] = groups
# return kwargs
# class ProjGroupListView(GroupListView):
# template_name = 'group/proj_groups.html'
# def form_valid(self, form):
# group_name = form.cleaned_data['group_name']
# username = self.get_username()
# try:
# group_id = ccnet_threaded_rpc.create_group(
# group_name.encode('utf-8'), username)
# bg = BusinessGroup()
# bg.group_id = group_id
# bg.group_type = 'proj'
# bg.save()
# except SearpcError, e:
# result = {}
# result['error'] = _(e.msg)
# return HttpResponse(json.dumps(result),
# content_type='application/json; charset=utf-8')
# if self.request.is_ajax():
# return self.ajax_form_valid()
# else:
# return FormMixin.form_valid(self, form)
# def get_context_data(self, **kwargs):
# groups = [ g for g in get_personal_groups_by_user(self.get_username()) \
# if self.is_proj_group(g.id)]
# kwargs['groups'] = groups
# return kwargs
return render_to_response('group/groups.html', {
'joined_groups': joined_groups,
}, context_instance=RequestContext(request))
@login_required
def group_remove(request, group_id):

View File

@@ -25,7 +25,6 @@ from decorators import org_staff_required
from forms import OrgCreateForm
from signals import org_user_added
from utils import validate_org_repo_owner
from group.views import GroupListView
from notifications.models import UserNotification
from profile.models import Profile
from share.models import FileShare

View File

@@ -4,7 +4,7 @@ from django.views.generic.simple import direct_to_template
from seahub.views import *
from notifications.views import notification_list
from group.views import GroupListView
from group.views import group_list
# Uncomment the next two lines to enable the admin:
#from django.contrib import admin
@@ -82,7 +82,7 @@ urlpatterns = patterns('',
url(r'^sys/notificationadmin/', notification_list, name='notification_list'),
(r'^contacts/', include('contacts.urls')),
(r'^group/', include('seahub.group.urls')),
url(r'^groups/', GroupListView.as_view(), name='group_list'),
url(r'^groups/', group_list, name='group_list'),
(r'^profile/', include('seahub.profile.urls')),
(r'^share/', include('share.urls')),