Esempio n. 1
0
    def post(self, request, *args, **kwargs):
        customer = request.user
        deploymentInfo = DeploymentInfo()
        deployment_admin = get_model_admin_instance(DeploymentInfo,
                                                    DeploymentInfoAdmin)
        ModelForm = deployment_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=deploymentInfo)
        if form.is_valid():
            deploymentInfo.company_name = form.cleaned_data['company_name']
            deploymentInfo.activity = form.cleaned_data['activity']
            deploymentInfo.purpose = form.cleaned_data['purpose']
            deploymentInfo.description = form.cleaned_data['description']
            deploymentInfo.customer = customer

            deploymentInfo.save()

            #  mail for user
            #  mail for ikwen/index.php?page=1
            next_url = reverse('locator:prospect')
            messages.success(
                request,
                _("Deployment for %s successfully created." %
                  deploymentInfo.company_name))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 2
0
    def post(self, request, *args, **kwargs):
        promotion_id = request.POST.get('promotion_id')
        if promotion_id:
            promotion = get_object_or_404(Promotion, pk=promotion_id)
        else:
            promotion = Promotion()
        promotion_admin = get_model_admin_instance(Promotion, PromotionAdmin)
        ModelForm = promotion_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=promotion)
        start_date = request.POST.get('start_on')
        end_date = request.POST.get('end_on')
        if len(start_date) > 16:
            start_date = start_date[:-3].strip()
        if len(end_date) > 16:
            end_date = end_date[:-3].strip()
        start_on = datetime.strptime(start_date, '%Y-%m-%d %H:%M')
        end_on = datetime.strptime(end_date, '%Y-%m-%d %H:%M')

        title = request.POST.get('title')
        rate = request.POST.get('rate')
        is_active = request.POST.get('is_active')
        category_id = request.POST.get('category')
        item_id = request.POST.get('item')
        if title:
            promotion.title = title
            promotion.start_on = start_on
            promotion.end_on = end_on
            promotion.rate = rate
            promotion.is_active = is_active
            if category_id:
                promotion.category = get_object_or_404(ProductCategory,
                                                       pk=category_id)
            else:
                promotion.category = None
            if item_id:
                promotion.item = get_object_or_404(Product, pk=item_id)
            else:
                promotion.item = None
            promotion.save()
            next_url = reverse('sales:promotion_list')
            if promotion_id:
                messages.success(
                    request,
                    _("Promotion %s successfully updated." % promotion.title))
            else:
                messages.success(
                    request,
                    _("Promotion %s successfully created." % promotion.title))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 3
0
 def get_context_data(self, **kwargs):
     context = super(Deploy, self).get_context_data(**kwargs)
     deployment = None
     deployment_admin = get_model_admin_instance(DeploymentInfo,
                                                 DeploymentInfoAdmin)
     ModelForm = modelform_factory(DeploymentInfo,
                                   fields=('company_name', 'activity',
                                           'purpose', 'description'))
     form = ModelForm(instance=deployment)
     deployment_form = helpers.AdminForm(
         form, list(deployment_admin.get_fieldsets(self.request)),
         deployment_admin.get_prepopulated_fields(self.request))
     context['model_admin_form'] = deployment_form
     return context
Esempio n. 4
0
 def get_context_data(self, **kwargs):
     context = super(ConfigureModule, self).get_context_data(**kwargs)
     object_id = kwargs.get('object_id')  # May be overridden with the one from GET data
     module = get_object_or_404(Module, pk=object_id)
     config_model = module.config_model
     config_model_admin = import_by_path(module.config_model_admin)
     model_admin = get_model_admin_instance(config_model, config_model_admin)
     ModelForm = modelform_factory(config_model, fields=model_admin.fields)
     form = ModelForm(instance=module.config)
     config_form = helpers.AdminForm(form, list(model_admin.get_fieldsets(self.request)),
                                     model_admin.get_prepopulated_fields(self.request),
                                     model_admin.get_readonly_fields(self.request))
     context['module'] = module
     context['model_admin_form'] = config_form
     return context
Esempio n. 5
0
 def post(self, request, *args, **kwargs):
     object_id = kwargs.get('object_id')
     if object_id:
         obj = get_object_or_404(self.model, pk=object_id)
     else:
         obj = self.model()
     object_admin = get_model_admin_instance(self.model, self.model_admin)
     ModelForm = object_admin.get_form(request)
     form = ModelForm(request.POST, instance=obj)
     if form.is_valid():
         obj.name = form.cleaned_data['name']
         obj.slug = slugify(form.cleaned_data['name'])
         obj.registration_fees = form.cleaned_data['registration_fees']
         obj.first_instalment = form.cleaned_data['first_instalment']
         obj.second_instalment = form.cleaned_data['second_instalment']
         obj.third_instalment = form.cleaned_data['third_instalment']
         item_list = request.POST['subjects'].split(',')
         subject_coefficient_list = []
         for item in item_list:
             tk = item.split(':')
             try:
                 subject = Subject.objects.get(pk=tk[0])
                 subject_coefficient = SubjectCoefficient(
                     subject=subject,
                     group=int(tk[1]),
                     coefficient=int(tk[2]),
                     lessons_due=int(tk[3]),
                     hours_due=int(tk[4]))
                 subject_coefficient_list.append(subject_coefficient)
             except:
                 continue
         obj.subject_coefficient_list = subject_coefficient_list
         obj.save()
         next_url = self.get_object_list_url(request, obj)
         if object_id:
             notice = u'%s <strong>%s</strong> %s' % (
                 obj._meta.verbose_name.capitalize(),
                 str(obj).decode('utf8'), _('successfully updated'))
         else:
             notice = u'%s <strong>%s</strong> %s' % (
                 obj._meta.verbose_name.capitalize(),
                 str(obj).decode('utf8'), _('successfully created'))
         messages.success(request, notice)
         return HttpResponseRedirect(next_url)
     else:
         context = self.get_context_data(**kwargs)
         context['errors'] = form.errors
         return render(request, self.template_name, context)
