示例#1
0
def create(request):
    username = None
    group = 'parent'
    
    if request.user.is_authenticated():
        username = request.user.username
        if request.user.has_perm('updates.add_update'):
            group = 'teacher'
            
    if request.POST:
        form = UpdateForm(request.POST)
        if form.is_valid():
            form.save()
            
            return HttpResponseRedirect('/updates/all')
        
    else:
        form = UpdateForm()
        
        args = {}
        args.update(csrf(request))
        
        args['form'] = form
        args['username'] = username
        args['group'] = group
        
        return render_to_response('create_update.html', args)
示例#2
0
def update(request):
    user = User.objects.get(email=request.user.email)
    form = UpdateForm(request.POST or None, request.FILES or None, instance=user)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            messages.success(request, "Успешно сохранено!", extra_tags='info')
            return redirect('user_update')
        else:
            messages.warning(request, "Некорректные данные", extra_tags='info')
    context = {'avatar_url': user.avatar, 'form': form, 'passform': ChangePasswordForm}
    return render(request, 'user_update.html', context)
示例#3
0
def update_profile(request):
    form = UpdateForm(request.POST or None, instance=request.user)
    if form.is_valid():
        form.save()
        messages.success(request, 'Success, your project was saved!')

    context = {
        "form": form,
        "page_name": "Update",
        "button_value": "Update",
        "links": ["logout"],
    }
    return render(request, 'auth_form.html', context)
示例#4
0
def compose_update(request, project_id):
    project = Project.objects.get(id=project_id)
    if request.method == 'POST':
        form =  UpdateForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/dashboard/{}'.format(project_id))
    else:
        data = { 'project': project,
                 'posted': datetime.datetime.now()
               }
        form = UpdateForm(initial= data)
    return render(request, 'updates/compose-update.html',
                  {'form': form,
                   'project': project})
示例#5
0
def handle_updates (request, owner_name = None):
    """
    Used by coords to send updates to Core.
    Cores will just see the updates they have received.

    Return a dict containing update variables.
    """
    page_owner = get_page_owner (request, owner_name)

    update_dict = dict ()
    if page_owner.groups.filter (name = 'Coords'):
        # For Coords
        update_form = UpdateForm ()
        update_status = "Blank"
        update_dict['updates'] = Update.objects.filter (author = page_owner)
        update_dict['update_form'] = update_form
        update_dict['update_status'] = update_status
    else:
        if page_owner.groups.filter (name = 'Supercoords'):
            # For Supercoords
            update_form = UpdateForm ()
            update_status = "Blank"
            update_dict['updates'] = get_all_updates (page_owner.get_profile ().department)
            update_dict['update_form'] = update_form
            update_dict['update_status'] = update_status
        else:
            # For Core, just display all updates for his dept
            update_dict['updates'] = get_all_updates (
                page_owner.get_profile ().department)

    if request.method == 'POST':
        update_form = UpdateForm (request.POST)            
        if update_form.is_valid():
            new_update = update_form.save (commit = False)
            new_update.author = page_owner
            new_update.save ()
            update_form = UpdateForm ()
            update_status = "Success"
            update_dict['update_status'] = update_status
            return update_dict
        else:
            update_status = "Failed"
            update_dict['update_status'] = update_status
            update_dict['update_form'] = update_form
            return update_dict
    return update_dict
示例#6
0
def handle_updates(request, owner_name=None):
    """
    Used by coords to send updates to Core.
    Cores will just see the updates they have received.

    Return a dict containing update variables.
    """
    page_owner = get_page_owner(request, owner_name)

    update_dict = dict()
    if page_owner.groups.filter(name='Coords'):
        # For Coords
        update_form = UpdateForm()
        update_status = "Blank"
        update_dict['updates'] = Update.objects.filter(author=page_owner)
        update_dict['update_form'] = update_form
        update_dict['update_status'] = update_status
    else:
        # For Core, just display all updates for his dept
        update_dict['updates'] = get_all_updates(
            page_owner.get_profile().get_dept())

    if request.method == 'POST':
        update_form = UpdateForm(request.POST)
        if update_form.is_valid():
            new_update = update_form.save(commit=False)
            new_update.author = page_owner
            new_update.save()
            update_form = UpdateForm()
            update_status = "Success"
            update_dict['update_status'] = update_status
            return update_dict
        else:
            update_status = "Failed"
            update_dict['update_status'] = update_status
            update_dict['update_form'] = update_form
            return update_dict
    return update_dict
