コード例 #1
0
    def get(self, request, *args, **kwargs):
        # Redirects user to tracking home page if he doesn't get here from new
        #    charter or event forms
        try:
            referer = request.META["HTTP_REFERER"]
        except KeyError:
            return redirect("tracking:project_list")

        allowed_urls = [
            re.compile(r"^{}$".format(urlReverse("tracking:charter_add"))),
            re.compile(r"^{}$".format(
                urlReverse("tracking:charter_update",
                           kwargs={'pk': kwargs["pk"]}))),
            re.compile(r"^{}$".format(urlReverse("tracking:event_add"))),
            re.compile(r"^{}$".format(
                urlReverse("tracking:event_add_specific",
                           kwargs={'pk': kwargs["pk"]}))),
            re.compile(r"^{}$".format(
                urlReverse("tracking:event_update",
                           kwargs={'pk': kwargs["pk"]}))),
        ]

        path = urlparse.urlparse(referer).path

        if any(url.match(path) for url in allowed_urls):
            return super(SuccessView, self).get(self, *args, **kwargs)
        else:
            return redirect("tracking:project_list")
コード例 #2
0
 def __init__(self, *args, **kwargs):
     super(CharterForm, self).__init__(*args, **kwargs)
     # Alphabetize selections
     self.fields["countries"].queryset = Country.objects.order_by("name")
     self.fields["lead_dept"].queryset = Department.objects.order_by("name")
     # Add custom class and range of selection
     year = datetime.datetime.now().year
     self.fields["start_date"] = forms.DateField(widget=SelectDateWidget(
         years=range(year - 2, year + 10), attrs={"class": "date-input"}))
     self.fields["end_date"] = forms.DateField(widget=MySelectDateWidget(
         years=range(year - 2, year + 10), attrs={"class": "date-input"}))
     # Prep for jQuery select2 transformation
     self.fields["language"] = forms.CharField(widget=forms.TextInput(
         attrs={
             "class": "language-selector",
             "data-source-url": urlReverse("names_autocomplete")
         }),
                                               required=True)
     # Fill out the necessary attribute to display the selected language info
     #    if the form already has it.
     if self.instance.pk:
         lang = self.instance.language
         if lang:
             fill_search_language(self, "language", lang)
     elif self.data.get("language", None):
         try:
             lang = Language.objects.get(pk=self.data["language"])
             fill_search_language(self, "language", lang)
         except:
             pass
コード例 #3
0
 def __init__(self, *args, **kwargs):
     super(CharterForm, self).__init__(*args, **kwargs)
     # Alphabetize selections
     self.fields["countries"].queryset = Country.objects.order_by("name")
     self.fields["lead_dept"].queryset = Department.objects.order_by("name")
     # Add custom class and range of selection
     year = datetime.datetime.now().year
     self.fields["start_date"] = forms.DateField(
         widget=SelectDateWidget(years=range(year - 2, year + 10), attrs={"class": "date-input"})
     )
     self.fields["end_date"] = forms.DateField(
         widget=MySelectDateWidget(years=range(year - 2, year + 10), attrs={"class": "date-input"})
     )
     # Prep for jQuery select2 transformation
     self.fields["language"] = forms.CharField(
         widget=forms.TextInput(
             attrs={"class": "language-selector", "data-source-url": urlReverse("names_autocomplete")}
         ),
         required=True,
     )
     # Fill out the necessary attribute to display the selected language info
     #    if the form already has it.
     if self.instance.pk:
         lang = self.instance.language
         if lang:
             fill_search_language(self, "language", lang)
     elif self.data.get("language", None):
         try:
             lang = Language.objects.get(pk=self.data["language"])
             fill_search_language(self, "language", lang)
         except:
             pass