Esempio n. 6
0
 def get_context_data(self, **kwargs):
     context = super(Prospect, self).get_context_data(**kwargs)
     category = None
     prospect_admin = get_model_admin_instance(Device, DeviceAdmin)
     ModelForm = modelform_factory(Device,
                                   fields=('category', 'city', 'name',
                                           'phone', 'longitude', 'latitude',
                                           'manager_name', 'description'))
     form = ModelForm(instance=category)
     prospect_form = helpers.AdminForm(
         form, list(prospect_admin.get_fieldsets(self.request)),
         prospect_admin.get_prepopulated_fields(self.request),
         prospect_admin.get_readonly_fields(self.request, obj=category))
     # context['category'] = category
     context['model_admin_form'] = prospect_form
     return context
Esempio n. 7
0
 def get_context_data(self, **kwargs):
     context = super(ChangePost, self).get_context_data(**kwargs)
     post_id = kwargs.get('post_id')  # May be overridden with the one from GET data
     post_id = self.request.GET.get('post_id', post_id)
     post = None
     if post_id:
         post = get_object_or_404(Post, pk=post_id)
     post_admin = get_model_admin_instance(Post, PostAdmin)
     ModelForm = modelform_factory(Post, fields=('category', 'title', 'summary', 'entry', 'is_active', 'appear_on_home_page'))
     form = ModelForm(instance=post)
     post_form = helpers.AdminForm(form, list(post_admin.get_fieldsets(self.request)),
                                   post_admin.get_prepopulated_fields(self.request),
                                   post_admin.get_readonly_fields(self.request, obj=post))
     context['post'] = post
     context['model_admin_form'] = post_form
     return context
Esempio n. 8
0
 def get_context_data(self, **kwargs):
     context = super(ChangeSmartObject, self).get_context_data(**kwargs)
     object_type = kwargs.get('object_type')
     smart_object_id = kwargs.get(
         'smart_object_id')  # May be overridden with the one from GET data
     smart_object_id = self.request.GET.get('smart_object_id',
                                            smart_object_id)
     smart_object = None
     if object_type == BANNER:
         model = Banner
         model_admin = BannerAdmin
         fields = (
             "title",
             "cta",
             "target_url",
             'description',
         )
     else:
         model = SmartCategory
         model_admin = SmartCategoryAdmin
         fields = (
             "title",
             "content_type",
             "target_url",
             'description',
         )
     if smart_object_id:
         smart_object = get_object_or_404(model, pk=smart_object_id)
         smart_object.content = [
             ItemCategory.objects.get(pk=pk)
             for pk in smart_object.items_fk_list
         ]
     object_admin = get_model_admin_instance(model, model_admin)
     ModelForm = modelform_factory(model, fields=fields)
     form = ModelForm(instance=smart_object)
     model_admin_form = helpers.AdminForm(
         form, list(object_admin.get_fieldsets(self.request)),
         object_admin.get_prepopulated_fields(self.request))
     context['page_list'] = FlatPage.objects.all()
     context['object_type'] = object_type
     context['smart_object'] = smart_object
     context['model_admin_form'] = model_admin_form
     return context
Esempio n. 9
0
 def get_context_data(self, **kwargs):
     context = super(ChangeFlatPage, self).get_context_data(**kwargs)
     page_id = kwargs.get(
         'page_id')  # May be overridden with the one from GET data
     page_id = self.request.GET.get('page_id', page_id)
     page = None
     if page_id:
         page = get_object_or_404(FlatPage, pk=page_id)
     category_admin = get_model_admin_instance(FlatPage, FlatPageAdmin)
     ModelForm = modelform_factory(FlatPage,
                                   fields=('title', 'content',
                                           'registration_required'))
     form = ModelForm(instance=page)
     category_form = helpers.AdminForm(
         form, list(category_admin.get_fieldsets(self.request)),
         category_admin.get_prepopulated_fields(self.request))
     context['page'] = page
     context['model_admin_form'] = category_form
     return context
Esempio n. 10
0
 def get_context_data(self, **kwargs):
     context = super(ChangeCategory, self).get_context_data(**kwargs)
     category_id = kwargs.get('category_id')  # May be overridden with the one from GET data
     category_id = self.request.GET.get('category_id', category_id)
     category = None
     if category_id:
         category = get_object_or_404(ItemCategory, pk=category_id)
         category.items_count = category.item_set.all().count()
         category.save()
     category_admin = get_model_admin_instance(ItemCategory, ItemCategoryAdmin)
     ModelForm = modelform_factory(ItemCategory, fields=('name', 'content_type', 'description', 'badge_text',
                                                            'appear_in_menu', 'is_active'))
     form = ModelForm(instance=category)
     category_form = helpers.AdminForm(form, list(category_admin.get_fieldsets(self.request)),
                                       category_admin.get_prepopulated_fields(self.request),
                                       category_admin.get_readonly_fields(self.request, obj=category))
     context['category'] = category
     context['model_admin_form'] = category_form
     return context
Esempio n. 11
0
 def post(self, request, *args, **kwargs):
     object_id = kwargs.get('object_id')
     module = get_object_or_404(self.model, pk=object_id)
     config_model = module.config_model
     config_model_admin = import_by_path(module.config_model_admin)
     model_admin = get_model_admin_instance(config_model, config_model_admin)
     config = module.config
     if config is None:
         config = module.config_model()
     model_form = model_admin.get_form(request)
     form = model_form(request.POST, instance=config)
     if form.is_valid():
         form.save()
         next_url = request.META['HTTP_REFERER']
         messages.success(request, 'Module configuration ' + _('successfully updated'))
         return HttpResponseRedirect(next_url)
     else:
         context = self.get_context_data(**kwargs)
         context['errors'] = form.errors
         return render(request, self.template_name, context)
