Exemplo n.º 1
0
def project_edit(request, project_id):
    context = RequestContext(request)

    project = get_object_or_404(Project, pk=project_id)

    if not project.can_admin(request.user):
        raise Http404()

    if request.method == 'POST':
        form = ProjectForm(request.POST, instance=project)

        if form.is_valid():
            project.set_change_user(request.user)
            with transaction.atomic(), reversion.create_revision():
                reversion.set_user(request.user)
                form.save()

            # перебросить пользователя на просмотр изделия
            messages.success(request, "You successfully updated this project!")
            return HttpResponseRedirect(project.get_absolute_url())
        else:
            print(form.errors)
    else:
        form = ProjectForm(instance=project)

    return render(request, 'project/project_form.html', {
        'form': form,
        'project': project
    }, context)
Exemplo n.º 2
0
def update_project_details(request, **kwargs):
    """
    update project details
    """
    # set variables
    pk = int(kwargs.get('pk'))
    current_project = get_object_or_404(Project, pk=pk)

    if request.method == "POST":
        # populate the project form
        project_form = ProjectForm(request.POST, instance=current_project)
        # validate then save form
        if project_form.is_valid():
            project_form.save()
            messages.success(
                request, 'Success! Your project details have been updated.')
            return redirect(reverse('projects:projectList'))
        else:
            messages.error(
                request,
                'An unexpected error occurred. Project details NOT saved.')

    else:
        project_form = ProjectForm(instance=current_project)

    # add the requested project and form to the context
    context = {
        'project': current_project,
        'project_form': project_form,
    }

    return render(request, 'project/project_update_details.html', context)
Exemplo n.º 3
0
def update_project(request, project_id):
    global message
    project = get_object_or_404(Project, pk=project_id)
    form = ProjectForm()
    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
        if form.is_valid():
            project.title = form.cleaned_data.get('title')
            project.details = form.cleaned_data.get('details')
            project.total_target = form.cleaned_data.get('total_target')
            project.start_date = form.cleaned_data.get('start_date')
            project.end_date = form.cleaned_data.get('end_date')
            # get category object then update
            project.category = Category.objects.filter(
                title=form.cleaned_data.get('category')).first()
            # if uplade new image , clear old images
            if request.FILES.getlist('images'):
                ProjectPicture.objects.filter(project=project).delete()
            # store new image
            for image in request.FILES.getlist('images'):
                ProjectPicture.objects.create(project=project, image=image)
            project.save()
            message = {
                'status': "alert-success",
                'message': "Update Successfully"
            }
        else:
            print("form error")
            message = {'status': 'alert-danger', 'message': 'Update Failure'}

    return redirect('profile_page')
Exemplo n.º 4
0
def project_create_or_edit(request, id=None):
    if id:
        title = _('Edit a project')
        project = get_object_or_404(Project, pk=id, owner=request.user)
    else:
        title = _('Add a project')
        project = None

    contacts = Contact.objects.filter(owner=request.user)

    if request.method == 'POST':
        projectForm = ProjectForm(request.POST, instance=project, prefix="project")
        projectForm.fields['customer'].queryset = contacts

        if projectForm.is_valid():
            user = request.user
            project = projectForm.save(commit=False)
            project.save(user=user)
            projectForm.save_m2m()

            messages.success(request, _('The project has been saved successfully'))
            return redirect(reverse('project_detail', kwargs={'id': project.id}))
        else:
            messages.error(request, _('Data provided are invalid'))
    else:
        projectForm = ProjectForm(instance=project, prefix="project")
        projectForm.fields['customer'].queryset = contacts

    return render_to_response('project/edit.html',
                              {'active': 'business',
                               'title': title,
                               'projectForm': projectForm},
                               context_instance=RequestContext(request))
