Exemplo n.º 1
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.º 2
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.º 3
0
def create_project(request):

    nav_options = get_nav_options(request)

    if request.method == 'POST':

        user = request.user
        form = ProjectForm(user=user, data=request.POST)

        if form.is_valid():
            project = form.save()
            viewers_group = project.create_viewers_group()
            collaborators_group = project.create_collaborators_group()

            # set groups permissions
            project.set_permissions(viewers_group)
            project.set_permissions(collaborators_group)

            return redirect('/project/%d' % project.ID)
    else:
        form = ProjectForm()

    return render(request, 'project/create-project.html',
                  {'form': form,
                   'nav_options': nav_options})
Exemplo n.º 4
0
def project_create(request):
	#template_project = Project()

	#form = ProjectForm(request.POST or template_project)
	form = ProjectForm(request.POST or None, initial={})
	if form.is_valid():
		
		new_project = Project(title=form.cleaned_data['title'], description=form.cleaned_data['description'], url=form.cleaned_data['url'], open=form.cleaned_data['open'])
		new_project.save()
		
		#new_project = form.save()
		
		new_position = admin_position_default
		
		new_position.project = new_project
		
		new_position.save()
		
		relation = ProjectRelation(admin=True, user=request.user.userdata, project=new_project)
		relation.save()
		
		new_position.project_relation = relation
		new_position.save()
		
		
		admin_position_default.id=None
		
		for interest in form.cleaned_data['interests']:
			pi = ProjectInterest(project=new_project, interest=interest)
			pi.save()
		
		return redirect(project_detail, new_project.id)
	
	return render_to_response('project/create.html', {'form': form}, context_instance=RequestContext(request))
Exemplo n.º 5
0
def create( request, badge_id ):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = { 'badge': badge }
    user_uri = request.session['user']['uri']

    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
    else:
        form = ProjectForm()

    if form.is_valid():
        image = media_api.upload_image(request.FILES['image'], user_uri)
        try:
            project = project_api.create_project(
                badge['uri'],
                user_uri,
                form.cleaned_data['title'],
                image['uri'],
                form.cleaned_data['work_url'],
                form.cleaned_data['description'],
                form.cleaned_data['reflection'],
                form.cleaned_data['tags']
            )
            return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],)))
        except project_api.MultipleProjectError:
            messages.error(request, _('You have already submitted a project for this badge.'))

    context['form'] = form
    return render_to_response(
        'project/create.html',
        context,
        context_instance=RequestContext(request)
    )
Exemplo n.º 6
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.º 7
0
def edit_project(request, project_id):
    project = get_object_or_404(Project, id=project_id, owner=request.user)
    form = ProjectForm(request.POST or None, instance=project)
    if form.is_valid():
        form.save()
        return redirect(project.ide_url())

    return render_to_response("projects/edit_project_form.html",
            RequestContext(request, {'form': form}))
Exemplo n.º 8
0
def new_project(request):
    project_form = ProjectForm()
    if request.method == 'POST':
        project_form = ProjectForm(request.POST)
        if project_form.is_valid():
            project_form.save()
            return redirect('projects')

    context = {'project_form': project_form}
    return render(request, 'new_project.html', context)
Exemplo n.º 9
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.º 10
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.º 11
0
def add_project(request):
    if request.POST:
        form = ProjectForm(request.POST)
        args = {}
        args['name'] = request.POST.get('name')
        if form.is_valid():
            project = form.save(commit=False)
            project.user = auth.get_user(request)
            project.name = args['name']
            project.save()
            args['id'] = project.id

        return render_to_response( 'project.html', args)
Exemplo n.º 12
0
def add_project(request):
    '''
    Create a new project for the current user.
    '''
    if request.method == 'POST': 
        form = ProjectForm(request.POST)
        if form.is_valid():
            project = form.save(commit=False)
            project.creator = request.user
            project.save()
            return render_to_response('account/my_account.html', RequestContext(request, locals()))
    else:
        form = ProjectForm()
    return render_to_response('project/add_project.html', RequestContext(request, locals()))