コード例 #4
0
    def get_form(self, step=None, data=None, files=None):
        if step is None:
            step = self.steps.current

        if step == "0" and self.request.POST:
            # Create array container for field names
            charter_fields = []
            # Iterate through post data...
            for key in sorted(data):
                # ... to look for our language fields and add them to the array
                if key.startswith("0-language"):
                    charter_fields.append(key)
            # Create a a dictionary of the field name and field definition for every language fields we have
            attrs = dict((field, forms.CharField(
                label="Charter",
                max_length=200,
                widget=forms.TextInput(
                    attrs={
                        "class": "language-selector-marked form-control",
                        "data-source-url": urlReverse("tracking:charters_autocomplete"),
                        "value": data[field],
                    }
                ),
                required=True,
            )) for field in charter_fields)
            # Dynamically create a new Form object with the field definitions
            NewForm = type("NewForm", (MultiCharterEventForm1,), attrs)
            # Bind modified posted data to the new form
            form = NewForm(data)
        else:
            # Otherwise, returns a form that would have been returned
            form = super(MultiCharterEventView, self).get_form(step, data, files)

        return form
コード例 #5
0
def loginView(request):
	if request.method == 'GET':
		return render(request, 'user/login.html', {
			'page_title': '»Login',
		})

	user = authenticate(username=request.POST['username'], password=request.POST['password'])
	if user is not None:
		# the password verified for the user
		if user.is_active:
			baseUrl = urlReverse('base-view')
			nextUrl = request.GET.get('next', baseUrl)
			login(request, user)
			print('---- login user: '******' redirect to ' + nextUrl)
			Log.log_action(request, "ورود به سامانه")
			return HttpResponseRedirect(nextUrl)

		else:
			# print("The password is valid, but the account has been disabled!")
			return render(request, 'user/login.html', {
				'page_title': 'Login',
				'invalidLogin': True,
				'errorMessage': 'Account has been deactivated.'
			})
	else:
		# the authentication system was unable to verify the username and password
		return render(request, 'user/login.html', {
			'page_title': 'Login',
			'invalidLogin': True,
			'errorMessage': 'Invalid username or password.'
		})
コード例 #6
0
def rateKnowledgeAJ(request, knowledge_id):
    user = users.models.getKnowledgeUser(request.user)
    kn = get_object_or_404(knowledge.models.Knowledge, pk=knowledge_id)

    if user.privilege < kn.access:
        return HttpResponseForbidden('access denied.')

    vote = request.GET['vote']
    kn.rate(user, (vote == 'up'))
    # try:
    # 	rate = knowledge.models.Rate.objects.get(knowledge=kn, voter=user)
    # except:
    # 	rate = knowledge.models.Rate()
    # 	rate.knowledge = kn
    # 	rate.voter = user
    #
    # rate.up =
    # rate.save()
    #
    # print('rate:')
    # print(rate)
    Log.log_action(request, 'به دانش ' + kn.subject + ' رتبه داده شد.')

    return HttpResponseRedirect(
        urlReverse('show-knowledge', kwargs={'knowledge_id': kn.id}))
コード例 #7
0
def showSpecialprivilageRequest(request):
	success = False
	if request.method == 'GET':
		form = SpecialPrivilegeForm()
	if request.method == 'POST':
		form = SpecialPrivilegeForm(request.POST)
		print('---- validating form')
		if form.is_valid():
			print('---- valid form')
			mod = form.save(commit=False)
			kuser = users.models.getKnowledgeUser(request.user)
			mod.user = kuser
			mod.url = urlReverse('show-user-profile', kwargs={'user_id': kuser.id})
			mod.save()
			success = True
			Log.log_action(request,'درخواست دسترسی ویژه ثبت شد.')

		else :
			print('---- invalid form')

	return render(request, 'user/show-special-privilage-request.html', addUserInfoContext(request, {
		'page_title': 'Special privilege request',
		'form': form,
		'success': success
	}))