Exemplo n.º 5
0
def edit_project(request, pid):
    """
	编辑项目
	:param request:
	:return:
	"""
    if request.method == "GET":
        if pid:
            p = Project.objects.get(id=pid)
            print("编辑的id:", pid, p.name)
            # 把p对象的数据赋值给表单
            form = ProjectForm(instance=p)
            return render(request, "project.html", {
                "type": "edit",
                "form": form,
                "id": pid
            })
    elif request.method == "POST":
        form = ProjectForm(request.POST)
        p = Project.objects.get(id=pid)
        print("编辑post的id:", pid, p.name)
        if form.is_valid():
            name = form.cleaned_data['name']
            describe = form.cleaned_data['describe']
            status = form.cleaned_data['status']
            p = Project.objects.get(id=pid)
            p.name = name
            p.describe = describe
            p.status = status
            p.save()
        return HttpResponseRedirect("/project/")
Exemplo n.º 6
0
 def get_context_data(self, **kwargs):
     context = TemplateView.get_context_data(self, **kwargs)
     project = Project.objects.get(id=kwargs.get('id'))
     if project and self.request.user == project.author:
         context['form'] = ProjectForm(instance=project)
         context['mode'] = 'edit'
         context['id'] = project.id
     elif not project:
         context['form'] = ProjectForm()
         context['mode'] = 'create'
     else:
         raise Http404
     return context
Exemplo n.º 7
0
def create(request):
    form = ProjectForm()
    if request.method == "POST":
        form = ProjectForm(request.POST)
        if form.is_valid():
            project = form.save(commit=False)
            project.creator = request.user
            project.save()
            import md5
            # project.token = md5.new(str(project.id + time.mktime(project.dateline.timetuple()))).hexdigest()
            project.token = md5.new(str(project.id + 54321)).hexdigest()
            project.participants.add(request.user)
            project.save()
            return HttpResponseRedirect(
                reverse('project_home', args=[project.id]))
    return render(request, 'project/create.html', {'form': form})
Exemplo n.º 8
0
def profile(request):
    user = get_object_or_404(MyUser, pk=request.user.id)
    projects = Project.objects.filter(user=user)
    donations = Denote.objects.filter(user=user)
    category = Category.objects.all()
    projectform = ProjectForm()
    donationform = DenoteForm()
    userform = UserForm()
    projects_nums = projects.count()
    last_project = 'No Projects'
    if projects:
        last_project = projects.order_by('-start_date').first().title  #
    last_donation = '-------'
    if donations.count():
        last_donation = donations.order_by('-created_at').first().created_at  #
    context = {
        'user': user,
        'projects': projects,
        'donations': donations,
        'category': category,
        'projectform': projectform,
        'donationform': donationform,
        'userform': userform,
        'message': message,
        'user_activaties': {  #
            'projects_nums': projects_nums,
            'last_project': last_project,
            'total_donation': get_total_donotations(user),
            'last_donation': last_donation
        },
    }
    # print(context)
    # return HttpResponse("asdasd")
    return render(request, 'account/profile.html', context)
Exemplo n.º 9
0
 def get_context_data(self, **kwargs):
     logger.debug('Hello just testing logs')
     context = super(GeneralContextMixin, self).get_context_data(**kwargs)
     context["username"] = self.request.user.username
     context['projects'] = Project.objects.filter(
         account__user=self.request.user)
     context['project_form'] = ProjectForm()
     return context
Exemplo n.º 10
0
def update_project(request, **kwargs):
    """
    update draft project
    """
    # set variables
    pk = int(kwargs.get('pk'))
    current_project = get_object_or_404(Project, pk=pk)
    #create the formset, specifying the form you want to repeat and the baseformset that holds the validation rules
    if request.method == "POST":
        # populate the project form and the formset
        project_form = ProjectForm(request.POST, instance=current_project)
        team_formset = ProjectTeamFormSet(request.POST,
                                          instance=current_project,
                                          prefix="team")
        task_formset = TaskFormSet(request.POST,
                                   instance=current_project,
                                   prefix="task")
        # validate then save each form in the formset
        if project_form.is_valid() and team_formset.is_valid(
        ) and task_formset.is_valid():
            team_formset.save()
            task_formset.save()
            project_form.save()
            current_project.update_totals()
            messages.success(
                request, 'You have updated successfully updated your project.')
            return redirect(reverse('projects:projectList'))
        else:
            messages.error(
                request,
                'An unexpected error occurred. Your project was NOT saved.')

    else:
        project_form = ProjectForm(instance=current_project)
        team_formset = ProjectTeamFormSet(instance=current_project,
                                          prefix="team")
        task_formset = TaskFormSet(instance=current_project, prefix="task")

    context = {
        'project': current_project,
        'project_form': project_form,
        'team_formset': team_formset,
        'task_formset': task_formset,
    }

    return render(request, 'project/project_update_form.html', context)
