Пример #1
0
def unapprove_attendees(modeladmin, request, queryset):
    if request.user.has_perm('cal.add_event'):
        queryset.update(attendees_approved=False)
    else:
        messages.set_level(request, messages.ERROR)
        messages.error(request, 'You do not have permission to edit events')
        pass
Пример #2
0
def admin_ui_deletion(request, objects_to_delete, single_model=None):
    """
        Helper method to delete objects selected in the Django admin
        interface and display the proper message based on the status of
        their deletion
        :param objects_to_delete: iterable of Objects selected in admin UI,
        or a single object instance if `delete_model:admin_ui_deletion` is
        called with `single_model` having a truthy value
        :param request: the request Obj
        :param single_model: Set this to true when calling from a overridden
        `delete_model` method in the admin.py code
    """
    def create_delete_response_message(del_response):
        if del_response[0]:
            messages.success(request, del_response[1])
        else:
            messages.error(request, del_response[1])

    # If this method is triggered from an Admin UI 'delete_selected' call
    if not single_model:
        for instance in objects_to_delete.all():
            delete_response = instance.delete()
            create_delete_response_message(delete_response)

    # If this method is triggered from an Admin UI 'delete_model' call
    else:
        delete_response = objects_to_delete.delete()

        if not delete_response[0]:
            # Fix for multiple messages displaying
            messages.set_level(request, messages.ERROR)
            create_delete_response_message(delete_response)
Пример #3
0
 def save_model(self, request, obj, form, change):
     if not request.user.has_perm('cal.add_event'):
         messages.set_level(request, messages.ERROR)
         messages.error(request, 'You do not have permission to edit events')
         pass
     else:
         return super(EventAdmin, self).save_model(request, obj, form, change)
Пример #4
0
 def really_delete_selected(self, request, queryset):
     for obj in queryset:
         if obj.classi == 'LAN' or not str(request.user) == 'admin':
             messages.set_level(request, messages.ERROR)
             self.message_user(
                 request,
                 "Questo elemento non puo' essere rimosso, apartiene al sistema",
                 level=messages.ERROR)
         else:
             data = ''.join(str(datetime.today())[:-7].split(':')).replace(
                 ' ', '-')
             tmp_sql = '/tmp/._.sql'
             os.system(
                 'mysqldump -u %s -h %s --password=%s %s --ignore-table=%s.aron_logs > %s'
                 % (settings.DATABASES.values()[0]['USER'],
                    settings.DATABASES.values()[0]['HOST'],
                    settings.DATABASES.values()[0]['PASSWORD'],
                    settings.DATABASES.values()[0]['NAME'],
                    settings.DATABASES.values()[0]['NAME'], tmp_sql))
             file_data = 'config.aron.prx-%s' % data
             file_save = gzip.open(
                 settings.STATICFILES_DIRS[0] + '/' + file_data, 'wb')
             file_save.write(bf.crypt(open(tmp_sql, 'r').read()))
             file_save.close()
             os.unlink(tmp_sql)
             obj.delete()
             message_bit = "Elementi cancellato/i"
             self.message_user(request, "%s" % message_bit)
Пример #5
0
def messages_test_view(request):
    messages.set_level(request, messages.DEBUG)
    messages.add_message(
        request, messages.SUCCESS,
        mark_safe('Success. You are no longer observing contest '
                  '<strong>Data Science Cup</strong>.'))
    messages.add_message(
        request, messages.SUCCESS,
        mark_safe(
            '<p>Success</p><p>You have changed the contests. '
            'Lorem ipsum dolor sit'
            'amet augue at tortor. Praesent et magnis dis parturient montes,'
            'nascetur rig di amet.</p>'
            '<p>Lorem ipsum Fugiat culpa mollit Duis enim dolor proident et'
            'elit adipisicing velit est pariatur dolor cupidatat Duis'
            'incididunt consequat Ut ullamco commodo aliquip esse officia'
            ' cupidatat in aute irure dolor consequat minim.</p>'))
    messages.add_message(
        request, messages.DEBUG,
        mark_safe('This is a debug message. <pre>blebleble</pre>'))
    messages.add_message(
        request, messages.INFO,
        mark_safe('This is an info message. The weather is nice today.'))
    messages.add_message(request, messages.WARNING,
                         mark_safe("Warning: It's a trap!"))
    messages.add_message(request, messages.ERROR,
                         mark_safe("Error. Something blew up badly."))
    return render(
        request, 'system/title_and_text.html', {
            'title': title('Message Test'),
            'content_title': 'Message Test',
            'text': "Nothing to do here"
        })
Пример #6
0
    def store(self, *args, **kwargs):
        """
        Custom save object by calling the object.save function.
        Creating this custom save function is far easier than overriding forms.ModelForm.save().
        store() is unemcumbered by underlying code implementation of save().
        """
        if settings.TESTING:
            cookie_string = hash_md5_random_hexdigest()
        else:
            cookie_string = self.request.session.session_key

        if not self._errors:
            topic = self.Meta.model()
            topic.save(
                topic, {
                    'topic_title': self.cleaned_data.get('topic_title'),
                    'topic_slug': self.cleaned_data.get('topic_slug'),
                    'cookie_string': cookie_string
                })

            if topic.check_model_save and topic.check_model_save.if_error:
                self._errors['cookie_string'] = mark_safe(''.join([
                    '<ul class="errorlist"><li>',
                    ''.join(self._errors.get('cookie_string', '')), ' ',
                    topic.check_model_save.get_error_msg, '</li></ul>'
                ]))

                if not settings.TESTING:
                    messages.set_level(self.request, messages.DEBUG)
                    messages.info(self.request, self._errors['cookie_string'])
Пример #7
0
    def clean(self):
        cleaned_data = super(TopicModelForm, self).clean()
        cleaned_data['topic_title'] = strip_extra_spaces(
            cleaned_data.get('topic_title'))
        cleaned_data['topic_slug'] = slugify(
            unicode(cleaned_data['topic_title']))
        cleaned_data['public_key'] = mark_safe(settings.PUBLIC_KEY)

        ########## debugger on ##########
        #~ from pudb import set_trace; set_trace()

        if not settings.TESTING:
            challenge_field = cleaned_data.get('recaptcha_challenge_field')
            response_field = cleaned_data.get('recaptcha_response_field')
            remote_address = self.request.META.get('REMOTE_ADDR')
            captcha_ok = (challenge_field and response_field
                          and remote_address)

            if captcha_ok:
                # Call google's recaptcha server and check for proper entries.
                response = captcha.submit(challenge_field, response_field,
                                          settings.PRIVATE_KEY, remote_address)

            if not (captcha_ok and response.is_valid):
                self._errors['recaptcha_response_field'] = mark_safe(''.join([
                    '<ul class="errorlist"><li>',
                    'Recaptcha is required entry.</li></ul>'
                ]))

                messages.set_level(self.request, messages.DEBUG)
                messages.info(self.request,
                              self._errors['recaptcha_response_field'])

        return cleaned_data