コード例 #8
0
 def __init__(self, pk="-1", *args, **kwargs):
     super(EventForm, self).__init__(*args, **kwargs)
     # Alphabetize items in selection
     self.fields = determine_widget(
         self.fields,
         ["departments", "hardware", "software", "translation_methods", "output_target", "publication"],
         9,
     )
     self.fields["departments"].queryset = Department.objects.order_by("name")
     self.fields["hardware"].queryset = Hardware.objects.order_by("name")
     self.fields["software"].queryset = Software.objects.order_by("name")
     self.fields["translation_methods"].queryset = TranslationMethod.objects.order_by("name")
     self.fields["output_target"].queryset = Output.objects.order_by("name")
     self.fields["publication"].queryset = Publication.objects.order_by("name")
     # Add custom class and determine the range of selection
     year = datetime.datetime.now().year
     self.fields["start_date"] = forms.DateField(
         widget=SelectDateWidget(years=range(year - 2, year + 10), attrs={"class": "date-input"})
     )
     self.fields["end_date"] = forms.DateField(
         widget=MySelectDateWidget(years=range(year - 2, year + 10), attrs={"class": "date-input"})
     )
     # Prep charter field for jQuery select2 transformation
     # Preserve the "pk" arg in the element's data attr if there's any
     self.fields["charter"] = forms.CharField(
         widget=forms.TextInput(
             attrs={
                 "class": "language-selector",
                 "data-source-url": urlReverse("tracking:charters_autocomplete"),
                 "data-charter-pk": pk if pk != "-1" else "",
             }
         ),
         required=True,
     )
     # Fill out the charter selection with necessary info if ...
     # ... the form is bound to a model ???
     if self.instance.pk:
         charter = self.instance.charter
         if charter:
             fill_search_charter(self, "charter", charter)
     # ... the form is posted back ...
     elif self.data.get("charter"):
         # Prioritize getting the charter "pk" from widget attribute
         pk = self.fields["charter"].widget.attrs["data-charter-pk"]
         if pk == "":
             pk = self.data.get("charter")
         try:
             charter = Charter.objects.get(pk=int(pk))
             fill_search_charter(self, "charter", charter)
         except Charter.DoesNotExist:
             # If there's no charter, there's nothing to do
             pass
     # ... the URL provides a "pk" arg.
     elif int(pk) >= 0:
         try:
             charter = Charter.objects.get(id=pk)
             fill_search_charter(self, "charter", charter)
         except Charter.DoesNotExist:
             # If there's no charter, there's nothing to do
             pass
コード例 #9
0
def rateKnowledgeAJ(request, knowledge_id):
	user = users.models.getKnowledgeUser(request.user)
	kn = get_object_or_404(knowledge.models.Knowledge, pk=knowledge_id)

	if user.privilege < kn.access:
		return HttpResponseForbidden('access denied.')

	vote = request.GET['vote']
	kn.rate(user, (vote == 'up'))
	# try:
	# 	rate = knowledge.models.Rate.objects.get(knowledge=kn, voter=user)
	# except:
	# 	rate = knowledge.models.Rate()
	# 	rate.knowledge = kn
	# 	rate.voter = user
	#
	# rate.up =
	# rate.save()
	#
	# print('rate:')
	# print(rate)
	Log.log_action(request, 'به دانش ' + kn.subject + ' رتبه داده شد.')


	return HttpResponseRedirect(urlReverse('show-knowledge', kwargs={'knowledge_id': kn.id}))