Esempio n. 12
0
 def get_context_data(self, **kwargs):
     context = super(ChangePromotion, self).get_context_data(**kwargs)
     promotion_id = kwargs.get(
         'promotion_id')  # May be overridden with the one from GET data
     promotion_id = self.request.GET.get('promotion_id', promotion_id)
     promotion = None
     if promotion_id:
         promotion = get_object_or_404(Promotion, pk=promotion_id)
     promotion_admin = get_model_admin_instance(Promotion, PromotionAdmin)
     ModelForm = modelform_factory(Promotion,
                                   fields=('title', 'start_on', 'end_on',
                                           'rate', 'is_active', 'item',
                                           'category'))
     form = ModelForm(instance=promotion)
     promotion_form = helpers.AdminForm(
         form, list(promotion_admin.get_fieldsets(self.request)),
         promotion_admin.get_prepopulated_fields(self.request),
         promotion_admin.get_readonly_fields(self.request, obj=promotion))
     context['promotion'] = promotion
     context['model_admin_form'] = promotion_form
     return context
Esempio n. 13
0
 def get_context_data(self, **kwargs):
     context = super(ChangeSmartObject, self).get_context_data(**kwargs)
     object_type = kwargs.get('object_type')
     smart_object_id = kwargs.get(
         'smart_object_id')  # May be overridden with the one from GET data
     smart_object = None
     if object_type == BANNER:
         model = Banner
         model_admin = BannerAdmin
     else:
         model = SmartCategory
         model_admin = SmartCategoryAdmin
     if smart_object_id:
         smart_object = get_object_or_404(model, pk=smart_object_id)
         if smart_object.content_type == CATEGORIES:
             smart_object.content = [
                 ProductCategory.objects.get(pk=pk)
                 for pk in smart_object.items_fk_list
             ]
         else:
             try:
                 smart_object.content = [
                     Product.objects.get(pk=pk)
                     for pk in smart_object.items_fk_list
                 ]
             except Product.DoesNotExist:
                 # smart_object.content = [RecurringPaymentService.objects.get(pk=pk) for pk in smart_object.items_fk_list]
                 smart_object.content = []
     object_admin = get_model_admin_instance(model, model_admin)
     ModelForm = modelform_factory(model, fields=model_admin.fields)
     form = ModelForm(instance=smart_object)
     model_admin_form = helpers.AdminForm(
         form, list(object_admin.get_fieldsets(self.request)),
         object_admin.get_prepopulated_fields(self.request))
     context['object_type'] = object_type
     context['smart_object'] = smart_object
     context['model_admin_form'] = model_admin_form
     return context
Esempio n. 14
0
    def get_context_data(self, **kwargs):

        context = super(Network, self).get_context_data(**kwargs)
        all_device_count = Device.objects.all().count()

        category = None
        prospect_admin = get_model_admin_instance(Device, DeviceAdmin)
        ModelForm = modelform_factory(Device,
                                      fields=('category', 'city', 'name',
                                              'phone', 'longitude', 'latitude',
                                              'manager_name', 'description'))
        form = ModelForm(instance=category)
        prospect_form = helpers.AdminForm(
            form, list(prospect_admin.get_fieldsets(self.request)),
            prospect_admin.get_prepopulated_fields(self.request),
            prospect_admin.get_readonly_fields(self.request, obj=category))

        context['model_admin_form'] = prospect_form

        if all_device_count > 0:
            context['last_device_id'] = (
                Device.objects.all().order_by('-id')[0]).id

        context['device_categories'] = DeviceCategory.objects.all().order_by(
            'name')
        context['cities'] = City.objects.all()
        context['media_root'] = getattr(settings, 'MEDIA_URL')
        context['member'] = self.request.user
        device_queryset = Device.objects.all()

        context['devices'] = device_queryset[0:DEVICE_BLOCK_SIZE]
        count_devices = device_queryset.count()
        device_blocks = int(math.ceil(
            float(count_devices) / DEVICE_BLOCK_SIZE))
        context['device_blocks'] = device_blocks
        context['event_types'] = LogEventType.objects.all()
        return context
Esempio n. 15
0
    def post(self, request, *args, **kwargs):
        device_id = self.request.POST.get('device_id')
        category_id = self.request.POST.get('category')
        device = Device()
        if device_id:
            device = get_object_or_404(Device, pk=device_id)
        device_admin = get_model_admin_instance(Device, DeviceAdmin)
        ModelForm = device_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=device)
        if form.is_valid():
            device.name = form.cleaned_data['name']
            device.description = form.cleaned_data['description']
            device.phone = form.cleaned_data['phone']
            device.latitude = form.cleaned_data['latitude']
            device.longitude = form.cleaned_data['longitude']
            device.manager_name = form.cleaned_data['manager_name']
            device.category = DeviceCategory.objects.get(pk=category_id)

            device.save()
            if device_id:
                next_url = reverse('locator:prospect', args=(device_id, ))
                messages.success(
                    request,
                    _("Prospect %s successfully updated." % device.name))
            else:
                next_url = self.request.REQUEST.get('next')
                if not next_url:
                    next_url = reverse('locator:prospect')
                messages.success(
                    request,
                    _("Prospect %s successfully created." % device.name))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 16
0
 def post(self, request, *args, **kwargs):
     page_id = self.request.POST.get('page_id')
     page = None
     if page_id:
         page = get_object_or_404(FlatPage, pk=page_id)
     category_admin = get_model_admin_instance(FlatPage, FlatPageAdmin)
     ModelForm = category_admin.get_form(self.request)
     form = ModelForm(request.POST, instance=page)
     if form.is_valid():
         title = form.cleaned_data['title']
         content = form.cleaned_data['content']
         url = request.POST.get('url')
         if page is None:
             page = FlatPage()
             page.url = slugify(title)
         else:
             if page.url != FlatPage.AGREEMENT and page.url != FlatPage.LEGAL_MENTIONS:
                 page.url = url if url else slugify(title)
         page.title = title
         page.content = content
         page.registration_required = True if request.POST.get(
             'registration_required') else False
         page.save()
         if page_id:
             next_url = reverse('ikwen:change_flatpage', args=(page_id, ))
             messages.success(
                 request, _("Page %s successfully updated." % page.title))
         else:
             next_url = reverse('ikwen:change_flatpage')
             messages.success(
                 request, _("Page %s successfully created." % page.title))
         return HttpResponseRedirect(next_url)
     else:
         context = self.get_context_data(**kwargs)
         context['errors'] = form.errors
         return render(request, self.template_name, context)