Exemplo n.º 13
0
def backstage_content_form(request, project):
    project = get_project(request, project, 'manage_content')

    if request.POST:
        form = ProjectForm(request.POST, instance=project)
        if form.is_valid():
            form.save()
            message_object_updated(request, project)
    else:
        form = ProjectForm(instance=project)

    return render(request, 'project/content-form.html',
                  get_context_backstage_project(request, project, 'bs-content',
                                                {'project': project, 'form': form}))
Exemplo n.º 14
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.º 15
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.º 16
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.º 17
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.º 18
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.º 19
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.º 20
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.º 21
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.º 22
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.º 23
0
def create(request, badge_id):
    badge = badge_api.get_badge(badge_api.id2uri(badge_id))
    fetch_badge_resources(badge)
    context = {'badge': badge}
    user_uri = request.session['user']['uri']

    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
    else:
        form = ProjectForm()

    if form.is_valid():

        try:
            image = media_api.upload_image(
                request.FILES['image'],
                user_uri,
                media_root=settings.MEDIA_ROOT,
                delete_original=True)

            project = project_api.create_project(
                badge['uri'],
                user_uri,
                form.cleaned_data['title'],
                image['uri'],
                form.cleaned_data['work_url'],
                form.cleaned_data['description'],
                form.cleaned_data['reflection'],
                form.cleaned_data['tags']
            )
            return http.HttpResponseRedirect(reverse('project_view', args=(project['id'],)))
        except project_api.MultipleProjectError:
            messages.error(request, _('You have already submitted a project for this badge.'))
        except media_api.UploadImageError:
            messages.error(request, _('Project image cannot be uploaded. Possible reasons: format not supported'
                                      '(png, jpeg, jpg, gif), file size too large (up to 256kb).'))

    context['form'] = form
    return render_to_response(
        'project/create.html',
        context,
        context_instance=RequestContext(request)
    )
Exemplo n.º 24
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.º 25
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.º 26
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.º 27
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})
Exemplo n.º 28
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.º 29
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.º 30
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.º 31
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.º 32
0
def editOrCreateStuff(project, request):
  if request.user.is_authenticated() and str(project.author) == str(request.user):
  ## postmode! We are getting pretty post data from the user!!!
    if request.method == 'POST':
        if (request.POST['action']=="Delete"):
            project.delete()
            return HttpResponseRedirect('/mydrafts/')

        ## get the forms and check that they are valid

        form = ProjectForm(request.POST.copy(), project)
        if form.is_valid():
            project.valid=True

        ## Title related stuff. Setting it, making sure it's still there, whatever.

        if "title" in form.cleaned_data and form.cleaned_data["title"]: # if that data is not a blank string
            project.title = form.cleaned_data["title"] # than we do change the title
        else:
            form.data['title'] = project.title

        project.updateReadme(form.cleaned_data["body"])
        list_to_tags(form.cleaned_data["tags"], project.tags)

        #### All this fun stuff is handeling what happens for trying to publish vs trying to save the project.
        if project.valid:
            if(request.POST['action']=="Publish"):
                project.draft=False
                project.save()
                return HttpResponseRedirect('/project/'+str(project.pk))
            elif(request.POST['action'] in ["Save", "Update"]):
                project.save()
                return HttpResponseRedirect('/mydrafts/')
        else:
            project.save()
            draftSaved = True
            return render_to_response('edit.html', RequestContext(request,{'project':project, 'user':request.user, 'form':form, 'draftSaved':draftSaved,}))

    #### Not a POST request. We are setting up the form for the user to fill in. We are not getting form data from the user.
    else:
        form = project.get_form()## this gets a form filled with the projects data
        form.errors['title'] = ""#form['body'].error_class()
        form.errors['thumbnail'] = ""#form['body'].error_class()
        form.errors['body'] = ""#form['body'].error_class()
        return render_to_response('edit.html', RequestContext(request,{'project':project, 'user':request.user, 'form':form}))

  else: ##If the user isn't authenticated.
      return HttpResponse(status=403)
