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)
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)
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
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
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)
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
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
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
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
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
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)
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
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
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
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)
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)
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)
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)
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)
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)
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)
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
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)
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)
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)