Esempio n. 17
0
    def post(self, request, *args, **kwargs):
        service = get_service_instance()
        config = service.config
        object_id = kwargs.get('object_id', request.POST.get('object_id'))
        product_admin = get_model_admin_instance(self.model, self.model_admin)
        if object_id:
            obj = self.get_object(**kwargs)
        else:
            obj = self.model()
        model_form = product_admin.get_form(request)
        form = model_form(request.POST, instance=obj)
        if form.is_valid():
            name = request.POST.get('name')
            category_id = request.POST.get('category')
            brand = request.POST.get('brand')
            reference = request.POST.get('reference')
            original_id = request.POST.get('original_id')
            wholesale_price = float(request.POST.get('wholesale_price'))
            packing_price = float(request.POST.get('packing_price'))
            try:
                retail_price = float(request.POST.get('retail_price'))
            except:
                retail_price = 0
            max_price = request.POST.get('max_price')
            summary = request.POST.get('summary')
            description = request.POST.get('description')
            badge_text = request.POST.get('badge_text')
            size = request.POST.get('size')
            weight = request.POST.get('weight')
            stock = request.POST.get('stock')
            unit_of_measurement = request.POST.get('unit_of_measurement')
            min_order = request.POST.get('min_order')
            if not min_order:
                min_order = 1
            visible = request.POST.get('visible')
            photos_ids = request.POST.get('photos_ids')
            photos_ids_list = photos_ids.strip(',').split(',') if photos_ids else []
            category = ProductCategory.objects.get(pk=category_id)
            do_revive = False
            if retail_price and retail_price < wholesale_price:
                error = _("Retail price cannot be smaller than wholesale price.")
                context = self.get_context_data(**kwargs)
                context['error'] = error
                return render(request, self.template_name, context)
            if object_id:
                product = get_object_or_404(Product, pk=object_id)
                if getattr(settings, 'IS_PROVIDER', False):
                    if product.is_retailed:
                        error = _("Product already imported by some retailers. Delete and start again.")
                        context = self.get_context_data(**kwargs)
                        context['error'] = error
                        return render(request, self.template_name, context)

                if product.retail_price_is_modifiable and retail_price < product.retail_price:
                    product.previous_price = product.retail_price
                    product.on_sale = True
                    do_revive = True
                else:
                    product.on_sale = False
                if product.category != category:
                    product.category.items_count -= 1
                    product.category.save()
            else:
                if not config.is_pro_version and config.max_products == Product.objects.filter(in_trash=False).count():
                    error = _("Product cannot be added because the limit of %d products is reached." % config.max_products)
                    context = self.get_context_data(**kwargs)
                    context['error'] = error
                    return render(request, self.template_name, context)
                category.items_count = category.product_set.all().count() + 1
                product = Product(units_sold_history=[0])
                try:
                    previous_product_add = Product.objects.all().order_by('-id')[0].created_on
                    diff = datetime.now() - previous_product_add
                    if diff.days > 3:
                        do_revive = True
                except:
                    do_revive = True
                product.order_of_appearance = Product.objects.all().count() + 1
            # if product.id is not None and product.provider != operator:
            #     return HttpResponseForbidden("You don't have permission to access this resource.")
            product.name = name
            product.slug = slugify(name)
            product.brand = brand.strip()
            product.summary = summary
            product.description = description
            product.badge_text = badge_text
            product.category = category
            product.reference = reference
            product.original_id = original_id
            product.size = size
            product.weight = weight
            product.min_order = min_order
            product.packing_price = packing_price
            product.unit_of_measurement = unit_of_measurement
            product.tags = product.slug.replace('-', ' ')
            try:
                product.stock = int(stock.strip())
            except:
                product.stock = 0
            if getattr(settings, 'IS_PROVIDER', False):
                product.wholesale_price = wholesale_price
                if max_price:
                    product.max_price = float(max_price.strip())
                product.retail_price_is_modifiable = True if request.POST.get('retail_price_is_modifiable') else False
            else:
                product.retail_price_is_modifiable = True
            product.photos = []
            if len(photos_ids_list) == 0:
                product.visible = False  # Product without photo are hidden
            else:
                product.visible = True if visible else False  # Product with photo has visibility chosen by user
                for photo_id in photos_ids_list:
                    if photo_id:
                        try:
                            photo = Photo.objects.get(pk=photo_id)
                            product.photos.append(photo)
                        except:
                            pass
            if retail_price:
                product.retail_price = retail_price
            product.provider = service
            product.save()
            category.save()
            if not config.is_pro_version:
                total_products_count = Product.objects.filter(in_trash=False).count()
                if config.max_products == (total_products_count - 10):
                    product_manager_list = get_members_having_permission(Product, 'ik_manage_product')
                    for m in product_manager_list:
                        add_event(service, PRODUCTS_LIMIT_ALMOST_REACHED_EVENT, m)
                if config.max_products == total_products_count - 10:
                    product_manager_list = get_members_having_permission(Product, 'ik_manage_product')
                    for m in product_manager_list:
                        add_event(service, PRODUCTS_LIMIT_REACHED_EVENT, m)
            if object_id:
                next_url = reverse('kako:change_product', args=(object_id, ))
                messages.success(request, _("Product %s successfully updated." % product.name))
            else:
                add_event(service, PRODUCT_PUBLISHED_EVENT, object_id=product.id, model='kako.Product')
                next_url = reverse('kako:product_list')
                messages.success(request, _("Product %s successfully created." % product.name))
            mark_duplicates(product)
            tag = '__' + category.slug
            category_auto_profile_tag, update = ProfileTag.objects.get_or_create(name=category.name, slug=tag, is_auto=True)
            auto_profiletag_id_list = [category_auto_profile_tag.id]
            revival_mail_renderer = 'ikwen_kakocase.kako.utils.render_products_added'
            if product.on_sale:
                revival_mail_renderer = 'ikwen_kakocase.kako.utils.render_product_on_sale'

            self.save_object_profile_tags(request, product, auto_profiletag_id_list=auto_profiletag_id_list,
                                          do_revive=do_revive, revival_mail_renderer=revival_mail_renderer, **kwargs)
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            admin_form = helpers.AdminForm(form, list(product_admin.get_fieldsets(self.request)),
                                           product_admin.get_prepopulated_fields(self.request),
                                           product_admin.get_readonly_fields(self.request))
            context['model_admin_form'] = admin_form
            messages.error(request, _("Product was not created. One ore more fields were invalid."))
            return render(request, self.template_name, context)