Exemplo n.º 33
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.º 34
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.º 35
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.º 36
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.º 37
0
def save_project(request):
    if request.method == "POST":
        form = ProjectForm(request.POST, request.FILES)
        if form.is_valid():
            project = form.save(commit=False)
            print 'pass'
            #project.misc = request.POST['misc']
            project.link_fb = request.POST['link_fb']
            project.link_tw = request.POST['link_tw']
            project.link_inst = request.POST['link_inst']
            project.save()
            form.save_m2m()
            messages.info(request, 'Project has been successfully created and needs a review from website administrator.')
            send_mail('MoolahForTheDoula', 'A new project has been submitted. Please login as admin to verify and approve this project.', '*****@*****.**',
            ['*****@*****.**'], fail_silently=False)
            print 'passssssssss'
            return HttpResponseRedirect('/doula')
        else:
            form = ProjectForm()
            messages.info(request, 'Please check your entry.')
    else:
        form = ProjectForm()

    return render_to_response("create.html", RequestContext(request, {'form': form}))
Exemplo n.º 38
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.º 39
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)
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.º 41
0
def project_metadata(request, docid, template="project_metadata.html"):

    document = None
    try:
        document = _resolve_document_geo(request, docid, "base.change_resourcebase", _PERMISSION_MSG_METADATA)

    except Http404:
        return HttpResponse(loader.render_to_string("404.html", RequestContext(request, {})), status=404)

    except PermissionDenied:
        return HttpResponse(
            loader.render_to_string(
                "401.html", RequestContext(request, {"error_message": _("You are not allowed to edit this document.")})
            ),
            status=403,
        )

    if document is None:
        return HttpResponse("An unknown error has occured.", mimetype="text/plain", status=401)

    else:
        poc = document.poc
        metadata_author = document.metadata_author
        topic_category = document.category
        external_person = document.external_person

        if request.method == "POST":
            document_form = ProjectForm(request.POST, instance=document, prefix="resource")
            category_form = CategoryForm(
                request.POST,
                prefix="category_choice_field",
                initial=int(request.POST["category_choice_field"]) if "category_choice_field" in request.POST else None,
            )
        else:
            document_form = ProjectForm(instance=document, prefix="resource")
            category_form = CategoryForm(
                prefix="category_choice_field", initial=topic_category.id if topic_category else None
            )

        if request.method == "POST" and document_form.is_valid() and category_form.is_valid():
            new_poc = document_form.cleaned_data["poc"]
            # new_author = document_form.cleaned_data['metadata_author']
            new_keywords = document_form.cleaned_data["keywords"]
            new_ep = document_form.cleaned_data["external_person"]
            new_category = TopicCategory.objects.get(id=category_form.cleaned_data["category_choice_field"])

            if new_poc is None:
                if poc.user is None:
                    poc_form = ProfileForm(request.POST, prefix="poc", instance=poc)
                else:
                    poc_form = ProfileForm(request.POST, prefix="poc")
                if poc_form.has_changed and poc_form.is_valid():
                    new_poc = poc_form.save()

            if new_ep is None:
                if external_person is None:
                    print "EP is None"
                    ep_form = ExternalPersonForm(request.POST, prefix="external_person", instance=external_person)
                else:
                    ep_form = ExternalPersonForm(request.POST, prefix="external_person")
                if ep_form.has_changed and ep_form.is_valid():
                    print "entro a salvar"
                    new_ep = ep_form.save()
            """
            if new_author is None:
                if metadata_author is None:
                    author_form = ProfileForm(request.POST, prefix="author",
                                              instance=metadata_author)
                else:
                    author_form = ProfileForm(request.POST, prefix="author")
                if author_form.has_changed and author_form.is_valid():
                    new_author = author_form.save()
            """
            if new_poc is not None and new_ep is not None:
                the_document = document_form.save()
                the_document.poc = new_poc
                # the_document.metadata_author = new_author
                the_document.keywords.add(*new_keywords)
                Project.objects.filter(id=the_document.id).update(category=new_category, external_person=new_ep)
                return HttpResponseRedirect(reverse("project_detail", args=(document.id,)))

        if external_person is None:
            ep_form = ExternalPersonForm(instance=external_person, prefix="external_person")
        else:
            document_form.fields["external_person"].initial = external_person
            ep_form = ExternalPersonForm(prefix="external_person")
            ep_form.hidden = True

        if poc is None:
            poc_form = ProfileForm(request.POST, prefix="poc")
        else:
            if poc is None:
                poc_form = ProfileForm(instance=poc, prefix="poc")
            else:
                document_form.fields["poc"].initial = poc.id
                poc_form = ProfileForm(prefix="poc")
                poc_form.hidden = True

        if metadata_author is None:
            author_form = ProfileForm(request.POST, prefix="author")
        else:
            if metadata_author is None:
                author_form = ProfileForm(instance=metadata_author, prefix="author")
            else:
                # document_form.fields[
                #    'metadata_author'].initial = metadata_author.id
                author_form = ProfileForm(prefix="author")
                author_form.hidden = True

        return render_to_response(
            template,
            RequestContext(
                request,
                {
                    "document": document,
                    "document_form": document_form,
                    "ep_form": ep_form,
                    "poc_form": poc_form,
                    "author_form": author_form,
                    "category_form": category_form,
                },
            ),
        )
