1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-04 00:20:07 +00:00

Clean business group add

This commit is contained in:
xiez
2012-09-18 14:04:47 +08:00
parent 5d0fc681e8
commit 9c93e1a740
11 changed files with 140 additions and 105 deletions

View File

@@ -6,7 +6,11 @@ and returns a dictionary to add to the context.
These are referenced from the setting TEMPLATE_CONTEXT_PROCESSORS and used by
RequestContext.
"""
from settings import SEAFILE_VERSION, SEAHUB_TITLE, BUSINESS_MODE
from settings import SEAFILE_VERSION, SEAHUB_TITLE
try:
from settings import BUSINESS_MODE
except ImportError:
BUSINESS_MODE = False
def base(request):
"""

View File

@@ -1,7 +1,10 @@
# encoding: utf-8
import os
from django import forms
from seahub.utils import validate_group_name
class MessageForm(forms.Form):
message = forms.CharField(max_length=500)
@@ -16,3 +19,19 @@ class GroupRecommendForm(MessageForm):
repo_id = forms.CharField(max_length=40)
path = forms.CharField()
attach_type = forms.CharField(max_length=5)
class GroupAddForm(forms.Form):
"""
A form used to add a new group.
"""
group_name = forms.CharField(max_length=255, error_messages={
'required': u'小组名称不能为空',
'max_length': u'小组名称太长不超过255个字符',
})
def clean_group_name(self):
group_name = self.cleaned_data['group_name']
if not validate_group_name(group_name):
error_msg = u'小组名称只能包含中英文字符,数字及下划线。'
raise forms.ValidationError(error_msg)
else:
return group_name

View File

@@ -8,7 +8,8 @@
{% endblock %}
{% block right_panel %}
<!-- 我的小组 -->
<!-- 部门 -->
<h3>部门</h3>
{% include "group/groups_right_panel.html" %}
{% endblock %}

View File

@@ -9,6 +9,7 @@
{% block right_panel %}
<!-- 我的小组 -->
<h3>我的小组</h3>
{% include "group/groups_right_panel.html" %}
{% endblock %}

View File

@@ -1,7 +1,6 @@
{% load seahub_tags group_avatar_tags %}
{% load url from future %}
<h3>我的小组</h3>
{% if groups %}
<ul class="group-list w100 ovhd">
{% for group in groups %}

View File

@@ -8,7 +8,8 @@
{% endblock %}
{% block right_panel %}
<!-- 我的小-->
<!-- 项目-->
<h3>项目组</h3>
{% include "group/groups_right_panel.html" %}
{% endblock %}

View File

@@ -1,6 +1,6 @@
from django.conf.urls.defaults import *
from views import group_list, group_info, group_member_operations, \
from views import group_info, group_member_operations, \
group_members, msg_reply, msg_reply_new, group_recommend, \
create_group_repo

View File