Esempio n. 18
0
 def post(self, request, *args, **kwargs):
     post_id = self.request.POST.get('post_id')
     post = None
     member = request.user
     if post_id:
         post = get_object_or_404(Post, pk=post_id)
     post_admin = get_model_admin_instance(Post, PostAdmin)
     ModelForm = post_admin.get_form(self.request)
     form = ModelForm(request.POST, instance=post)
     if form.is_valid():
         title = request.POST.get('title')
         category_id = request.POST.get('category')
         summary = request.POST.get('summary')
         entry = request.POST.get('entry')
         is_active = request.POST.get('is_active')
         image_url = request.POST.get('image_url')
         document_url = request.POST.get('doc_url')
         post_category = PostCategory.objects.get(pk=category_id)
         # media_link = request.POST.get('media_link')
         if not post:
             post = Post(title=title, summary=summary, entry=entry, is_active=is_active, member=member)
             post.slug = slugify(title)
             post.category = post_category
             post.save()
         else:
             post.title = title
             post.slug = slugify(title)
             post.entry = entry
             post.summary = summary
             post.is_active = True if request.POST.get('is_active') else False
         if image_url:
             if not post.image.name or image_url != post.image.url:
                 filename = image_url.split('/')[-1]
                 media_root = getattr(settings, 'MEDIA_ROOT')
                 media_url = getattr(settings, 'MEDIA_URL')
                 image_url = image_url.replace(media_url, '')
                 try:
                     with open(media_root + image_url, 'r') as f:
                         content = File(f)
                         destination = media_root + Post.UPLOAD_TO + "/" + filename
                         post.image.save(destination, content)
                     os.unlink(media_root + image_url)
                 except IOError as e:
                     if getattr(settings, 'DEBUG', False):
                         raise e
                     return {'error': 'File failed to upload. May be invalid or corrupted image file'}
         if document_url:
             if not post.linked_document.name or document_url != post.linked_document.url:
                 document = document_url.split('/')[-1]
                 media_root = getattr(settings, 'MEDIA_ROOT')
                 media_url = getattr(settings, 'MEDIA_URL')
                 document_url = document_url.replace(media_url, '')
                 try:
                     with open(media_root + document_url, 'r') as f:
                         content = File(f)
                         destination = media_root + Post.UPLOAD_TO + "/" + document
                         post.linked_document.save(destination, content)
                     os.unlink(media_root + document_url)
                 except IOError as e:
                     if getattr(settings, 'DEBUG', False):
                         raise e
                     return {'error': 'File failed to upload. May be invalid or corrupted image file'}
         post.save()
         if post_id:
             next_url = reverse('blog:change_post', args=(post_id,)) + '?success=yes'
             messages.success(request, _("Post %s successfully updated." % post.title))
         else:
             next_url = reverse('blog:list_post') + '?success=yes'
         next_url = append_auth_tokens(next_url, request)
         return HttpResponseRedirect(next_url)
     else:
         context = self.get_context_data(**kwargs)
         context['errors'] = form.errors
         return render(request, self.template_name, context)
Esempio n. 19
0
    def post(self, request, *args, **kwargs):
        object_id = kwargs.get('object_id')
        smart_object = None
        if object_id:
            smart_object = get_object_or_404(HomepageSection, pk=object_id)
        model_admin = get_model_admin_instance(HomepageSection,
                                               self.model_admin)
        ModelForm = model_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=smart_object)
        if form.is_valid():
            title = form.cleaned_data['title']
            slug = slugify(title)
            content_type = form.cleaned_data['content_type']
            density = request.POST.get('density')
            image_url = request.POST.get('image_url')
            if not smart_object:
                smart_object = HomepageSection()
            smart_object.density = density
            smart_object.title = title
            smart_object.slug = slug
            smart_object.content_type = content_type
            if content_type == FLAT:
                smart_object.description = form.cleaned_data['description']
            else:
                smart_object.description = request.POST['menu']
            smart_object.text_position = form.cleaned_data['text_position']
            smart_object.cta = form.cleaned_data['cta']
            smart_object.target_url = form.cleaned_data['target_url']
            smart_object.background_image = True if request.POST.get(
                'background_image') else False
            smart_object.save()

            if image_url:
                if not smart_object.image.name or image_url != smart_object.image.url:
                    filename = image_url.split('/')[-1]
                    media_root = getattr(settings, 'MEDIA_ROOT')
                    media_url = getattr(settings, 'MEDIA_URL')
                    image_url = image_url.replace(media_url, '')
                    try:
                        with open(media_root + image_url, 'r') as f:
                            content = File(f)
                            destination = media_root + SmartCategory.UPLOAD_TO + "/" + filename
                            smart_object.image.save(destination, content)
                        os.unlink(media_root + image_url)
                    except IOError as e:
                        if getattr(settings, 'DEBUG', False):
                            raise e
                        return {
                            'error':
                            'File failed to upload. May be invalid or corrupted image file'
                        }
            if object_id:
                next_url = reverse('web:change_homepage_section',
                                   args=(object_id, ))
                messages.success(
                    request,
                    _("Section %s successfully updated." % smart_object.title))
            else:
                next_url = reverse('web:change_homepage_section')
                messages.success(
                    request,
                    _("Section %s successfully created." % smart_object.title))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 20