Пример #8
0
    def clean(self):
        cleaned_data = super(VoteModelForm, self).clean()

        if not settings.TESTING:
            challenge_field = cleaned_data.get('recaptcha_challenge_field')
            response_field = cleaned_data.get('recaptcha_response_field')
            remote_address = self.request.META.get('REMOTE_ADDR')
            captcha_ok = (challenge_field and response_field
                          and remote_address)

            if captcha_ok:
                response = captcha.submit(challenge_field, response_field,
                                          settings.PRIVATE_KEY, remote_address)

            if not (captcha_ok and response.is_valid):
                self._errors['recaptcha_response_field'] = mark_safe(''.join([
                    '<ul class="errorlist"><li>',
                    'Recaptcha is required entry.</li></ul>'
                ]))

                messages.set_level(self.request, messages.DEBUG)
                messages.info(self.request,
                              self._errors['recaptcha_response_field'])

        return cleaned_data
Пример #9
0
    def save_model(self, request, obj, form, change):
        ''' Enforce superuser permissions checks and send notification emails
        for other account updates
        '''
        if change and obj.is_superuser and not request.user.is_superuser:
            messages.set_level(request, messages.ERROR)
            msg = 'Non-superusers cannot modify superuser accounts.'
            self.message_user(request, msg, messages.ERROR)
        else:
            super().save_model(request, obj, form, change)
            if change and (not obj.is_active or "is_superuser" in form.changed_data or \
                           "is_staff" in form.changed_data):
                if not obj.is_active:
                    context = {
                        'subject': gettext("Account Deactivated"),
                        'changed_item': gettext("account"),
                        'changed_status': gettext("deactivated")
                    }
                else:
                    context = {
                        'subject':
                        gettext("Account updated"),
                        'changed_item':
                        gettext("account"),
                        'changed_status':
                        gettext("updated"),
                        'changed_list':
                        self._get_changed_message(form.changed_data, obj)
                    }

                send_user_account_updated.delay(obj, context)
Пример #10
0
def dashboard(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            _("Unable to connect (HTTP %(code)s) to API at <code>%(url)s</code>%(msg)s")
            % {
                "url": settings.CARDSHOP_API_URL,
                "code": code,
                "msg": " -- " + msg if msg else "",
            },
        )
        return redirect("admin")

    context = {
        "channels": as_items_or_none(*get_channels_list()) or None,
        "warehouses": as_items_or_none(*get_warehouses_list()) or None,
        "users": as_items_or_none(*get_users_list()) or None,
        "workers": as_items_or_none(*get_workers_list()) or None,
        "images": as_items_or_none(*get_autoimages_list()) or None,
        "api_url": settings.CARDSHOP_API_URL_EXTERNAL,
    }

    forms_map = {
        "channel_form": ChannelForm,
        "user_form": UserForm,
        "warehouse_form": WarehouseForm,
        "image_form": ImageForm,
    }
    for key, value in forms_map.items():
        context[key] = value(prefix=key, client=request.user.profile)

    if request.method == "POST" and request.POST.get("form") in forms_map.keys():

        # which form is being saved?
        form_key = request.POST.get("form")
        context[form_key] = forms_map.get(form_key)(
            request.POST, prefix=form_key, client=request.user.profile
        )

        if context[form_key].is_valid():
            try:
                res = context[form_key].save()
            except Exception as exp:
                logger.error(exp)
                messages.error(request, _("Error while saving… %(err)s") % {"err": exp})
            else:
                messages.success(request, context[form_key].success_message(res))
                return redirect("scheduler")

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            _("Connected to Scheduler API at <code>%(url)s</code>")
            % {"url": settings.CARDSHOP_API_URL},
        )

    return render(request, "scheduler.html", context)
Пример #11
0
 def save_model(self, request, *args, **kwargs):
     try:
         return super(QuestionAdmin,
                      self).save_model(request, *args, **kwargs)
     except Exception as e:
         messages.set_level(request, messages.ERROR)
         self.message_user(request, e, messages.ERROR)
Пример #12
0
 def save_model(self, request, obj, form, change):
         with transaction.atomic():
             try:
                 super().save_model(request, obj, form, change)
             except Exception as e:
                 messages.set_level(request, messages.ERROR)
                 messages.error(request, e)
Пример #13
0
 def save_model(self, request, obj, form, change):
     if (obj.customer_name) and (not name_regex.match(obj.customer_name)):
         messages.set_level(request, messages.ERROR)
         msg = 'Please enter a valid customer name. Customer Name cannot contain numbers. (Entered Customer Name is %s)' % obj.customer_name
         messages.error(request, msg)
         return
     if obj.phone_no:
         phone_no = str(obj.phone_no)
         if len(phone_no) != 10:
             messages.set_level(request, messages.ERROR)
             msg = 'Enter valid Phone No. Entered Phone No. is %s and consists of %s digits. Phone No. should have 10 Digits' % (
                 phone_no, len(phone_no))
             messages.error(request, msg)
             return
         phone_initial_digit = phone_no[:1]
         if int(phone_initial_digit) not in INDIAN_PHONE_INITIAL_NUMBERS:
             messages.set_level(request, messages.ERROR)
             msg = 'Please enter valid Indian Phone No. Entered Phone No. is %s. Phone No. should start with 9/8/7/6' % (
                 phone_no)
             messages.error(request, msg)
             return
     if obj.aadhar_ID:
         addhard_id = str(obj.aadhar_ID)
         if len(addhard_id) != 12:
             messages.set_level(request, messages.ERROR)
             msg = 'Enter valid Adhaar No. Entered Adhaar No. is %s and consists of %s digits. Adhaar No. should have 12 Digits' % (
                 addhard_id, len(addhard_id))
             messages.error(request, msg)
             return
     if (obj.email_ID) and (not email_id_regex.match(obj.email_ID)):
         messages.set_level(request, messages.ERROR)
         msg = 'Enter a valid Email ID. Example: [email protected] or [email protected] (Entered email ID %s)' % obj.email_ID
         messages.error(request, msg)
         return
     obj.save()
Пример #14
0
def list(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            "Unable to connect (HTTP {code}) to API at <code>{url}</code>{msg}"
            .format(
                url=settings.CARDSHOP_API_URL,
                code=code,
                msg=" -- " + msg if msg else "",
            ),
        )
        return redirect("admin")

    items = OrdersQuerySet("/orders/")
    page = request.GET.get("page")
    paginator = Paginator(items, 10)
    orders_page = paginator.get_page(page)

    context = {
        "orders_page": orders_page,
        "orders": orders_page.object_list,
    }

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            "Connected to Scheduler API at <code>{url}</code>".format(
                url=settings.CARDSHOP_API_URL),
        )

    return render(request, "all_orders.html", context)