Exemplo n.º 11
0
def create_project(request):
    """ Create new project. """
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            project = form.save(commit=False)
            form.save()
            project.collaborators.add(request.user)
            return redirect('/projects')
    else:
        form = ProjectForm()
        context = {
            'form': form,
            'update': False,
        }
        return render(request, 'project/project_form.html',
                      context)  # project_form
Exemplo n.º 12
0
def project_add(request):
    temp_name = "headers/project-header.html"
    if request.method == "POST":
        print "post"
        project_form = ProjectForm(request.POST)
        if project_form.is_valid():
            project_form.save()
            tips = u"增加成功!"
            display_control = ""
        else:
            tips = u"增加失败!"
            display_control = ""
        return render(request, "project/project_add.html", locals())
    else:
        print "get"
        display_control = "none"
        project_form = ProjectForm()
        return render(request, "project/project_add.html", locals())
Exemplo n.º 13
0
def project_create(request):
    year = Year.objects.last()
    today = datetime.date.today()
    difference = year.date_closed - today

    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            project = form.save(commit=False)
            project.budget_year = year
            project.submittedBy = request.user
            # form.post_project()
            form.save()
            return redirect('project:project_detail', pk=project.pk)
    else:
        form = ProjectForm()

    context = {'difference': difference, 'form': form}

    return render(request, 'project/project_form.html', context)
Exemplo n.º 14
0
 def get(self, request, manager_id):
     response = {'manager_id': manager_id}
     date = datetime.datetime.now()
     response['month'] = date.month
     response['year'] = date.year
     response['clients'] = User.objects.filter(role="client",
                                               createdby=manager_id)
     response['form'] = ProjectForm()
     response['form'].fields['status'].widget = forms.HiddenInput()
     response['projects'] = Project.objects.filter(createdby=manager_id)
     return render(request, 'project/project.html', response)
Exemplo n.º 15
0
def edit(request, project_id):
    project = get_object_or_404(Project, pk=project_id)
    if not project.is_admin(request.user):
        return render_to_response('project/no_permission.html')

    if request.method == "POST":
        project_form = ProjectForm(request.POST, instance=project)

        if project_form.is_valid():
            project_form.save()
            return HttpResponseRedirect('/projects/' + str(project_id) + '/')

    else:
        project_form = ProjectForm(instance=project)

    return render_to_response('project/edit.html', {
        'form': project_form,
        'project': project
    },
                              context_instance=RequestContext(request))
Exemplo n.º 16
0
def project_new(request):
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            project = Project()
            project.author = request.user
            project.first_name = form.cleaned_data['first_name']
            project.last_name = form.cleaned_data['last_name']
            project.email = form.cleaned_data['email']
            project.project_name = form.cleaned_data['project_name']
            project.project_description = form.cleaned_data[
                'project_description']
            project.project_notes = form.cleaned_data['project_notes']
            project.published_date = timezone.now()
            project.lang_choices = form.cleaned_data['select_lang']
            project.save()
            return redirect('projects')
    else:
        form = ProjectForm()
    return render(request, 'blog/project_new.html', {'form': form})
