Esempio n. 1
0
def create_group(request):
    if request.method == "POST":
        form_group_name = GroupNameHandlerForm(request.POST)
        form_group_description = GroupDescriptionHandlerForm(request.POST)
        if form_group_name.is_valid() and form_group_description.is_valid():
            # create group
            group_name = form_group_name.cleaned_data["group_name"]
            group_description = form_group_description.cleaned_data["group_description"]

            # group name must be unique!
            # use user name + created time as group name
            unique_group_name = "".join(("[real]", request.user.username, unicode(datetime.now())))
            group = Group(name=unique_group_name)
            group.save()
            # create related group info to handle group information
            group_info = GroupInfo(name=group_name, description=group_description, group=group, owner=request.user)
            group_info.save()
            # add user to group manager
            group_info.manager.add(request.user)
            # relate user to group
            request.user.groups.add(group)
            # redirect to group page
            return redirect("group_page", group_info_id=group_info.id)
    else:
        form_group_name = GroupNameHandlerForm()
        form_group_description = GroupDescriptionHandlerForm()
    render_data_dict = {"form_group_name": form_group_name, "form_group_description": form_group_description}
    return render(request, "group_info/create_group_page.html", render_data_dict)
Esempio n. 2
0
def create_group(request):
    if request.method == "POST":
        form_group_name = GroupNameHandlerForm(request.POST)
        form_group_description = GroupDescriptionHandlerForm(request.POST)
        if form_group_name.is_valid() and form_group_description.is_valid():
            # create group
            group_name = form_group_name.cleaned_data['group_name']
            group_description = \
                    form_group_description.cleaned_data['group_description']

            # group name must be unique!
            # use user name + created time as group name
            unique_group_name = "".join(
                ('[real]', request.user.username, unicode(datetime.now())))
            group = Group(name=unique_group_name)
            group.save()
            # create related group info to handle group information
            group_info = GroupInfo(name=group_name,
                                   description=group_description,
                                   group=group,
                                   owner=request.user)
            group_info.save()
            # add user to group manager
            group_info.manager.add(request.user)
            # relate user to group
            request.user.groups.add(group)
            # redirect to group page
            return redirect('group_page', group_info_id=group_info.id)
    else:
        form_group_name = GroupNameHandlerForm()
        form_group_description = GroupDescriptionHandlerForm()
    render_data_dict = {
        'form_group_name': form_group_name,
        'form_group_description': form_group_description,
    }
    return render(request, 'group_info/create_group_page.html',
                  render_data_dict)
Esempio n. 3
0
def create_project(request):
    if request.method == 'POST':
        form_project_name = ProjectNameHandlerForm(request.POST)
        form_project_description = ProjectDescriptionHandlerForm(request.POST)
        if form_project_name.is_valid() and form_project_description.is_valid(
        ):
            # get project info
            project_name = form_project_name.cleaned_data['project_name']
            project_description = \
                    form_project_description.cleaned_data['project_description']

            # create manager group and default group
            # manager group is for project management.
            # default group is for adding user individually.
            # create groups
            unique_manage_group_name = \
                    "".join(('[project][manage_group]',
                             request.user.username,
                             unicode(datetime.now())))
            unique_default_group_name = \
                    "".join(('[project][default_group]',
                             request.user.username,
                             unicode(datetime.now())))
            manage_group = Group(name=unique_manage_group_name)
            default_group = Group(name=unique_default_group_name)
            manage_group.save()
            default_group.save()
            # add user to manage_group
            manage_group.user_set.add(request.user)

            # create relate group_infos
            # only for saving the info of group, not the manager
            manage_group_info = GroupInfo(name="manage_group",
                                          group=manage_group,
                                          owner=request.user,
                                          real_flag=False)
            default_group_info = GroupInfo(name="default_group",
                                           group=default_group,
                                           owner=request.user,
                                           real_flag=False)
            manage_group_info.save()
            default_group_info.save()

            # project must be created after all above staff were finished.
            project = Project(name=project_name,
                              description=project_description,
                              manage_group=manage_group,
                              owner=request.user)
            project.save()

            # add manage_group info to project info
            # notice that the default group is treated as a normal group.
            project.normal_group.add(default_group)
            return redirect('project_page', project_id=project.id)
    else:
        form_project_name = ProjectNameHandlerForm()
        form_project_description = ProjectDescriptionHandlerForm()

    #rendering
    render_data_dict = {
        'form_project_name': form_project_name,
        'form_project_description': form_project_description,
    }
    return render(request, 'project/create_project_page.html',
                  render_data_dict)