Exemplo n.º 42
0
 def setUp(self):
     self.form = ProjectForm()
Exemplo n.º 43
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.º 44
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:
                for i in form2.cleaned_data["categories"]:
                    project.tags.add(i)

         # 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.º 45
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.º 46
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.º 47
0
def new_project(request, pid='', nid=''):
    #没登陆的提示去登录
    if not request.user.is_authenticated():
        return HttpResponseRedirect("/nologin")
    #编辑的得有编辑权限
    if pid:
        uid = request.session['id']
        cpro = models.project.objects.get(id=pid)
        #如果是负责人且有编辑权限才可以
        flag = 0
        if uid == cpro.leader_p_id or uid == cpro.designer_p_id or uid == cpro.tester_p_id or request.user.has_perm('auth.change_permission'):
            if request.user.has_perm('project.change_project'):
                flag = 1

        if not flag:
            return HttpResponseRedirect("/noperm")

    #新建的得有新建权限
    if not pid and not request.user.has_perm('project.add_project'):
        return HttpResponseRedirect("/noperm")

    if request.user.has_perm('auth.change_permission'):
        editdate = 1
    else:
        editdate = 0
    form = ProjectForm()
    if request.method == 'POST':
        form = ProjectForm(request.POST)
        if form.is_valid():
            priority = form.cleaned_data['priority']
            pname = form.cleaned_data['pname']
            status = form.cleaned_data['status']
            leaderid = form.cleaned_data['leader']
            leader = models.user.objects.get(id=leaderid)
            designer = form.cleaned_data['designer']
            if designer:
                designer = models.user.objects.get(id=designer)
            tester = form.cleaned_data['tester']
            if tester:
                tester = models.user.objects.get(id=tester)
            sdate = form.cleaned_data['startdate']
            pdate = form.cleaned_data['plandate']
            psdate = form.cleaned_data['psdate']
            pedate = form.cleaned_data['pedate']
            dsdate = form.cleaned_data['dsdate']
            dedate = form.cleaned_data['dedate']
            tsdate = form.cleaned_data['tsdate']
            tedate = form.cleaned_data['tedate']
            ppath = form.cleaned_data['ppath']
            dppath = form.cleaned_data['dppath']
            tppath = form.cleaned_data['tppath']
            tcpath = form.cleaned_data['tcpath']
            trpath = form.cleaned_data['trpath']
            relateduser = form.cleaned_data['relateduser']

            if pid == '' or nid == '1':
                pro = models.project(priority=priority, \
                    project=pname, status_p=status, leader_p=leader, \
                    designer_p=designer, tester_p=tester, start_date=sdate, \
                    expect_launch_date=pdate, \
                    estimated_product_start_date=psdate, \
                    estimated_product_end_date=pedate, \
                    estimated_develop_start_date=dsdate, \
                    estimated_develop_end_date=dedate, \
                    estimated_test_start_date=tsdate, \
                    estimated_test_end_date=tedate, blueprint_p=ppath, \
                    develop_plan_p=dppath, test_plan_p=tppath, \
                    test_case_p=tcpath, test_report_p=trpath, isactived=1)
            else:
                rdate = models.project.objects.get(id=pid).real_launch_date
                pnum = models.project.objects.get(id=pid).praise_p
                pro = models.project(id=pid, priority=priority,\
                    project=pname, status_p=status, leader_p=leader, \
                    designer_p=designer, tester_p=tester, start_date=sdate, \
                    expect_launch_date=pdate, \
                    real_launch_date=rdate, \
                    estimated_product_start_date=psdate, \
                    estimated_product_end_date=pedate, \
                    estimated_develop_start_date=dsdate, \
                    estimated_develop_end_date=dedate, \
                    estimated_test_start_date=tsdate, \
                    estimated_test_end_date=tedate, blueprint_p=ppath, \
                    develop_plan_p=dppath, test_plan_p=tppath, \
                    test_case_p=tcpath, test_report_p=trpath, \
                    isactived=1, praise_p=pnum)
            pro.save()
            #存完项目,存相关产品测试开发人员信息
            relateduser = relateduser.replace(" ", "").split(",")
            if len(relateduser):
                if pid == '' or nid =='1':
                    pid = models.project.objects.filter\
                    (project=pname).order_by("-id")[0].id
                else:
                    models.project_user.objects.filter(project_id=pid).delete()
                    #
                for uid in relateduser:
                    if uid:
                        project_user = models.project_user\
                        (username_id=uid, project_id=pid, isactived=1)
                        project_user.save()

            #给项目的各负责人添加编辑项目权限
            musername = models.user.objects.get(id=leaderid).username
            #给项目负责人加入到项目负责人权限组
            User.objects.get(username=musername).groups.add(4)
            if designer:
                dusername = models.user.objects.get\
                (id=form.cleaned_data['designer']).username
                #给产品负责人加入到产品负责人权限组
                User.objects.get(username=dusername).groups.add(5)
            if tester:
                tusername = models.user.objects.get\
                (id=form.cleaned_data['tester']).username
                #给测试负责人加入到测试负责人权限组
                User.objects.get(username=tusername).groups.add(6)


            #给项目负责人添加申请延期权限
            #User.objects.get(username=musername).user_permissions.add(34)

            #上线后插条公告,如果表中项目ID存在,排序看isactived是否为0,如果不存在该项目ID或最小的isactived=0,则插入公告
            if status == "已上线":
                flag = 0
                prolist = public_message.objects.filter\
                (project=pid).order_by("isactived")
                try:
                    prolist[0].isactived
                except IndexError:
                    try:
                        request.session['id']
                    except KeyError:
                        return HttpResponseRedirect("/nologin")
                    else:
                        flag = 1                        
                else:
                    if prolist[0].isactived != 0:
                        try:
                            request.session['id']
                        except KeyError:
                            return HttpResponseRedirect("/nologin")
                        else:
                            flag = 1
                if flag == 1:        
                    usrid = request.session['id']
                    project = models.project.objects.get(id=pid)
                    time = datetime.datetime.now().strftime("%Y-%m-%d %H:%I:%S")
                    content = project.project + u"于"+time+u"已上线"
                    pmessage = public_message(project=pid, \
                                              publisher=usrid, content=content, type_p="notice", \
                                              publication_date=datetime.datetime.now(), \
                                              isactived=False)
                    pmessage.save()
                    project.real_launch_date = datetime.datetime.now()
                    project.save()                   
            return redirect('/projectlist/')
    return render_to_response('newproject.html', \
        {'form':form, 'editdate':editdate}, context_instance=RequestContext(request))
Exemplo n.º 48
0
 def get_context_data(self, **kwargs):
     context = super(ProjectDisplay, self).get_context_data(**kwargs)
     context['form'] = ProjectForm()
     return context