Exemplo n.º 17
0
 def post(self, request, *args, **kwargs):
     project = Project(author=request.user)
     id = kwargs.get('id')
     if id:
         project = Project.objects.get(id=id)
     form_data = ProjectForm(request.POST, instance=project)
     if form_data.is_valid():
         form_data.save()
         response = {'success': 'true'}
     else:
         response = {'success': 'false'}
     return HttpResponse(json.dumps(response))
Exemplo n.º 18
0
def project_describe_view(request):
    """
    Shows create project form if project_registered is false
    Shows successfully created message if project_registered is True
    """
    project_registered = False
    initiator = request.user
    if request.method == 'POST':
        project_form = ProjectForm(data=request.POST)
        if project_form.is_valid():
            project_detail = project_form.save()
            project_registered = True
            project_detail.initiated_by = request.user
            project_detail.save()
    # Not a HTTP POST, so we render our form using two ModelForm instances.
    # These forms will be blank, ready for user input.
    else:
        project_form = ProjectForm()
    return render(request, 'project/start_project.html', {
        'project_form': project_form,
        'project_registered': project_registered
    })
Exemplo n.º 19
0
def add_project(request):
    """
    Add project for own team
    :param request: Django Request
    :return: Rendered HTML
    """
    if not request.user.is_authenticated():
        return redirect('/')
    if not request.user.team:
        return redirect('/')
    project = request.user.team.project
    if request.method == 'POST':
        # handle post
        form = ProjectForm(request.POST, instance=project)
        if form.is_valid():
            project = form.save(commit=True)
            team = request.user.team
            team.project = project
            team.save()
            return redirect('project-view', pk=project.pk)
    form = ProjectForm(instance=project)
    data = {'form': form, 'user': request.user, 'error': None}
    return render(request, 'web/add_project.html', data)
Exemplo n.º 20
0
def update_project(request, pk):
    """ Update a specific project. """
    instance = Project.objects.get(id_project=pk)
    form = ProjectForm(request.POST or None, instance=instance)
    if request.method == 'POST':
        if form.is_valid():
            form.save()
            return redirect('/projects')
    else:
        context = {
            'form': form,
            'update': True,
        }
        return render(request, 'project/project_form.html', context)
Exemplo n.º 21
0
def project_update(request, pk):
    project = get_object_or_404(Project, pk=pk)
    form = ProjectForm(request.POST or None,
                       initial={
                           'first_name': project.first_name,
                           'last_name': project.last_name,
                           'email': project.email,
                           'project_name': project.project_name,
                           'project_description': project.project_description,
                           'project_notes': project.project_notes,
                           'select_langs': project.select_langs,
                       })

    return render(request, 'blog/project_new.html', {'form': form})
def project_update(request, id):
    data = {}
    project = Project.objects.get(id=id)
    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES, instance=project)
        if form.is_valid():
            data['sms'] = "The project was successfully updated!"
            project = form.save(commit=False)
            d = project.endDate - project.startDate
            if int(d.days) <= 0:
                project.days = 0
            else:
                project.days = int(d.days)
            team = Team.objects.all().filter(
                Q(user=request.user) & Q(project=project))
            new_Activity, created = Activity.objects.get_or_create(
                user=request.user,
                action='updated a project',
                all_activity=project.name)
            for t in team:
                new_Activity.target.add(t.member)
            project.save()
            data['form_is_valid'] = True
            p = Project.objects.all().filter(user=request.user)
            data['project_list'] = render_to_string('project/ProjectList.html',
                                                    {'p': p},
                                                    request=request)
        else:
            data['form_is_valid'] = False
    form = ProjectForm(instance=project)
    data['html_form'] = render_to_string('project/project_update.html', {
        'project': project,
        'form': form
    },
                                         request=request)
    return JsonResponse(data)
Exemplo n.º 23
0
 def post(self, request, manager_id):
     response = {'manager_id': manager_id}
     response['clients'] = User.objects.filter(role="client",
                                               createdby=manager_id)
     form = ProjectForm(request.POST)
     print form.errors
     if form.is_valid():
         f = form.save(commit=False)
         f.createdby = manager_id
         f.client_id = request.POST.get('client_id')
         f.save()
         return render(request, 'project/createproject.html')
     else:
         response['form'] = form
         return render(request, 'project/createproject.html', response)
