예제 #1
0
파일: users.py 프로젝트: judy2k/pipsevents
def user_blocks_view(request,  user_id):

    user = get_object_or_404(User,  id=user_id)
    if request.method == 'POST':
        userblockformset = UserBlockFormSet(
            request.POST, 
            instance=user, 
            user=user
        )
        if userblockformset.is_valid():
            if not userblockformset.has_changed():
                messages.info(request,  "No changes were made")
            else:
                for form in userblockformset:
                    if form.has_changed():

                        block = form.save(commit=False)

                        if 'DELETE' in form.changed_data:
                            messages.success(
                                request,  mark_safe(
                                    'Block <strong>{}</strong> has been '
                                    'deleted!  Any bookings made with this '
                                    'block have been changed to unpaid.  '
                                    'Please inform user {} ({})'.format(
                                        block,  block.user.username, 
                                        block.user.email
                                    )
                                )
                            )
                            ActivityLog.objects.create(
                                log='Block {} (id {}) deleted by admin user {}'.format(
                                form.instance,  form.instance.id,  request.user.username)
                            )
                            block.delete()
                        else:
                            new = False if form.instance.id else True
                            msg = 'created' if new else 'updated'

                            messages.success(
                                request, 
                                'Block for {} has been {}'.format(
                                    block.block_type.event_type,  msg
                                )
                            )
                            block.save()
                            ActivityLog.objects.create(
                                log='Block id {} ({}),  user {},  {}'
                                        ' by admin user {}'.format(
                                    block.id,  block.block_type, 
                                    block.user.username,  msg, 
                                    request.user.username
                                )
                            )

                userblockformset.save(commit=False)

            return HttpResponseRedirect(
                reverse('studioadmin:user_blocks_list', 
                        kwargs={'user_id': user.id}
                        )
            )
        else:
            messages.error(
                request, 
                mark_safe(
                    "There were errors in the following fields:\n{}".format(
                        '\n'.join(
                            ["{}".format(error) for error in userblockformset.errors]
                        )
                    )
                )
            )
    else:
        queryset = Block.objects.filter(
            user=user).order_by('-start_date')
        userblockformset = UserBlockFormSet(
            instance=user, 
            queryset=queryset, 
            user=user
        )

    template = 'studioadmin/user_block_list.html'
    return TemplateResponse(
        request,  template,  {
            'userblockformset': userblockformset,  'user': user, 
            'sidenav_selection': 'users'
        }
    )