0
    def post(self, request, *args, **kwargs):
        object_type = kwargs.get('object_type')
        smart_object_id = kwargs.get('smart_object_id')
        smart_object = None
        if object_type == BANNER:
            model = Banner
            model_admin = BannerAdmin
        else:
            model = SmartCategory
            model_admin = SmartCategoryAdmin
        if smart_object_id:
            smart_object = get_object_or_404(model, pk=smart_object_id)
        category_admin = get_model_admin_instance(model, model_admin)
        ModelForm = category_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=smart_object)
        if form.is_valid():
            title = form.cleaned_data['title']
            slug = slugify(title)
            if not smart_object_id:
                try:
                    model.objects.get(slug=slug)
                    context = self.get_context_data(**kwargs)
                    context['errors'] = _(
                        "Smart object with title %s already exists" % title)
                    return render(request, self.template_name, context)
                except ObjectDoesNotExist:
                    pass
            content_type = form.cleaned_data['content_type']
            description = form.cleaned_data.get('description')
            badge_text = form.cleaned_data.get('badge_text')
            order = form.cleaned_data.get('order_of_appearance')
            display = form.cleaned_data.get('display')
            image_url = request.POST.get('image_url')
            cta = request.POST.get('cta')
            if not smart_object:
                smart_object = model()
            smart_object.title = title
            smart_object.content_type = content_type
            smart_object.slug = slug
            if description:
                smart_object.description = description
            if badge_text:
                smart_object.badge_text = badge_text
            if order:
                smart_object.order_of_appearance = order
            if display:
                smart_object.display = display
            if cta:
                smart_object.cta = cta
            smart_object.save()

            if image_url:
                if not smart_object.image.name or image_url != smart_object.image.url:
                    filename = image_url.split('/')[-1]
                    media_root = getattr(settings, 'MEDIA_ROOT')
                    media_url = getattr(settings, 'MEDIA_URL')
                    image_url = image_url.replace(media_url, '')
                    try:
                        with open(media_root + image_url, 'r') as f:
                            content = File(f)
                            destination = media_root + SmartCategory.UPLOAD_TO + "/" + filename
                            smart_object.image.save(destination, content)
                        os.unlink(media_root + image_url)
                    except IOError as e:
                        if getattr(settings, 'DEBUG', False):
                            raise e
                        return {
                            'error':
                            'File failed to upload. May be invalid or corrupted image file'
                        }
            if smart_object_id:
                next_url = reverse('marketing:change_smart_object',
                                   args=(
                                       object_type,
                                       smart_object_id,
                                   ))
                messages.success(
                    request,
                    _("Category %s successfully updated." %
                      smart_object.title))
            else:
                next_url = reverse('marketing:change_smart_object',
                                   args=(object_type, ))
                messages.success(
                    request,
                    _("Category %s successfully created." %
                      smart_object.title))
            next_url = append_auth_tokens(next_url, request)
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 21
0
    def post(self, request, *args, **kwargs):
        model = self.get_model()
        model_admin = self.get_model_admin()
        object_admin = get_model_admin_instance(model, model_admin)
        obj = self.get_object(**kwargs)
        before = None
        if obj:
            before = deepcopy(obj)
        else:
            obj = model()
        model_form = object_admin.get_form(request)
        form = model_form(request.POST, request.FILES, instance=obj)
        if form.is_valid():
            obj = form.save()
            slug_field = request.POST.get('slug_field', 'slug')
            slug = request.POST.get(slug_field)
            if slug:
                obj.__setattr__(slug_field, slug)
            else:
                try:
                    obj.__getattribute__(slug_field)
                    label_field = request.POST.get('label_field', 'name')
                    try:
                        label = obj.__getattribute__(label_field)
                        obj.__setattr__(slug_field, slugify(label))
                        obj.save()
                    except:
                        pass
                except:
                    pass

            if self.auto_profile:
                label_field = request.POST.get('label_field', 'name')
                try:
                    label = obj.__getattribute__(label_field)
                    slug = '__' + slugify(label)
                    if before:
                        before_name = before.__getattribute__(label_field)
                        before_slug = '__' + slugify(before_name)
                        if before_name != label:
                            ProfileTag.objects.filter(slug=before_slug).update(
                                name=label, slug=slug)
                    else:
                        ProfileTag.objects.get_or_create(name=label,
                                                         slug=slug,
                                                         is_auto=True)
                except:
                    pass

            s = get_service_instance()
            for key in obj.__dict__.keys():
                media = obj.__getattribute__(key)
                if not (isinstance(media, FieldFile) and media.field.editable):
                    continue
                uploaded_media_url = request.POST.get(key)
                if uploaded_media_url and (not media.name
                                           or uploaded_media_url != media.url):
                    filename = uploaded_media_url.split('/')[-1]
                    media_root = getattr(settings, 'MEDIA_ROOT')
                    path = uploaded_media_url.replace(
                        getattr(settings, 'MEDIA_URL'), '')
                    if isinstance(media, DjangoImageFieldFile) or isinstance(
                            media, ImageFieldFile):
                        seo_filename = s.project_name_slug + '_' + filename
                    else:
                        seo_filename = filename.capitalize()
                    try:
                        with open(media_root + path, 'r') as f:
                            content = File(f)
                            destination = media_root + media.field.upload_to + "/" + seo_filename
                            media.save(destination, content)
                        os.unlink(media_root + path)
                    except:
                        continue
            self.save_object_profile_tags(request, obj, *args, **kwargs)
            response = self.after_save(request, obj, *args, **kwargs)
            if response:
                return response
            if request.POST.get('keep_editing'):
                next_url = self.get_change_object_url(request, obj, *args,
                                                      **kwargs)
            else:
                next_url = self.get_object_list_url(request, obj, *args,
                                                    **kwargs)
            if before:
                messages.success(
                    request, u'%s <strong>%s</strong> %s' %
                    (obj._meta.verbose_name.capitalize(), unicode(obj),
                     _('successfully updated')))
            else:
                messages.success(
                    request, u'%s <strong>%s</strong> %s' %
                    (obj._meta.verbose_name.capitalize(), unicode(obj),
                     _('successfully changed')))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.get_template_names(), context)