Exemplo n.º 24
0
def save_project(request, **kwargs):
    if request.method == 'POST':
        user = request.user
        form = ProjectForm(request.POST, request.FILES)
        print form.is_valid()
        print form.errors
    if form.is_valid():
        project = form.save(commit=False)
        project.user = user
        link = project.video_link
        video_code = re.findall(r'v\=([\-\w]+)', link)[0]
        project.video_link = "//www.youtube.com/v/" + str(video_code)
        project.save()
        messages.info(request, 'Project has been successfully created')
        return HttpResponseRedirect('/project')
    else:
        raise Http404
Exemplo n.º 25
0
    def post(self, request, *args, **kwargs):
        form_data = ProjectForm(request.POST)
        form_data.author = request.user
        if form_data.is_valid():
            form_data.save()
            response = {'success': 'true'}
        # project = Project.objects().create(title=form_data.title,summary=form_data.summary,
        # 	description=form_data.description, author=request.user, goal=form_data.goal,
        # 	period=form_data.period,video_url=form_data.video_url,
        # 	risks_and_challenges=form_data.risks_and_challenges, ordering = 0,
        # 	start_date=form_data.start_date, status=UNAPPROVED)
        else:
            response = {'success': 'false'}

            print form_data.non_field_errors
            for field in form_data:
                print field.label
                print field.errors

        return HttpResponse(json.dumps(response))
Exemplo n.º 26
0
def editOrCreateStuff(project, request, creating):

    ## Note: if creating == true this is a post being created.
    #Because there are so many similarities in creating a post vs editing a post we are using this method, and using creating when we need to do something different for editing vs creating.

    ## postmode! We are getting pretty post data from the user!!!
    if request.method == 'POST':
        ## get the forms and check that they are valid
        formValid = False
        if creating:
            form = createForm(request.POST, project)
            form2 = defaulttag(request.POST)
            if form.is_valid() and form2.is_valid(
            ) and request.user.is_authenticated():
                formValid = True
                # If we are creating the post we need to set the author and title.
                project.author = request.user
                project.title = form.cleaned_data["title"]
        else:
            form = ProjectForm(request.POST, project)
            if form.is_valid() and str(project.author) == str(request.user):
                formValid = True
    ## if the form is valid make the changes to the project!
        if formValid:

            # Editing the Readme.md file stuff.

            if not creating:
                # Delete the old body text file... cause I'm a bad person and I don't know how to just open and write to the old one easily.
                readme = project.bodyFile
                try:
                    readme = project.bodyFile
                    readmename = path.split(str(readme.filename))[1]
                    readme.delete()
                except:
                    pass

        # Save body as file
            bodyText = fileobject()

            bodyText.parent = project

            from django.core.files.uploadedfile import UploadedFile
            import base64
            from io import BytesIO
            from io import TextIOWrapper
            from io import StringIO

            #io = TextIOWrapper(TextIOBase(form.cleaned_data["body"]))
            io = StringIO(form.cleaned_data["body"])
            txfl = UploadedFile(io)

            #editfield may be renaming your readme to readme.md every time. That's not good.
            try:
                bodyText.filename.save(readmename, txfl)
            except:
                bodyText.filename.save('README.md', txfl)

            txfl.close()
            io.close()

            bodyText.save()

            #### this did not appear to be happening in the create.... but I think it should have been?
            project.bodyFile = bodyText

            # Done with editing the README.md textfile.

            #
            list_to_tags(form.cleaned_data["tags"], project.tags)
            if creating:
                list_to_tags(form2.cleaned_data["categories"], project.tags,
                             False)

        # This may be redundant, but either way, this post is not a draft past this point.
            project.draft = False

            project.save()

            return HttpResponseRedirect('/project/' + str(project.pk))

    #### If the form data was NOT valid
        else:
            if creating:
                return render_to_response(
                    'create.html',
                    dict(user=request.user,
                         form=form,
                         form2=form2,
                         project=project))
            else:
                if str(project.author) == str(request.user):
                    return render_to_response(
                        'edit.html',
                        dict(
                            project=project,
                            user=request.user,
                            form=form,
                        ))
                else:
                    return HttpResponse(status=403)