コード例 #10
0
 def __init__(self, pk="-1", *args, **kwargs):
     super(EventForm, self).__init__(*args, **kwargs)
     # Alphabetize items in selection
     self.fields = determine_widget(self.fields, [
         "departments", "hardware", "software", "translation_methods",
         "output_target", "publication"
     ], 9)
     self.fields["departments"].queryset = Department.objects.order_by(
         "name")
     self.fields["hardware"].queryset = Hardware.objects.order_by("name")
     self.fields["software"].queryset = Software.objects.order_by("name")
     self.fields[
         "translation_methods"].queryset = TranslationMethod.objects.order_by(
             "name")
     self.fields["output_target"].queryset = Output.objects.order_by("name")
     self.fields["publication"].queryset = Publication.objects.order_by(
         "name")
     # Add custom class and determine the range of selection
     year = datetime.datetime.now().year
     self.fields["start_date"] = forms.DateField(widget=SelectDateWidget(
         years=range(year - 2, year + 10), attrs={"class": "date-input"}))
     self.fields["end_date"] = forms.DateField(widget=MySelectDateWidget(
         years=range(year - 2, year + 10), attrs={"class": "date-input"}))
     # Prep charter field for jQuery select2 transformation
     # Preserve the "pk" arg in the element's data attr if there's any
     self.fields["charter"] = forms.CharField(widget=forms.TextInput(
         attrs={
             "class": "language-selector",
             "data-source-url": urlReverse(
                 "tracking:charters_autocomplete"),
             "data-charter-pk": pk if pk != "-1" else ""
         }),
                                              required=True)
     # Fill out the charter selection with necessary info if ...
     # ... the form is bound to a model ???
     if self.instance.pk:
         charter = self.instance.charter
         if charter:
             fill_search_charter(self, "charter", charter)
     # ... the form is posted back ...
     elif self.data.get("charter"):
         # Prioritize getting the charter "pk" from widget attribute
         pk = self.fields["charter"].widget.attrs["data-charter-pk"]
         if pk == "":
             pk = self.data.get("charter")
         try:
             charter = Charter.objects.get(pk=int(pk))
             fill_search_charter(self, "charter", charter)
         except Charter.DoesNotExist:
             # If there's no charter, there's nothing to do
             pass
     # ... the URL provides a "pk" arg.
     elif int(pk) >= 0:
         try:
             charter = Charter.objects.get(id=pk)
             fill_search_charter(self, "charter", charter)
         except Charter.DoesNotExist:
             # If there's no charter, there's nothing to do
             pass
コード例 #11
0
def downloadPDF(request, file_name):
    if request.user.is_authenticated():
        file = open('static/dist/files/{}'.format(file_name), 'rb')
        response = HttpResponse(file, content_type="application/pdf")
        response["Content-Disposition"] = "attachment; filename={}".format(file_name)
        return response
    else:
        return HttpResponseRedirect(urlReverse("tracking:project_list"))
コード例 #12
0
 def __init__(self, *args, **kwargs):
     super(MultiCharterForm, self).__init__(*args, **kwargs)
     #
     self.fields["language"] = forms.CharField(widget=forms.TextInput(
         attrs={
             "class": "language-selector-marked",
             "data-source-url": urlReverse("names_autocomplete")
         }),
                                               required=True)
コード例 #13
0
 def __init__(self, *args, **kwargs):
     super(MultiCharterForm, self).__init__(*args, **kwargs)
     #
     self.fields["language"] = forms.CharField(
         widget=forms.TextInput(
             attrs={"class": "language-selector-marked", "data-source-url": urlReverse("names_autocomplete")}
         ),
         required=True,
     )
コード例 #14
0
 def form_valid(self, form):
     self.create_new_item(self.request.session.get("new_item_info"), self.request.POST)
     send_mail(
         'tD New Item',
         'Some new items needs to be added to the event.' + str(self.request.POST),
         self.request.user.email,
         ['*****@*****.**'],
         fail_silently=False
     )
     messages.success(self.request, "Yes! Your submission info has been updated. If there's any problem with your submission, you'll be contacted via email by the admin.")
     return HttpResponseRedirect(urlReverse("tracking:project_list"))
コード例 #15
0
    def get(self, request, *args, **kwargs):
        # Redirects user to tracking home page if he doesn't get here from new
        #    charter or event forms
        try:
            referer = request.META["HTTP_REFERER"]
        except KeyError:
            return redirect("tracking:project_list")

        allowed_urls = [
            re.compile(r"^{}$".format(urlReverse("tracking:charter_add"))),
            re.compile(r"^{}$".format(urlReverse("tracking:charter_update", kwargs={'pk': kwargs["pk"]}))),
            re.compile(r"^{}$".format(urlReverse("tracking:event_add"))),
            re.compile(r"^{}$".format(urlReverse("tracking:event_add_specific", kwargs={'pk': kwargs["pk"]}))),
            re.compile(r"^{}$".format(urlReverse("tracking:event_update", kwargs={'pk': kwargs["pk"]}))),
        ]

        path = urlparse.urlparse(referer).path

        if any(url.match(path) for url in allowed_urls):
            return super(SuccessView, self).get(self, *args, **kwargs)
        else:
            return redirect("tracking:project_list")