Esempio n. 22
0
    def get_context_data(self, **kwargs):
        context = super(ChangeObjectBase, self).get_context_data(**kwargs)
        model = self.get_model()
        model_admin = self.get_model_admin()
        model_admin = get_model_admin_instance(model, model_admin)
        obj = self.get_object(**kwargs)
        form = self.get_model_form(obj)
        obj_form = helpers.AdminForm(
            form, list(model_admin.get_fieldsets(self.request, obj)),
            model_admin.get_prepopulated_fields(self.request, obj),
            model_admin.get_readonly_fields(self.request, obj))
        model_obj = obj if obj else model()
        date_field_list = []
        datetime_field_list = []
        media_field_list = []
        i = 0
        for key in model_obj.__dict__.keys():
            field = model_obj.__getattribute__(key)
            if isinstance(field, FieldFile):
                if not field.field.editable:
                    continue
                if isinstance(field, DjangoImageFieldFile) or isinstance(
                        field, ImageFieldFile):
                    preview = field.name
                elif isinstance(field, MultiImageFieldFile):
                    preview = field.small_name
                else:
                    preview = get_preview_from_extension(
                        field.name) if field.name else ''
                media_obj = {
                    'image': field,
                    'media': field,
                    'preview': preview,
                    'field': key,
                    'help_text': field.field.help_text,
                    'counter': i
                }
                media_field_list.append(media_obj)
                i += 1
            field = form.base_fields.get(key)
            if isinstance(field, DateField):
                date_field_list.append(key)
            if isinstance(field, DateTimeField):
                datetime_field_list.append(key)

        context[self.context_object_name] = obj
        context[
            'obj'] = obj  # Base template recognize the context object only with the name 'obj'
        context[
            'model'] = model_obj._meta.app_label + '.' + model_obj._meta.model_name
        context['verbose_name'] = model_obj._meta.verbose_name
        context['verbose_name_plural'] = model_obj._meta.verbose_name_plural
        context['object_list_url'] = self.get_object_list_url(
            self.request, obj, **kwargs)
        context['model_admin_form'] = obj_form
        context[
            'label_field'] = self.label_field if self.label_field else 'name'
        context['slug_field'] = self.slug_field if self.slug_field else 'slug'
        context['date_field_list'] = date_field_list
        context['datetime_field_list'] = datetime_field_list
        context['media_field_list'] = media_field_list
        context['embed_doc_template_name'] = self.get_embed_doc_template_name()
        return context
Esempio n. 23
0
 def post(self, request, *args, **kwargs):
     object_admin = get_model_admin_instance(self.model, self.model_admin)
     object_id = kwargs.get('object_id')
     qs = Coupon.objects.using(UMBRELLA)
     if object_id:
         obj = self.get_object(**kwargs)
         qs = qs.exclude(pk=obj.id)
     else:
         obj = self.model()
     name_field_name = request.POST.get('name_field_name', 'name')
     slug_field_name = request.POST.get('slug_field_name', 'slug')
     name = request.POST.get(name_field_name)
     slug = slugify(name)
     found = qs.filter(**{slug_field_name: slug}).count()
     if found:
         context = self.get_context_data(**kwargs)
         context['errors'] = _("A coupon with name %s already exists." %
                               name)
         return render(request, self.template_name, context)
     model_form = object_admin.get_form(request)
     form = model_form(request.POST, instance=obj)
     if form.is_valid():
         form.save()
         try:
             obj.__getattribute__(slug_field_name)
             try:
                 name_field = obj.__getattribute__(name_field_name)
                 obj.__setattr__(slug_field_name, slugify(name_field))
                 obj.save()
             except:
                 pass
         except:
             pass
         image_url = request.POST.get('image_url')
         if image_url:
             s = get_service_instance()
             media_root = getattr(settings, 'MEDIA_ROOT')
             path = image_url.replace(getattr(settings, 'MEDIA_URL'), '')
             path = path.replace(ikwen_settings.MEDIA_URL, '')
             if not obj.image.name or path != obj.image.name:
                 filename = image_url.split('/')[-1]
                 try:
                     with open(media_root + path, 'r') as f:
                         content = File(f)
                         destination = media_root + obj.UPLOAD_TO + "/" + s.project_name_slug + '_' + filename
                         obj.image.save(destination, content)
                         destination2 = destination.replace(
                             media_root, ikwen_settings.MEDIA_ROOT)
                         os.rename(destination, destination2)
                     os.unlink(media_root + path)
                 except IOError as e:
                     if getattr(settings, 'DEBUG', False):
                         raise e
                     return {
                         'error':
                         'File failed to upload. May be invalid or corrupted image file'
                     }
         next_url = self.get_object_list_url(request, obj, *args, **kwargs)
         if object_id:
             messages.success(
                 request, u'%s <strong>%s</strong> %s' %
                 (obj._meta.verbose_name.capitalize(), unicode(obj),
                  _('successfully updated')))
         else:
             messages.success(
                 request, u'%s <strong>%s</strong> %s' %
                 (obj._meta.verbose_name.capitalize(), unicode(obj),
                  _('successfully updated')))
         return HttpResponseRedirect(next_url)
     else:
         context = self.get_context_data(**kwargs)
         context['errors'] = form.errors
         return render(request, self.template_name, context)