Пример #15
0
def detail(request, order_id):
    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            _("Unable to connect (HTTP %(code)s) to API at <code>%(url)s</code>%(msg)s")
            % {
                "url": settings.CARDSHOP_API_URL,
                "code": code,
                "msg": " -- " + msg if msg else "",
            },
        )
        return redirect("admin")

    retrieved, order = get_order(order_id)
    context = {"orderdata": OrderData(order)}

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            _("Connected to Scheduler API at <code>%(url)s</code>")
            % {"url": settings.CARDSHOP_API_URL},
        )
    return render(request, "all_orders-detail.html", context)
Пример #16
0
def list(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            _("Unable to connect (HTTP %(code)s) to API at <code>%(url)s</code>%(msg)s")
            % {
                "url": settings.CARDSHOP_API_URL,
                "code": code,
                "msg": " -- " + msg if msg else "",
            },
        )
        return redirect("admin")

    items = OrdersQuerySet("/orders/")
    page = request.GET.get("page")
    paginator = Paginator(items, 10)
    orders_page = paginator.get_page(page)

    context = {
        "orders_page": orders_page,
        "orders": orders_page.object_list,
    }

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            _("Connected to Scheduler API at <code>%(url)s</code>")
            % {"url": settings.CARDSHOP_API_URL},
        )

    return render(request, "all_orders.html", context)
Пример #17
0
def save_quick_question(request, mcq_list, question_set):


	# return 1

	# print ("\n\n ******** mcq added to question set ********")

	cur_mcq = ""
	line = 10


	try:
		for mcq in mcq_list:
			cur_mcq = mcq
			mcq.save()
			mcq.update_date()
			line += 1

		# 	question_set.mcq_question.add(mcq)

		# question_set.save()
	except IntegrityError as e:
		messages.set_level(request, messages.ERROR)
		storage = messages.get_messages(request)
		# print (storage)
		messages.error(request, "There Is An Error At Line No: %s" % str(line))
		messages.error(request, "The Error MCQ Is %s " % cur_mcq)
		messages.error(request, e.message)
		# return e.message
		return 0



	return (line - 10)
Пример #18
0
 def save_model(self, request, obj, form, change):
     """
     Overridden save method so corresponding restaurant object
     can update its categories field; also checks to make sure
     signature dish and popular dish limits are obeyed
     """
     food = obj
     restaurant = Restaurant.objects.filter(_id=food.restaurant_id).first()
     if (food.category == 'Signature Dish' and
             Food.objects.filter(restaurant_id=food.restaurant_id,
                                 category='Signature Dish').count() == 1):
         messages.set_level(request, messages.ERROR)
         messages.error(request,
                        'A restaurant can only have 1 signature dish.')
     elif (food.category == 'Popular Dish'
           and Food.objects.filter(restaurant_id=food.restaurant_id,
                                   category='Popular Dish').count() == 6):
         if food._id not in list(
                 Food.objects.filter(restaurant_id=food.restaurant_id,
                                     category='Popular Dish').values_list(
                                         '_id', flat=True)):
             messages.set_level(request, messages.ERROR)
             messages.error(
                 request,
                 'A restaurant can only have up to 6 popular dishes.')
     else:
         food.clean()
         food.clean_fields()
         food.save()
         restaurant.categories = Food.get_all_categories(food.restaurant_id)
         restaurant.clean()
         restaurant.clean_fields()
         restaurant.save()
Пример #19
0
 def save_model(self, request, obj, form, change):
     cursor = connection.cursor()
     cursor.execute(
         'select bookstore from bookmanagement_bookinfo where bookname=\'%s\';'
         % obj.bookinfos.bookname)
     curentstore = cursor.fetchone()[0]
     delta = datetime.timedelta(hours=-8)
     utctime = obj.obtime + delta
     print(utctime.strftime("%Y-%m-%d %H:%M:%S"))
     cursor.execute(
         'select obnum from bookmanagement_bookobsoinfo where obtime=\'%s\';'
         % utctime.strftime("%Y-%m-%d %H:%M:%S"))
     cur = cursor.fetchone()
     if cur != None:
         print("not none!")
         updateOrnew = cur[0]
         updatedstore = curentstore - obj.obnum + updateOrnew
     else:
         updatedstore = curentstore - obj.obnum
     if updatedstore >= 0:
         cursor.execute(
             'update bookmanagement_bookinfo set bookstore=%d where bookname =\'%s\';'
             % (updatedstore, obj.bookinfos.bookname))
         super().save_model(request, obj, form, change)
     else:
         messages.error(request, "库存不足,请重新设置,谢谢!")
         messages.set_level(request, messages.ERROR)
Пример #20
0
def detail(request, order_id):
    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            "Unable to connect (HTTP {code}) to API at <code>{url}</code>{msg}"
            .format(
                url=settings.CARDSHOP_API_URL,
                code=code,
                msg=" -- " + msg if msg else "",
            ),
        )
        return redirect("admin")

    retrieved, order = get_order(order_id)
    context = {"orderdata": OrderData(order)}

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            "Connected to Scheduler API at <code>{url}</code>".format(
                url=settings.CARDSHOP_API_URL),
        )
    return render(request, "all_orders-detail.html", context)
Пример #21
0
 def save_model(self, request, obj, form, change):
     if form.is_valid():
         if not change:
             super().save_model(request, obj, form, change)
             related_parent = [obj.id]
             if form.cleaned_data["parent"]:
                 parent = form.cleaned_data["parent"]
                 related_parent = self.get_related_parent(parent, related_parent)
             obj.related_parent = json.dumps(related_parent)
             super().save_model(request, obj, form, change)
         else:
             if obj.id is not None and obj.parent is not None:
                 if obj.id == obj.parent.id:
                     messages.error(request, "保存失败!%s 的上级部门不可为 %s,请重新设置!" % (obj.name, form.cleaned_data["parent"].name))
                     messages.set_level(request, messages.ERROR)
                     return
             if Team.objects.get(id=obj.id).parent != obj.parent:
                 if not obj.parent:
                     super().save_model(request, obj, form, change)
                     self.delete_included_related_parent(obj.id)
                 else:
                     related_parent = [obj.id]
                     parent = obj.parent
                     related_parent = self.get_related_parent(parent, related_parent)
                     self.change_included_related_parent(obj.id, related_parent)
                     obj.related_parent = json.dumps(related_parent)
             super().save_model(request, obj, form, change)
Пример #22
0
 def save_model(self, request, obj, form, change):
     try:
         super(LegalPersonAdmin, self).save_model(request, obj, form,
                                                  change)
     except Exception as e:
         messages.set_level(request, messages.ERROR)
         messages.error(request, e)
Пример #23
0
 def save_model(self, request, obj, form, change):
     if (change == True) or (Kandydat.objects.count() < 2):
         super(kandydatAdmin, self).save_model(request, obj, form, change)
     else:
         messages.set_level(request, messages.ERROR)
         messages.error(request,
                        "Nie możesz dodać więcej niż dwóch kandydatów!")