コード例 #16
0
 def form_valid(self, form):
     self.create_new_item(self.request.session.get("new_item_info"),
                          self.request.POST)
     send_mail('tD New Item',
               'Some new items needs to be added to the event.' +
               str(self.request.POST),
               self.request.user.email, ['*****@*****.**'],
               fail_silently=False)
     messages.success(
         self.request,
         "Yes! Your submission info has been updated. If there's any problem with your submission, you'll be contacted via email by the admin."
     )
     return HttpResponseRedirect(urlReverse("tracking:project_list"))
コード例 #17
0
 def __init__(self, *args, **kwargs):
     super(MultiCharterStarter, self).__init__(*args, **kwargs)
     # Add initial language field. This field's HTML name will be prefixed with "0-"
     #    by FormWizard and will be overriden by a new form in the MultiCharterEventView.
     self.fields["language_0"] = forms.CharField(
         label="Charter",
         max_length=200,
         widget=forms.TextInput(
             attrs={
                 "class": "language-selector-marked form-control",
                 "data-source-url": urlReverse("tracking:charters_autocomplete"),
             }
         ),
         required=True,
     )
コード例 #18
0
 def __init__(self, *args, **kwargs):
     super(MultiCharterStarter, self).__init__(*args, **kwargs)
     # Add initial language field. This field's HTML name will be prefixed with "0-"
     #    by FormWizard and will be overriden by a new form in the MultiCharterEventView.
     self.fields["language_0"] = forms.CharField(
         label="Charter",
         max_length=200,
         widget=forms.TextInput(
             attrs={
                 "class":
                 "language-selector-marked form-control",
                 "data-source-url":
                 urlReverse("tracking:charters_autocomplete"),
             }),
         required=True,
     )
コード例 #19
0
 def __init__(self, *args, **kwargs):
     super(CharterForm, self).__init__(*args, **kwargs)
     self.fields["lead_dept"].queryset = Department.objects.order_by("name")
     self.fields["partner"].queryset = Partner.objects.order_by("name")
     self.fields["start_date"] = BSDateField()
     self.fields["end_date"] = BSDateField()
     self.fields["language"] = LanguageCharField(urlReverse("names_autocomplete"))
     # Fill out the necessary attribute to display the selected language info
     #    if the form already has it.
     try:
         lang = None
         if self.instance.pk:
             lang = self.instance.language
         elif self.data.get("language", None):
             lang = Language.objects.get(pk=self.data["language"])
         elif kwargs.get("initial") is not None and kwargs["initial"].get("language") is not None:
             lang = Language.objects.get(pk=kwargs["initial"]["language"])
         fill_search_language(self, "language", lang)
     except Language.DoesNotExist:
         pass
コード例 #20
0
    def get_form(self, step=None, data=None, files=None):
        if step is None:
            step = self.steps.current

        if step == "0" and self.request.POST:
            # Create array container for field names
            charter_fields = []
            # Iterate through post data...
            for key in sorted(data):
                # ... to look for our language fields and add them to the array
                if key.startswith("0-language"):
                    charter_fields.append(key)
            # Create a a dictionary of the field name and field definition for every language fields we have
            attrs = dict(
                (field,
                 forms.CharField(
                     label="Charter",
                     max_length=200,
                     widget=forms.TextInput(
                         attrs={
                             "class":
                             "language-selector-marked form-control",
                             "data-source-url":
                             urlReverse("tracking:charters_autocomplete"),
                             "value":
                             data[field],
                         }),
                     required=True,
                 )) for field in charter_fields)
            # Dynamically create a new Form object with the field definitions
            NewForm = type("NewForm", (MultiCharterEventForm1, ), attrs)
            # Bind modified posted data to the new form
            form = NewForm(data)
        else:
            # Otherwise, returns a form that would have been returned
            form = super(MultiCharterEventView,
                         self).get_form(step, data, files)

        return form
コード例 #21
0
def logoutAj(request):
	print('logout user')
	logout(request)
	return HttpResponseRedirect(urlReverse('login'))
コード例 #22
0
 def __init__(self, *args, **kwargs):
     super(MultiCharterForm, self).__init__(*args, **kwargs)
     self.fields["language"] = LanguageCharField(urlReverse("names_autocomplete"), "language-selector-marked")