@@ -10,6 +10,8 @@ from django.template import RequestContext
from django.template.loader import render_to_string
from django.utils.http import urlquote
from django.utils.translation import ugettext as _
from django.views.generic.base import TemplateResponseMixin
from django.views.generic.edit import BaseFormView, FormMixin
from auth.decorators import login_required
from seaserv import ccnet_rpc, ccnet_threaded_rpc, seafserv_threaded_rpc, \
@@ -19,9 +21,11 @@ from seaserv import ccnet_rpc, ccnet_threaded_rpc, seafserv_threaded_rpc, \
from pysearpc import SearpcError
from models import GroupMessage, MessageReply, MessageAttachment, BusinessGroup
from forms import MessageForm, MessageReplyForm, GroupRecommendForm
from forms import MessageForm, MessageReplyForm, GroupRecommendForm, \
GroupAddForm
from signals import grpmsg_added, grpmsg_reply_added
from base.decorators import ctx_switch_required
from base.mixins import LoginRequiredMixin
from seahub.contacts.models import Contact
from seahub.contacts.signals import mail_sended
from seahub.notifications.models import UserNotification
@@ -34,36 +38,20 @@ from seahub.utils import render_error, render_permission_error, \
from seahub.views import is_registered_user
from seahub.forms import RepoCreateForm
@login_required
def group_list(request):
if request.method == 'POST':
"""
Add new group.
"""
result = {}
content_type = 'application/json; charset=utf-8'
class GroupMixin(object):
def get_username(self):
return self.request.user.username
group_name = request.POST.get('group_name')
if not validate_group_name(group_name):
result['error'] = u'小组名称只能包含中英文字符,数字及下划线。'
return HttpResponse(json.dumps(result), content_type=content_type)
try:
group_id = ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
request.user.username)
except SearpcError, e:
result['error'] = _(e.msg)
return HttpResponse(json.dumps(result), content_type=content_type)
def ajax_form_valid(self):
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
content_type='application/json; charset=utf-8')
groups = get_personal_groups(request.user.username);
def ajax_form_invalid(self, form):
return HttpResponseBadRequest(
json.dumps(form.errors),
content_type='application/json; charset=utf-8')
return render_to_response("group/groups.html", {
"groups": groups,
}, context_instance=RequestContext(request))
def is_dept_group(group_id):
def is_dept_group(self, group_id):
try:
BusinessGroup.objects.get(group_id=group_id, group_type='dept')
ret = True
@@ -71,7 +59,7 @@ def is_dept_group(group_id):
ret = False
return ret
def is_proj_group(group_id):
def is_proj_group(self, group_id):
try:
BusinessGroup.objects.get(group_id=group_id, group_type='proj')
ret = True
@@ -79,73 +67,97 @@ def is_proj_group(group_id):
ret = False
return ret
@login_required
def dept_group_list(request):
if request.method == 'POST':
"""
Add new department group.
"""
result = {}
content_type = 'application/json; charset=utf-8'
group_name = request.POST.get('group_name')
if not validate_group_name(group_name):
result['error'] = u'小组名称只能包含中英文字符,数字及下划线。'
return HttpResponse(json.dumps(result), content_type=content_type)
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()
try:
group_id = ccnet_threaded_rpc.create_group(group_name.encode('utf-8'),
request.user.username)
group_id = ccnet_threaded_rpc.create_group(
group_name.encode('utf-8'), username)
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 form_invalid(self, form):
if self.request.is_ajax():
return self.ajax_form_invalid(form)
else:
return FormMixin.form_invalid(self, form)
def get_context_data(self, **kwargs):
kwargs['groups'] = get_personal_groups(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['error'] = _(e.msg)
return HttpResponse(json.dumps(result), content_type=content_type)
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
groups = [ g for g in get_personal_groups(request.user.username) \
if is_dept_group(g.id)]
return render_to_response("group/dept_groups.html", {
"groups": groups,
}, context_instance=RequestContext(request))
@login_required
def proj_group_list(request):
if request.method == 'POST':
"""
Add new department group.
"""
result = {}
content_type = 'application/json; charset=utf-8'
result['error'] = _(e.msg)
return HttpResponse(json.dumps(result),
content_type='application/json; charset=utf-8')
group_name = request.POST.get('group_name')
if not validate_group_name(group_name):
result['error'] = u'小组名称只能包含中英文字符,数字及下划线。'
return HttpResponse(json.dumps(result), content_type=content_type)
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(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'),
request.user.username)
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=content_type)
return HttpResponse(json.dumps({'success': True}),
content_type=content_type)
return HttpResponse(json.dumps(result),
content_type='application/json; charset=utf-8')
groups = [ g for g in get_personal_groups(request.user.username) \
if is_proj_group(g.id)]
if self.request.is_ajax():
return self.ajax_form_valid()
else:
return FormMixin.form_valid(self, form)
return render_to_response("group/proj_groups.html", {
"groups": groups,
}, context_instance=RequestContext(request))
def get_context_data(self, **kwargs):
groups = [ g for g in get_personal_groups(self.get_username()) \
if self.is_proj_group(g.id)]
kwargs['groups'] = groups
return kwargs
@login_required
def group_remove(request, group_id):

View File

@@ -202,8 +202,6 @@ SEAHUB_TITLE = 'SeaHub'
USE_SUBDOMAIN = False
BUSINESS_MODE = True
try:
import local_settings
except ImportError:

View File

@@ -13,7 +13,7 @@
{% endif %}
{% if business_mode %}
<li>
<a href="{% url 'dept_group_list' %}" {% block nav_deptgroup_class %}{% endblock %}>部门</a>
<a href="{% url 'dept_group_list' %}" {% block nav_deptgroup_class %}{% endblock %}>部门</a>
</li>
<li>
<a href="{% url 'proj_group_list' %}" {% block nav_projgroup_class %}{% endblock %}>项目组</a>

View File

@@ -5,7 +5,7 @@ from django.views.generic.simple import direct_to_template
from seahub.views import *
from notifications.views import notification_list
from share.views import share_admin
from group.views import group_list, dept_group_list, proj_group_list
from group.views import GroupListView, DeptGroupListView, ProjGroupListView
# Uncomment the next two lines to enable the admin:
#from django.contrib import admin
@@ -88,9 +88,9 @@ 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/', group_list, name='group_list'),
url(r'^deptgroups/', dept_group_list, name='dept_group_list'),
url(r'^projgroups/', proj_group_list, name='proj_group_list'),
url(r'^groups/', GroupListView.as_view(), name='group_list'),
url(r'^deptgroups/', DeptGroupListView.as_view(), name='dept_group_list'),
url(r'^projgroups/', ProjGroupListView.as_view(), name='proj_group_list'),
(r'^organizations/', include('seahub.organizations.urls')),
(r'^profile/', include('seahub.profile.urls')),