Пример #24
0
    def save_model(self, request, obj, form, change):
        suma_wydanych = Karty.objects.filter(gmina=obj.gmina)[0].liczba

        # Ochrona przed ponownym dodaniem glosow dla danej gminy
        wyniki_dla_gminy = Glosy.objects.filter(gmina=obj.gmina).count()

        # Jeżeli user próbuje dodać nowe dane dla gminy,
        # która nie ma jeszcze wprowadzonych danych
        # lub próbuje zmienić dane
        if (change == False and wyniki_dla_gminy == 0) or change == True:
            if suma_wydanych >= obj.wazne and obj.wazne >= obj.glosy_na_wybranego_kanydata:
                # wydanych >= oddanych
                # oddanych >= ważnych
                super(glosyAdmin, self).save_model(request, obj, form, change)
            else:
                messages.set_level(request, messages.ERROR)
                messages.error(
                    request,
                    "Nie możesz oddać więcej głosów niż liczba wydanych kart!")
        else:
            # User próbuje dodać dane dla gminy, która ma już dodane głosy
            messages.set_level(request, messages.ERROR)
            messages.error(
                request,
                "Nie możesz dodać głosów po raz drugi dla tej samej gminy!")
Пример #25
0
def create(request):  #user registration
    if request.method == "POST":
        errors = users.objects.user_validator(request.POST)
        category = 0
        key_prev = 'j'
        if len(errors):
            for key, value in errors.items():
                messages.set_level(
                    request, category)  #otherwise will ignore add message
                if key_prev != key:  #allows for multiple errors to display over one box
                    key_prev = key
                    category += 1
                print(key, value, category)
                messages.add_message(request, category, value)
            print('ERROR::', errors)
            return redirect('/')
        else:  #create user
            hash_pw = bcrypt.hashpw(request.POST['password'].encode(),
                                    bcrypt.gensalt())
            user = users.objects.create(fname=request.POST['first_name'],
                                        lname=request.POST['last_name'],
                                        email=request.POST['email'],
                                        pw_hash=hash_pw)
            user_id = user.id
            request.session['create'] = True
            request.session['user_id'] = user_id
            print('CREATED::', user)
            return redirect("/quotes")
    else:
        return redirect('/')
Пример #26
0
    def store(self, *args, **kwargs):
        """
        Custom save object by calling the object.save function.
        Creating this custom save function is far easier than overriding forms.ModelForm.save().
        store() is unemcumbered by underlying code implementation of save().
        """
        if settings.TESTING:
            cookie_string = hash_md5_random_hexdigest()
        else:
            cookie_string = self.request.session.session_key

        if not self._errors:
            topic = self.Meta.model()
            topic.save(topic, {
                'topic_title' : self.cleaned_data.get('topic_title'),
                'topic_slug' : self.cleaned_data.get('topic_slug'),
                'cookie_string' : cookie_string})

            if topic.check_model_save and topic.check_model_save.if_error:
                self._errors['cookie_string'] = mark_safe(''.join(['<ul class="errorlist"><li>',
                ''.join(self._errors.get('cookie_string', '')), ' ',
                topic.check_model_save.get_error_msg, '</li></ul>']))

                if not settings.TESTING:
                    messages.set_level(self.request, messages.DEBUG)
                    messages.info(self.request, self._errors['cookie_string'])
Пример #27
0
    def clean(self):
        cleaned_data = super(TopicModelForm, self).clean()
        cleaned_data['topic_title'] = strip_extra_spaces(cleaned_data.get('topic_title'))
        cleaned_data['topic_slug'] = slugify(unicode(cleaned_data['topic_title']))
        cleaned_data['public_key'] = mark_safe(settings.PUBLIC_KEY)

        ########## debugger on ##########
        #~ from pudb import set_trace; set_trace()

        if not settings.TESTING:
            challenge_field = cleaned_data.get('recaptcha_challenge_field')
            response_field = cleaned_data.get('recaptcha_response_field')
            remote_address = self.request.META.get('REMOTE_ADDR')
            captcha_ok = (challenge_field and response_field and remote_address)

            if captcha_ok:
                # Call google's recaptcha server and check for proper entries.
                response = captcha.submit(challenge_field, response_field, settings.PRIVATE_KEY, remote_address)

            if not (captcha_ok and response.is_valid):
                self._errors['recaptcha_response_field'] = mark_safe(''.join(['<ul class="errorlist"><li>',
                    'Recaptcha is required entry.</li></ul>']))

                messages.set_level(self.request, messages.DEBUG)
                messages.info(self.request, self._errors['recaptcha_response_field'])

        return cleaned_data
Пример #28
0
    def save_model(self, request, obj, form, change):
    	if change:
    		obj.save()

    		super(TransactionUserAdmin, self).save_model(request, obj, form, change)
    	if not change:
    		if str(obj.status) == 'Deposit':
    			obj.save()
    			send_mail('Deposit Amount', 'Hello '+str(obj.name)+'.Your transaction with deposit is '+str(obj.amount)+'Rs.', settings.EMAIL_HOST_USER,
			    ['*****@*****.**'], fail_silently=False)
    			super(TransactionUserAdmin, self).save_model(request, obj, form, change)
    		if str(obj.status) == 'Withdraw':
    			depo_amt=[]
    			withdraw_amt=[]
    			amounts_w = TransactionUser.objects.filter(account_no=obj.account_no,status='Withdraw').values_list('amount', flat=True)
    			amounts_d = TransactionUser.objects.filter(account_no=obj.account_no,status='Deposit').values_list('amount', flat=True)
    			total = sum(amounts_d)-sum(amounts_w)
    			if total < 1:
    				messages.set_level(request, messages.ERROR)
    				messages.error(request, 'No amount is available for withdraw !')
    			else:
    				obj.save()
    				send_mail('Withdraw Amount', 'Hello '+str(obj.name)+'.Your transaction with withdraw is '+str(obj.amount)+'Rs.', settings.EMAIL_HOST_USER,
			    ['*****@*****.**'], fail_silently=False)
    				super(TransactionUserAdmin, self).save_model(request, obj, form, change)
Пример #29
0
    def save_model(self, request, obj, form, change):
        tempEntryDate = obj.EntryDate

        engTargObje = EngTarget.objects.filter(
            EngUser=request.user,
            EntryDate__month=tempEntryDate.month,
            EntryDate__year=tempEntryDate.year)
        if not engTargObje:
            messages.set_level(request, messages.ERROR)
            messages.error(
                request,
                "Your Target yest not set. Please contact system Admin.")
            return
        else:
            fObje = TsaTarget.objects.filter(
                TsaTsoUser=obj.TsaTsoUser,
                EntryDate__month=tempEntryDate.month,
                EntryDate__year=tempEntryDate.year)
            if fObje:
                messages.set_level(request, messages.ERROR)
                messages.error(
                    request,
                    "For this TSA/TSO target already exists in this month.")
                return
            else:
                return super(TsaTargetAdmin,
                             self).save_model(request, obj, form, change)