Esempio n. 24
0
    def post(self, request, *args, **kwargs):
        smart_category_id = self.request.POST.get('smart_category_id')
        if not smart_category_id:
            smart_category_id = self.request.GET.get('smart_category_id')
        category_id = self.request.POST.get('category_id')
        category = None
        if category_id:
            category = get_object_or_404(ItemCategory, pk=category_id)
        category_admin = get_model_admin_instance(ItemCategory, ItemCategoryAdmin)
        ModelForm = category_admin.get_form(self.request)
        form = ModelForm(request.POST, instance=category)
        if form.is_valid():
            name = form.cleaned_data['name']
            description = form.cleaned_data['description']
            badge_text = form.cleaned_data['badge_text']
            image_url = request.POST.get('image_url')
            content_type = request.POST.get('content_type')

            if not category:
                category = create_category(name)
            else:
                category.name = name
                category.slug = slugify(name)
                category.items_count = category.item_set.all().count()
            category.content_type = content_type
            category.description = description
            category.badge_text = badge_text
            if image_url:
                if not category.image.name or image_url != category.image.url:
                    filename = image_url.split('/')[-1]
                    media_root = getattr(settings, 'MEDIA_ROOT')
                    media_url = getattr(settings, 'MEDIA_URL')
                    image_url = image_url.replace(media_url, '')
                    try:
                        with open(media_root + image_url, 'r') as f:
                            content = File(f)
                            destination = media_root + ItemCategory.UPLOAD_TO + "/" + filename
                            category.image.save(destination, content)
                        os.unlink(media_root + image_url)
                    except IOError as e:
                        if getattr(settings, 'DEBUG', False):
                            raise e
                        return {'error': 'File failed to upload. May be invalid or corrupted image file'}
            category.save()
            if smart_category_id:
                try:
                    smart_category = SmartCategory.objects.get(pk=smart_category_id)
                    if category.id not in smart_category.items_fk_list:
                        smart_category.items_fk_list.append(category.id)
                    smart_category.save()
                except:
                    pass
            if category_id:
                next_url = reverse('items:change_category', args=(category_id, ))
                messages.success(request, _("Category %s successfully updated." % category.name))
            else:
                next_url = self.request.REQUEST.get('next')
                if not next_url:
                    next_url = reverse('items:category_list')
                messages.success(request, _("Category %s successfully created." % category.name))
            return HttpResponseRedirect(next_url)
        else:
            context = self.get_context_data(**kwargs)
            context['errors'] = form.errors
            return render(request, self.template_name, context)
Esempio n. 25
0
    def post(self, request, *args, **kwargs):
        service = get_service_instance()
        post_admin = get_model_admin_instance(self.model, self.model_admin)
        form = SubmitAdForm(request.POST)
        if form.is_valid():
            hood = request.POST.get('hood')
            subcategory = request.POST.get('subcategory')
            surface = float(request.POST.get('surface'))
            bedroom_count = request.POST.get('bedroom_count')
            bathroom_count = request.POST.get('bathroom_count')
            kitchen_count = request.POST.get('kitchen_count')
            saloon_count = request.POST.get('saloon_count')
            cost = request.POST.get('cost')
            description = request.POST.get('description')
            has_ac = request.POST.get('has_ac')
            has_cleaning_service = request.POST.get('has_cleaning_service')
            has_parking = request.POST.get('has_parking')
            has_safeguard = request.POST.get('has_safeguard')
            is_furnished = request.POST.get('is_furnished')
            is_registered = request.POST.get('is_registered')
            owner_email = request.POST.get('owner_email')
            owner_phone = request.POST.get('owner_phone')

            photos_ids = request.POST.get('photos_ids')
            photos_ids_list = photos_ids.strip(',').split(
                ',') if photos_ids else []

            post_hood = Hood.objects.get(name=hood)
            post_subcategory = SubCategory.objects.get(name=subcategory)

            member = request.user

            owner_form = OwnerForm({
                'phone': owner_phone,
                'email': owner_email
            })

            if owner_form.is_valid():
                try:
                    owner = Owner.objects.get(member=member,
                                              phone=owner_phone,
                                              email=owner_email)
                except:
                    owner = Owner.objects.create(member=member,
                                                 phone=owner_phone,
                                                 email=owner_email)
            else:
                context = self.get_context_data(**kwargs)
                context['model_admin_form'] = owner_form
                error = _("Post was not created. Owner fields are invalid.")
                kwargs['error'] = error
                messages.error(
                    request,
                    _("Post was not created. Owner fields are invalid."))
                return render(request, self.template_name, context)

            post_owner = owner

            post = Post.objects.create(subcategory=post_subcategory,
                                       hood=post_hood,
                                       owner=post_owner,
                                       cost=cost)

            post.description = description
            post.surface = surface
            post.bedroom_count = bedroom_count
            post.bathroom_count = bathroom_count
            post.kitchen_count = kitchen_count
            post.saloon_count = saloon_count

            if has_ac:
                post.has_ac = has_ac

            if has_cleaning_service:
                post.has_cleaning_service = has_cleaning_service

            if has_parking:
                post.has_parking = has_parking

            if has_safeguard:
                post.has_safeguard = has_safeguard

            if is_furnished:
                post.is_furnished = is_furnished

            if is_registered:
                post.is_registered = is_registered

            post.save(bedroom_count, bathroom_count, kitchen_count,
                      saloon_count)

            post.photos = []

            for photo_id in photos_ids_list:
                if photo_id:
                    try:
                        photo = Photo.objects.get(pk=photo_id)
                        post.photos.append(photo)
                    except:
                        pass

            post.save()

            next_url = reverse('home')
            messages.success(request,
                             _("Post %s successfully created." % post))
            # mark_duplicates(post)
            # tag = '__' + category.slug
            # category_auto_profile_tag, update = ProfileTag.objects.get_or_create(name=category.name, slug=tag,
            #                                                                      is_auto=True)
            # auto_profiletag_id_list = [category_auto_profile_tag.id]
            # revival_mail_renderer = 'ikwen_kakocase.kako.utils.render_posts_added'
            #
            # self.save_object_profile_tags(request, post, auto_profiletag_id_list=auto_profiletag_id_list,
            #                               do_revive=do_revive, revival_mail_renderer=revival_mail_renderer, **kwargs)
            return HttpResponseRedirect(next_url + '?post_added=yes')
        else:
            context = self.get_context_data(**kwargs)
            # admin_form = helpers.AdminForm(form, list(post_admin.get_fieldsets(self.request)),
            #                                post_admin.get_prepopulated_fields(self.request),
            #                                post_admin.get_readonly_fields(self.request))
            # context['model_admin_form'] = admin_form
            context['form'] = form
            error = _("Post was not created. One ore more fields are invalid.")
            context['error'] = error
            messages.error(
                request,
                _("Post was not created. One ore more fields are invalid."))
            return render(request, self.template_name, context)