#### Not POSTmode! We are setting up the form for the user to fill in. We are not getting form data from the user.

##### CREATE
    elif creating and request.user.is_authenticated():
        form = createForm("", project)
        form2 = defaulttag()
        return render_to_response(
            'create.html',
            dict(user=request.user, form=form, form2=form2, project=project))


##### EDIT
    elif (not creating) and str(project.author) == str(request.user):
        if project.bodyFile:
            readme = project.bodyFile.filename.read()
        else:
            readme = project.body

        taglist = []
        for i in project.tags.names():
            taglist.append(i)
        taglist = ",".join(taglist)

        thumbnailstring = "/" + path.split(project.thumbnail.filename.url)[1]
        form = ProjectForm(
            {
                'body': readme,
                'thumbnail': thumbnailstring,
                'tags': str(taglist)
            }, project)
        return render_to_response(
            'edit.html', dict(
                project=project,
                user=request.user,
                form=form,
            ))
        #return HttpResponse(response_data, mimetype="application/json")
    else:
        return HttpResponse(status=403)
Exemplo n.º 27
0
def create_project(request):
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            u = request.user
            salt = hashlib.sha1(str(random.random())).hexdigest()[:5]

            usernamesalt = request.user.email

            profile = Profile.objects.get(user_id=u.id)
            profile.activation_key = hashlib.sha1(salt + usernamesalt).hexdigest()
            profile.key_expires = timezone.now() + timedelta(days=2)

            domain = Domain.objects.create(
                name=form.cleaned_data['project'],
            )
            # create project for new user
            project = Project.objects.create(
                name=form.cleaned_data['project'],
                description='Project for %s ' % (u.username),
                domain=domain
            )

            # get role
            r = Role.objects.get(name="user")

            # assign new user as domain user
            assign_domain = Assignment.objects.create(
                type=3,
                actor=u,
                target_domain=domain,
                target_project=project,
                role=r
            )

            # assign new user as project user
            assign_project = Assignment.objects.create(
                type=1,
                actor=u,
                target_domain=domain,
                target_project=project,
                role=r,
            )

            # get first site
            site = Sites.objects.first()
            # get domain assignment
            domain = Assignment.objects.filter(actor=u.id)
            project = Assignment.objects.filter(actor=u.id)

            # get domain assignment
            domain = Assignment.objects.filter(actor=u.id)
            project = Assignment.objects.filter(actor=u.id)
            # if there is a site
            if site:
                # save site id to profile
                profile.selected_site = site.id
            profile.selected_domain = domain[0].target_domain_id
            profile.selected_project = project[0].target_project_id
            profile.save()

            # create domain for new user
            site_url = settings.SITE_ROOT_URL
            send_email({'u': u, 'profile': profile, 'site_url': site_url},
                       _('Welcome to our cloud'),
                       u.email,
                       settings.DEFAULT_EMAIL_FROM,
                       )
            return render(request,
                          'authcp/success.html',
                          {'u': u, 'profile': profile})

        else:
            print(form.errors)
    else:
        form = ProjectForm()

    title = _("Create Project")
    return render(request, 'project/create.html', {'form': form, 'title': title})
Exemplo n.º 28
0
def create_project(request):
    form = ProjectForm()  # A empty, unbound form
    return render(request,
                  'project/create.html', {'form': form},
                  context_instance=RequestContext(request))
Exemplo n.º 29
0
 def get_context_data(self, **kwargs):
     context = super(ProjectDisplay, self).get_context_data(**kwargs)
     context['form'] = ProjectForm()
     return context
Exemplo n.º 30
0
 def setUp(self):
     self.form = ProjectForm()