Пример #30
0
def save_quick_question(request, mcq_list, question_set):

    # return 1

    # print ("\n\n ******** mcq added to question set ********")

    cur_mcq = ""
    line = 10

    try:
        for mcq in mcq_list:
            cur_mcq = mcq
            mcq.save()
            mcq.update_date()
            line += 1

        # 	question_set.mcq_question.add(mcq)

        # question_set.save()
    except IntegrityError as e:
        messages.set_level(request, messages.ERROR)
        storage = messages.get_messages(request)
        # print (storage)
        messages.error(request, "There Is An Error At Line No: %s" % str(line))
        messages.error(request, "The Error MCQ Is %s " % cur_mcq)
        messages.error(request, e.message)
        # return e.message
        return 0

    return (line - 10)
Пример #31
0
def addquote(request, user_id):
    if request.method == "POST":
        errors = quotes.objects.quote_validator(request.POST)
        category = 0
        key_prev = 'j'
        if len(errors):
            for key, value in errors.items():
                messages.set_level(
                    request, category)  #otherwise will ignore add message
                if key_prev != key:  #allows for multiple errors to display over one box
                    key_prev = key
                    category += 1
                print(key, value, category)
                messages.add_message(request, category, value)
            print('ERROR::', errors)
            return redirect('/quotes')
        else:  #create quote
            poster = users.objects.get(id=user_id)
            print(poster)
            this_quote = quotes.objects.create(
                quotee=request.POST['quotee'],
                quote=request.POST['quote'],
                poster=poster)  #poster likes his own posts automatically
            return redirect('/quotes')
    else:
        return redirect('/quotes')
Пример #32
0
def browse(request, category=None):
    if not category: category = 'latest'
    if category == 'latest':
        return list_detail.object_list(
                request,
                queryset=Project.objects.all().order_by('-modified'),
                template_name='gamecc/project_list.html',
            )
    elif category == 'popular':
        return list_detail.object_list(
                request,
                queryset=Project.objects.all().order_by('-modified'),
                template_name='gamecc/project_list.html',
            )
    elif category == 'categories':
        return list_detail.object_list(
                request,
                queryset=Category.objects.all(),
                template_name='gamecc/categories.html',
            )
    else:
        try:
            cat = Category.objects.get(slug__iexact=category)
            return list_detail.object_list(
                    request,
                    queryset=cat.project_set,
                    template_name='gamecc/category.html'
                )
        except Category.DoesNotExist:
            messages.set_level(request, messges.ERROR)
            messages.error(request, 'That category doesn\'t exist')
        return HttpResponseRedirect('/browse/categories/')
Пример #33
0
def list(request):

    success, code, msg = test_connection()
    if not success:
        messages.error(
            request,
            "Unable to connect (HTTP {code}) to API at <code>{url}</code>{msg}"
            .format(
                url=settings.CARDSHOP_API_URL,
                code=code,
                msg=" -- " + msg if msg else "",
            ),
        )
        return redirect("admin")

    orders = sorted(
        [OrderData(order) for order in as_items_or_none(*get_orders_list())],
        key=lambda item: item["statuses"][0]["on"],
        reverse=True,
    )
    context = {"orders": orders or None}

    if success:
        messages.set_level(request, messages.DEBUG)
        messages.debug(
            request,
            "Connected to Scheduler API at <code>{url}</code>".format(
                url=settings.CARDSHOP_API_URL),
        )

    return render(request, "all_orders.html", context)
Пример #34
0
    def save_model(self, request, obj, form, change):
        if obj.status != const.WORK_TYPE_SMALL_0:
            messages.add_message(request, messages.ERROR, '提出済记录が編集できません')
            return
        # 名前、ID
        if obj.user_id == const.DEF_USERID:
            obj.user_id = request.user.id
            obj.name = Employee.objects.get(user=request.user.id).name
        # 実働時間计算
        end_time = datetime.strptime(str(obj.end_time), "%H:%M:%S")
        sumTime1 = end_time - timedelta(hours=obj.start_time.hour,
                                        minutes=obj.start_time.minute,
                                        seconds=obj.start_time.second)
        sum_hour = sumTime1.hour
        sum_minute = sumTime1.minute
        if sum_minute != 0:
            sum_hour_dcm = sum_minute / 60
        else:
            sum_hour_dcm = 0
        sumTime2 = sum_hour + sum_hour_dcm
        float_rest = float(obj.rest)
        #休憩時間の制御
        sumTime3 = sumTime2 - float_rest
        obj.working_time = sumTime3

        try:
            with transaction.atomic():
                super().save_model(request, obj, form, change)
                return
        except:
            messages.set_level(request, messages.ERROR)
            temp_errMsg = str(obj.date) + 'の勤務記録は既に存在します,修正してください。'
            messages.error(request, temp_errMsg)
            return
Пример #35
0
def edit_user(request):
    if request.session['user_id'] != -1:
        user_id = request.session['user_id']
    else:
        messages.add_message(request, 0, 'you must log in')
        return redirect('/users/login_page')
    if request.method == "POST":
        errors = users.objects.edit_validator(request.POST)
        category = 0
        key_prev = 'j'
        if len(errors):
            for key, value in errors.items():
                messages.set_level(
                    request, category)  #otherwise will ignore add message
                if key_prev != key:  #allows for multiple errors to display over one box
                    key_prev = key
                    category += 1
                print(key, value, category)
                messages.add_message(request, category, value)
            print('ERROR::', errors)
            return redirect("/users/" + str(user_id) + '/edit')
        else:  #update user
            this_user = users.objects.get(id=str(user_id))
            this_user.fname = request.POST['first_name']
            this_user.lname = request.POST['last_name']
            this_user.email = request.POST['email']
            this_user.save()  #put into DB
            return redirect("/users/" + str(user_id))
    else:
        return redirect('/')
Пример #36
0
    def save_model(self, request, obj, form, change):
        try:
            with transaction.atomic():
                if obj.gender.name == 'Hombre' and obj.carrer.places_h > 0 or obj.gender.name == 'Mujer' and obj.carrer.places_m > 0:
                    obj.save()
                    # Restamos lugares por género
                    if obj.gender.name == 'Hombre':
                        obj.carrer.places_h = obj.carrer.places_h - 1
                        obj.carrer.save()
                        d = obj.carrer.places_h
                    else:
                        obj.carrer.places_m = obj.carrer.places_m - 1
                        obj.carrer.save()
                        d = obj.carrer.places_m

                    messages.set_level(request, messages.WARNING)
                    g = obj.gender.name
                    c_c = Carrer.objects.filter(name=obj.carrer.name).count()
                    c = c_c + d
                    a = obj.carrer.name
                    messages.warning(
                        request,
                        'Arma : {} - Lugares disponibles {} - Género {} - Cuota: {}'
                        .format(a, d, g, c))
                else:
                    messages.set_level(request, messages.ERROR)
                    messages.error(
                        request, 'No hay cuota disponible para {}'.format(
                            obj.carrer.name))
                    return HttpResponseRedirect(request.path)
        except DatabaseError as e:
            # logger.exception("Naming update transaction DB error")
            messages.error(request, 'Error en la transacción {}'.format(e))
            return HttpResponseRedirect(request.path)