示例#7
0
    def post(self, request, *args, **kwargs):
        group_membership = request.user.groups.values_list('name', flat=True)
        # if this user is not in the Enablement group, throw a permission denied error
        if 'Enablement' not in group_membership:
            raise PermissionDenied

        self.slug = self.kwargs['slug']
        enablement_request = EnablementRequest.objects.get(slug=self.slug)
        pre_update_state = enablement_request.current_state
        old_config_details_id = int(enablement_request.config_details_id)

        update_form = UpdateForm(request.POST, instance=enablement_request)
        config_details_form = ConfigDetailsForm(request.POST)
        comment_form = CommentForm(request.POST)

        if update_form.is_valid() and config_details_form.is_valid(
        ) and comment_form.is_valid():
            # don't commit to database until we check for other conditions
            updated_enablement_request = update_form.save(commit=False)

            # see if the config_details_id changed upon update, and if so,
            # + does it match an existing request, and if so,
            # + associate the two via the "parent_request" attribute
            config_details = config_details_form.save()
            config_details_id = int(config_details.id)
            if old_config_details_id != config_details_id:
                first_parent_request = EnablementRequest.objects.filter(
                    config_details_id=config_details_id, ).exclude(
                        id=enablement_request.id).first()
                if first_parent_request:
                    parent_request = first_parent_request.identifier
                    updated_enablement_request.parent_request = parent_request

            post_update_state = updated_enablement_request.current_state
            if pre_update_state != post_update_state:
                comment_form.save(enablement_request=enablement_request,
                                  commenter=request.user,
                                  pre_comment_state=pre_update_state,
                                  post_comment_state=post_update_state)

                identifier = enablement_request.identifier
                url = 'http://newt.netapp.com:4173/view/%s' % identifier
                email_subject = 'Enablement Request %s - current state has changed to %s' % (
                    identifier, post_update_state)
                email_message = 'The Enablement Request (%s) state has been changed to "%s".' % (
                    identifier, post_update_state)
                email_message += 'You can view the Enablement Request at <a href="%s">%s</a>' % (
                    url, url)
                enablement_group_emails = Group.objects.get(
                    name='Enablement').user_set.values_list('email', flat=True)
                sales_initiator_email = enablement_request.sales_initiator.email
                email_addresses = []

                if post_update_state == 'Completed':
                    updated_enablement_request.completion_timestamp = datetime.now(
                    )
                    email_addresses = [sales_initiator_email]
                    email_addresses.extend(enablement_group_emails)
                elif post_update_state == 'Enablement Review':
                    email_addresses.extend(enablement_group_emails)
                elif post_update_state == 'Sales Review':
                    email_addresses = [sales_initiator_email]
                elif post_update_state == 'Engineering Review':
                    engineering_group_emails = Group.objects.get(
                        name='Engineering').user_set.values_list('email',
                                                                 flat=True)
                    email_addresses.extend(engineering_group_emails)
                elif post_update_state == 'Support Review':
                    support_group_emails = Group.objects.get(
                        name='Support').user_set.values_list('email',
                                                             flat=True)
                    email_addresses.extend(support_group_emails)
                else:
                    email_addresses = [sales_initiator_email]

                send_mail(email_subject,
                          email_message,
                          'NEWT Admin',
                          email_addresses,
                          html_message=email_message)

            else:
                comment_form.save(enablement_request=enablement_request,
                                  commenter=request.user)

            updated_enablement_request.save()

            return HttpResponseRedirect(
                reverse('view', kwargs={'slug': self.slug}))

        context = {
            'enablement_request': enablement_request,
            'update_form': update_form,
            'config_details_form': config_details_form,
            'comment_form': comment_form,
            'group_membership': group_membership,
            'navbar_options_template': 'enablement_navbar_options.html',
        }

        return render(request, self.template_name, context)