Esempio n. 4
0
def show_project_management_page(request, project_id):
    project_id = int(project_id)
    project = get_object_or_404(Project, id=project_id)

    if request.method == 'POST':
        form_project_name = ProjectNameHandlerForm(request.POST)
        form_project_description = ProjectDescriptionHandlerForm(request.POST)
        form_add_group = AddGroupForm(request.POST)

        if form_project_name.is_valid():
            project_name = form_project_name.cleaned_data['project_name']
            project.name = project_name
            project.save()
            return redirect('project_management_page', project_id=project_id)
        #if form_project_description.is_valid() \
        #        and 'project_description' in request.POST:
        if form_project_description.is_valid():
            project_description = \
                    form_project_description.cleaned_data['project_description']
            project.description = project_description
            project.save()
            return redirect('project_management_page', project_id=project_id)
        if form_add_group.is_valid():
            group_name = form_add_group.cleaned_data['group_name']
            group = get_object_or_404(Group, name=group_name)
            # add to attended group
            project.attended_group.add(group)
            # real group isolation
            unique_project_group_name = \
                    "".join('[project][attended_group]',
                            request.user.username,
                            datetime.now())
            project_group = Group(name=unique_project_group_name)
            project_group.save()
            for user in group.user_set.all():
                project_group.user_set.add(user)
            project.normal_group.add(project_group)
            # group info
            project_group_info = GroupInfo(name='[attended]' + group_name,
                                           group=project_group,
                                           real_flag=False)

            return redirect('project_management_page', project_id=project_id)

    else:
        form_project_name = ProjectNameHandlerForm()
        form_project_description = ProjectDescriptionHandlerForm()
        form_add_group = AddGroupForm()

    # rendering
    display_project_normal_group = \
            {group.name: {
                           'group_info_id': group.groupinfo.id,
                           'remove_url': url_with_querystring(
                                           reverse('delete_group_from_project'),
                                           project_id=project_id,
                                           group_info_id=group.groupinfo.id)
                } \
                for group in project.normal_group.all() \
                    if group.real_flag}
    render_data_dict = {
        'form_project_name': form_project_name,
        'form_project_description': form_project_description,
        'form_add_group': form_add_group,
        'project_normal_group': display_project_normal_group,
        'project_id': project_id,
    }
    return render(request, 'project/project_management_page.html',
                  render_data_dict)
Esempio n. 5
0
def create_project(request):
    if request.method == 'POST':
        form_project_name = ProjectNameHandlerForm(request.POST)
        form_project_description = ProjectDescriptionHandlerForm(request.POST)
        if form_project_name.is_valid() and form_project_description.is_valid():
            # get project info
            project_name = form_project_name.cleaned_data['project_name']
            project_description = \
                    form_project_description.cleaned_data['project_description']
            
            # create manager group and default group
            # manager group is for project management.
            # default group is for adding user individually.
            # create groups
            unique_manage_group_name = \
                    "".join(('[project][manage_group]', 
                             request.user.username, 
                             unicode(datetime.now())))
            unique_default_group_name = \
                    "".join(('[project][default_group]', 
                             request.user.username, 
                             unicode(datetime.now())))
            manage_group = Group(name=unique_manage_group_name)
            default_group = Group(name=unique_default_group_name)
            manage_group.save()
            default_group.save()
            # add user to manage_group
            manage_group.user_set.add(request.user)
            
            # create relate group_infos
            # only for saving the info of group, not the manager
            manage_group_info = GroupInfo(name="manage_group",
                                          group=manage_group,
                                          owner=request.user,
                                          real_flag=False)
            default_group_info = GroupInfo(name="default_group",
                                           group=default_group,
                                           owner=request.user,
                                           real_flag=False)
            manage_group_info.save()
            default_group_info.save()


            # project must be created after all above staff were finished.
            project = Project(name=project_name,
                              description=project_description,
                              manage_group=manage_group,
                              owner=request.user)
            project.save()

            # add manage_group info to project info
            # notice that the default group is treated as a normal group.
            project.normal_group.add(default_group)
            return redirect('project_page',
                             project_id=project.id)
    else:
        form_project_name = ProjectNameHandlerForm()
        form_project_description = ProjectDescriptionHandlerForm()

    #rendering
    render_data_dict= {
        'form_project_name': form_project_name,
        'form_project_description': form_project_description,
    }
    return render(request,
                  'project/create_project_page.html',
                  render_data_dict)