Пример #37
0
def admin_ui_deletion(request, objects_to_delete, single_model=None):
    """
        Helper method to delete objects selected in the Django admin
        interface and display the proper message based on the status of
        their deletion
        :param objects_to_delete: iterable of Objects selected in admin UI,
        or a single object instance if `delete_model:admin_ui_deletion` is
        called with `single_model` having a truthy value
        :param request: the request Obj
        :param single_model: Set this to true when calling from a overridden
        `delete_model` method in the admin.py code
    """

    def create_delete_response_message(del_response):
        if del_response[0]:
            messages.success(request, del_response[1])
        else:
            messages.error(request, del_response[1])

    # If this method is triggered from an Admin UI 'delete_selected' call
    if not single_model:
        for instance in objects_to_delete.all():
            delete_response = instance.delete()
            create_delete_response_message(delete_response)

    # If this method is triggered from an Admin UI 'delete_model' call
    else:
        delete_response = objects_to_delete.delete()

        if not delete_response[0]:
            # Fix for multiple messages displaying
            messages.set_level(request, messages.ERROR)
            create_delete_response_message(delete_response)
Пример #38
0
 def get_queryset(self):
     place = get_object_or_404(Space, url=self.kwargs['space_name'])
     
     if settings.DEBUG:
         messages.set_level(self.request, messages.DEBUG)
         messages.debug(self.request, "Succesful query.")
    
     return Post.objects.all().filter(space=place).order_by('-pub_date')
Пример #39
0
def kitchen_sink(request):
    messages.set_level(request, messages.DEBUG)
    messages.add_message(request, messages.DEBUG, 'Debug Message')
    messages.add_message(request, messages.INFO, 'Info Message')
    messages.add_message(request, messages.SUCCESS, 'Success Message')
    messages.add_message(request, messages.WARNING, 'Warning Message')
    messages.add_message(request, messages.ERROR, 'Error Message')
    return render(request, 'demo/kitchensink.html', {})
Пример #40
0
    def save_model(self, request, obj, form, change):
        try:
            if not (request.user == obj.user) and (not request.user.is_superuser):
                raise ValidationError(  _('user_without_permissions') % {'user':request.user.username} )

            obj.save()
        except ValidationError as e:
            messages.set_level(request, messages.ERROR)
            messages.error(request,"%s" % e[0])
Пример #41
0
def messages_example(request):
    messages.set_level(request, messages.DEBUG)
    messages.debug(request, 'This is a debug message')
    messages.info(request, 'This is an informational message. It also happens to be a decently long one just to see how everything looks when it has to wrap to multiple lines')
    messages.success(request, '<strong>Great success!</strong> Whatever you did seems to have worked out!')
    messages.warning(request, 'Better watch out! This is a warning.')
    messages.error(request, 'Bad bad bad! Something really awful happened!')
    messages.add_message(request, 8000, 'Custom message level')
    pass
Пример #42
0
    def dispatch(self, request, *args, **kwargs):
        messages.set_level(request, messages.DEBUG)
        if request.session.test_cookie_worked():
            request.session.delete_test_cookie()
        else:
            messages.info(request, 'This website uses cookies.')

        request.session.set_test_cookie()
        return super(SessionViewMixin, self).dispatch(request, *args, **kwargs)
Пример #43
0
def test(request):
    messages.set_level(request, messages.DEBUG)

    messages.debug(request, 'This is a debug alert')
    messages.info(request, 'This is an info alert')
    messages.success(request, 'This is a success alert')
    messages.warning(request, 'This is a warning alert')
    messages.error(request, 'This is an error alert')

    return render(request, 'alerts/test.html')
Пример #44
0
def voir_messages(request):
    articles = Article.objects.all()

    messages.set_level(request, messages.DEBUG) # je suis obligé de le faire sinon je n'ai pas les debug...
    messages.add_message(request, messages.INFO, 'Bonjour visiteur !')
    messages.debug(request, '%s requêtes SQL ont été exécutées.' % articles)
    messages.info(request, 'Rebonjour !')
    messages.success(request, 'Votre article a bien été mis à jour.')
    messages.warning(request, 'Votre compte expire dans 3 jours.')
    messages.error(request, 'Cette image n\'existe plus.')

    return render(request, 'blog/messages.html')
Пример #45
0
def service_add(request):
    form = ServiceForm()
    messages.set_level(request, messages.DEBUG)

    if request.method == 'POST':

        form = ServiceForm(request.POST)
        if form.is_valid():

            form.save()
            messages.success(request, 'Serviço cadastrado com successo.')
            return HttpResponseRedirect(reverse('service_list'), request)

    return render(request, 'service_add.html', {'form': form})
Пример #46
0
def index(request):
	n = random.randrange(0, 5)
	
	if n==0:
		messages.set_level(request, messages.DEBUG)
	elif n==1:
		messages.set_level(request, messages.INFO)
	elif n==2:
		messages.set_level(request, messages.SUCCESS)
	elif n==3:
		messages.set_level(request, messages.WARNING)
	elif n==4:
		messages.set_level(request, messages.ERROR)


	# Logged in User Name Info
	if request.user.username:
		name = 'Are You {}? If not I am in big trouble'.format(request.user.username)
	else:
		name = "I don't know You! Can you please log in! I would like to know more about you."

	# request.META Info
	meta = "You are now using {}.".format(request.META['HTTP_USER_AGENT'])

	# Users Info
	how_many_users = len(User.objects.all())
	latest_one_user = User.objects.order_by("-date_joined")[0]
	users = "We have {} registered users! The latest registered one is {}.".format(how_many_users, latest_one_user)

	# Blog Info
	post_id = random.randrange(1, len(Post.objects.all())+1)
	blog_post = Post.objects.get(pk=post_id)

	# Polls Info
	pk_q = random.randrange(1, len(Poll.objects.all())+1)
	question = Poll.objects.get(pk=pk_q)
	number = random.randrange(0, len(question.choice_set.all()))
	votes = question.choice_set.order_by('-votes')[number]

	

	messages.debug(request, name)
	messages.info(request, meta)
	messages.success(request, users)
	messages.warning(request, 'Intrested in "{}" ? Read the blog !'.format(blog_post))
	messages.error(request, '{} {}. --> Disagree? Vote!'.format(question, votes))
	
	return render(request, 'flash_message/index.html')
Пример #47
0
def upload(request):
    filename = 'card_data_tmp.csv'
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            store_file(request.FILES['file'], filename)
            res = list(import_data(filename))
            messages.set_level(request, messages.DEBUG)
            messages.info(request, str(res[0]), 'done')
            messages.error(request, str(res[1]), 'exist')
            return HttpResponseRedirect(reverse('code_check:uploaded'))
    else:
        form = UploadFileForm()
    context = {
        'form': form,
    }
    return render(request, template_name='code_check/upload.html', context=context)
Пример #48
0
    def form_valid(self, form):
        monfiles = []
        netid = int(self.kwargs.get('id','1'))
        messages.set_level(self.request, messages.DEBUG)
        def msg(how, what):
            log = getattr(logger,how)
            log(what);
            mes = getattr(messages,how)
            mes(self.request,what)
        
        for f in form.files.getlist('filename'):
            try:
                msg('debug','Verwerking van MON file %s' % f.name)
                mon, saved = monfile.save(self.request,f,net=netid)
                if saved:
                    msg('info','Bestand toegevoegd: %s' % mon.file)
                    monfiles.append(mon)
                else:
                    msg('warning','Identiek bestand bestaat al: %s' % mon.file)
                    continue
            except Exception as e:
                msg('error',e)
                continue
            
        for mon in monfiles:
            # actualiseren PRESSURE tijdreeksen
            for s in mon.datasource.getseries():
                msg('debug','Tijdreeks actualiseren:  %s' % s)
                try:
                    s.update()
                except Exception as e:
                    msg('error','Fout bij actualisatie van tijdreeks %s: %s' %(s, e))

        locs = set([mon.meetlocatie() for mon in monfiles])
        for loc in locs:
            # dependent series (LEVEL) actualiseren voor alle geactualiseerde meetlocaties
            for fm in loc.formula_set.all():
                msg('debug','Berekenen van tijdreeks %s (%s)' % (fm,fm.locatie.name))
                try:
                    fm.update()
                except Exception as e:
                    msg('error','Fout bij berekening van tijdreeks %s: %s' % (fm, e))
                break
            
        return super(UploadFileView,self).form_valid(form)
Пример #49
0
    def process_request(self, request):
        """
        set the django message level by user type use system preferences.
        """
        # Get the system preferences
        system_preferences = request.PYLUCID.preferences

        # get the level by user type and system preferences
        if request.user.is_superuser:
            level = system_preferences["message_level_superuser"]
        elif request.user.is_staff:
            level = system_preferences["message_level_staff"]
        elif request.user.is_authenticated():
            level = system_preferences["message_level_normalusers"]
        else:
            level = system_preferences["message_level_anonymous"]

        # Set the current used message level
        messages.set_level(request, level)
Пример #50
0
    def test_high_level(self):
        request = self.get_request()
        storage = self.storage_class(request)
        request._messages = storage

        self.assertTrue(set_level(request, 30))
        self.assertEqual(get_level(request), 30)

        add_level_messages(storage)
        self.assertEqual(len(storage), 2)
Пример #51
0
    def test_low_level(self):
        request = self.get_request()
        storage = self.storage_class(request)
        request._messages = storage

        self.assert_(set_level(request, 5))
        self.assertEqual(get_level(request), 5)

        add_level_messages(storage)
        self.assertEqual(len(storage), 6)
Пример #52
0
    def clean(self):
        cleaned_data = super(VoteModelForm, self).clean()

        if not settings.TESTING:
            challenge_field = cleaned_data.get('recaptcha_challenge_field')
            response_field = cleaned_data.get('recaptcha_response_field')
            remote_address = self.request.META.get('REMOTE_ADDR')
            captcha_ok = (challenge_field and response_field and remote_address)

            if captcha_ok:
                response = captcha.submit(challenge_field, response_field, settings.PRIVATE_KEY, remote_address)

            if not (captcha_ok and response.is_valid):
                self._errors['recaptcha_response_field'] = mark_safe(''.join(['<ul class="errorlist"><li>',
                    'Recaptcha is required entry.</li></ul>']))

                messages.set_level(self.request, messages.DEBUG)
                messages.info(self.request, self._errors['recaptcha_response_field'])

        return cleaned_data
Пример #53
0
def gestion_maj(request):
    """vue qui gere les maj"""
    messages.set_level(request, messages.INFO)
    try:
        with transaction.atomic():
            config = models.Config.objects.get_or_create(id=1, defaults={'id': 1})[0]
            lastmaj = config.derniere_import_money_journal
            if lastmaj.tzinfo is None:
                lastmaj = tz.make_aware(lastmaj, timezone=tz.utc)
            messages.info(request, "dernière mise à jour: %s" % tz.localtime(lastmaj))
            messages.info(request, "From PC to iphone")
            nb_export = export(lastmaj, request)
            if int(nb_export['ope']) > 0:
                messages.success(request, "opérations exportées: %s" % nb_export['ope'])
            if nb_export['compte'] > 0:
                messages.success(request, "comptes exportés: %s" % nb_export['compte'])
            if nb_export['cat'] > 0:
                messages.success(request, "catégories exportées: %s" % nb_export['cat'])
            if int(nb_export['ope']) == 0 and nb_export['compte'] == 0 and nb_export['cat'] == 0:
                messages.success(request, "Rien d'exporté")
            messages.info(request, "From iphone to PC")
            nb_import = import_items(lastmaj, request)
            if int(nb_import['ope']) > 0:
                messages.success(request, "opérations importées: %s" % nb_import['ope'])
            if nb_import['compte'] > 0:
                messages.success(request, "comptes importés: %s" % nb_import['compte'])
            if nb_import['cat'] > 0:
                messages.success(request, "catégories importées: %s" % nb_import['cat'])
            if int(nb_import['ope']) == 0 and nb_import['compte'] == 0 and nb_import['cat'] == 0:
                messages.success(request, "Rien d'importé")
            if nb_import["deja"] > 0:
                messages.info(request, "%s éléments du répertoire money journal déja mises à jour" % nb_import['deja'])
            #on gere ceux qu'on elimine car deja pris en en compte

            config.derniere_import_money_journal = utils.now()
            config.save()

    except Lecture_plist_exception as exc:
        messages.error(request, exc.msg)
    return render_to_response('generic.djhtm', {'titre': 'intégration des maj recues', }, context_instance=RequestContext(request))
Пример #54
0
def dashboard(request):
    """ l'accueil """
    c = {'category': 'dashboard'}
    c.update(csrf(request))
    try:
        last_new = News.objects.latest('id')
        c.update({"last_new": last_new})
    except:
        c.update({"message_empty_c": "Pas de comminiqué"})

    president = Member.objects.get(post__slug="president")
    president.url_display = reverse("display_member", args=[president.id])

    reports = Report.objects.all().order_by('-date')[:3]
    try:
        textstatic = TextStatic.objects.get(slug='dashboard')
    except:
        textstatic = None

    for report in reports:
        report.url_report_date = reverse("report", args=[report.id])
    message_empty_r = "Pas de rapport"
    c.update({"reports": reports, "message_empty_r": message_empty_r,
              "textstatic": textstatic, "president": president})

    if request.method == 'POST':
        form = Newsletterform(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, u"Votre email a été bien enregistre")
            messages.set_level(request, messages.WARNING)
            return redirect('dashboard')
    else:
        form = Newsletterform()

    c.update({'form': form})

    return render(request, 'dashboard.html', c)
    def save_model(self, request, obj, form, change):
        """Users can't edit anything if 'parking_number' and 'parking_number_year'
        are set. (except setting to inactive)
        Auto set user field to logged in user.

        We want to send an email if a new registration is added OR a record's agree_to_TOS
        goes from False to True        
        """
        msg_part = "" #store additional no save message
        if change: #update
            vr = VehicleRegistration.objects.get(pk=obj.id)
            if vr.parking_number and vr.parking_number_year:
                if vr.active and not form.cleaned_data['active']:
                    #always allow setting a registration to inactive
                    #(I'm just going to save on the model instance directly 
                    #and short-circuit the whole admin save process to I can 
                    #make sure only this one field is getting changed.)                    
                    vr.active = False
                    vr.save()            
                    messages.warning(request, "Registration %s was set to inactive." % (vr))
                    msg_part = "other "

                #Hide success messages so it doesn't say succeeded when I'm failing it
                messages.set_level(request, messages.WARNING)
                messages.error(request, 
                    "Once a Parking Permit has been assigned, no %sdata can be changed. Please contact security if you need to change your information." % msg_part)
            else:
                #An existing record without an assigned parking number and year is being changed
                if not vr.agree_to_TOS and form.cleaned_data['agree_to_TOS']:
                    #Send an email if user has agreed to TOS
                    obj.send_created_email()
                super(MyVehiclesAdmin, self).save_model(request, obj, form, change)
        else: #new record
            obj.user = request.user
            super(MyVehiclesAdmin, self).save_model(request, obj, form, change)
            #Send email to notify of new record
            if obj.active and obj.agree_to_TOS:
                obj.send_created_email()
Пример #56
0
 def save_model(self, request, obj, form, change):
     """for getting rid of messages"""
     messages.set_level(request, messages.ERROR)
     obj.user = request.user
     obj.save()
Пример #57
0
    def save_model(self, request, obj, form, change):
        
        ldap_user_name = str(obj.ldap_user_name) if obj.ldap_user_name else None
        udn = Person.ldap_udn_for( ldap_user_name )

        try:
            if (not ldap_user_name) or (ldap_user_name is None):
                logging.warning("An LDAP user was not given. It is not updated!")
                super(PersonAdmin, self).save_model(request, obj, form, change)
                return
            
            if Person.exists_in_ldap(ldap_user_name): # actualizar
                ldap_person = Person.get_from_ldap(ldap_user_name)

                # update data
                ldap_person.update_ldap_data_from(obj)

                # update password only for superuser
                if str(ldap_person.ldap_user_password) != str(obj.ldap_user_password) \
                   and request.POST.has_key('ldap_user_password_check'):
                    if request.user.is_superuser:
                        logging.warning("User '%s' already exists in Ldap. changing password.." % ldap_user_name)
                        Person.update_ldap_user_password ( ldap_user_name, str(obj.ldap_user_password) )
                    else:
                        raise ValidationError( _('cant_change_password') )
                    
                # update group only for superuser
                if str(ldap_person.group_id) != str(obj.group_id):
                    if request.user.is_superuser:
                        logging.warning("User '%s' already exists in Ldap. Changing group '%s' by '%s'.." % \
                                     (ldap_user_name,ldap_person.group_id, obj.group_id ) )
                        Group.add_member_to(ldap_user_name, {'group_id': str(obj.group_id)})
                        Group.remove_member_of(ldap_user_name, ldap_person.group_id)
                        ldap_person.update_ldap_gidgroup( str(obj.group_id) )
                    else:
                        raise ValidationError( _('cant_change_group') )

            else: # crear nuevo
                new_uid_number = Person.next_ldap_uidNumber()
                if not (new_uid_number > 0):
                    logging.error( "The following 'ldap user uid' could not be determined. " \
                                   "The value obtained was %s" % str(new_uid_number))
                    raise ValidationError( _('without_ldap_user_uid') )

                if Person.exist_ldap_uidNumber(new_uid_number):
                    logging.error("The ldap user uidNumber '%s' already exist!." % str(new_uid_number))
                    new_uid_number = 0
                    raise ValidationError( _('uidnumber_already_exist') % {'uidnumber':str(new_uid_number)} )

                # Create new ldapp user
                cnuser = LdapConn.parseattr( "%s %s" % (obj.name, obj.surname) )
                snuser = LdapConn.parseattr( "%s" % obj.surname )
                new_user = [
                    ('objectclass', settings.LDAP_PEOPLE_OBJECTCLASSES),
                    ('cn', [cnuser]),
                    ('sn', [snuser]),
                    ('givenName', [ LdapConn.parseattr(obj.name)] ),
                    ('paisdoc', [settings.LDAP_PEOPLE_PAISDOC] ),
                    ('tipodoc', [str(obj.document_type)] ),
                    ('numdoc', [str(obj.document_number)] ),
                    ('uidNumber', [str(new_uid_number)] ),
                    ('userPassword', [str(obj.ldap_user_password)] ),
                    ('homedirectory', [str('%s%s' % ( settings.LDAP_PEOPLE_HOMEDIRECTORY_PREFIX,
                                                      ldap_user_name))]),
                    ('gidNumber', [str(obj.group_id)] ),
                    ('loginShell', [str(settings.LDAP_PEOPLE_LOGIN_SHELL)]),]

                if obj.position:                
                    new_user.append(('employeeType', [str(obj.position)] ))
                if obj.area:
                    new_user.append(('destinationIndicator', [str(obj.area)]))
                if obj.floor:
                    new_user.append(('departmentNumber', [str(obj.floor)] ))
                if obj.work_phone:
                    new_user.append(('telephoneNumber', [str(obj.work_phone)]))
                if obj.home_phone:
                    new_user.append(('homePhone', [str(obj.home_phone)]))
                if obj.office_name():
                    new_user.append(('physicalDeliveryOfficeName',
                                     [str(LdapConn.parseattr(obj.office_name()))]))
                if obj.email:
                    mails = []
                    mails.append(str(obj.email))
                    if obj.alternative_email:
                        mails.append(str(obj.alternative_email))
                        
                    new_user.append(('mail',mails))

                Person.create_ldap_user( ldap_user_name, new_user )

                # Update ldap groups
                cn_group = Group.cn_group_by_gid(obj.group_id)
                cn_groups = ['%s' % str(cn_group)]
                if settings.LDAP_DEFAULT_GROUPS:
                    cn_groups += settings.LDAP_DEFAULT_GROUPS

                Group.add_member_in_groups( ldap_user_name, cn_groups )

            obj.save()
            
        except ValidationError as e:
            messages.set_level(request, messages.ERROR)
            messages.error(request,"%s" % e[0])
Пример #58
0
 def pushMessage(request, msgType, msg):
     messages.set_level(request, msgType)
     messages.add_message(request, msgType, msg)