def createSoftware(request): if request.method == 'POST': form = CreateSoftwareForm(request.POST) if form.is_valid(): name = form.cleaned_data['name'] extension = form.cleaned_data['extension'] licence = form.cleaned_data['licence'] print(licence) software = Software(name=name, extension=extension, licence=licence) software.save() messages.add_message(request, messages.INFO, 'Le logiciel à été créé') return redirect('software-list', ) else: pass else: form = CreateSoftwareForm() return render(request, "software/create.html", { 'form': form, })
def add(self, name, version, type, dependency_software): software = Software(name=name, version=version, type=type) software.save() if len(dependency_software) > 0: self.fill_dependency_list(software, dependency_software) return software
def review_page(request, id): # Объявление начальных значений переменных similar_block = "" similar_tags_block = "" user = None try: # Получение текущего пользователя user = CustomUser.get_user(request) this_object = Review.objects.get(id=id) # Получаем список приложений данного отзыва review_img = this_object.get_addition() software = Software() photo_dict = {} if this_object.software is not None: software = Software.objects.get(id=this_object.software.id) if software: soft_photo = software.get_main_photo() if soft_photo is not None: for s in soft_photo: photo_dict[software.id] = s # Второстепенные объекты - похожие ПО similar_block = software_views.render_similars( software, id_widget="same_software") similar_tags_block = software_views.render_similars_tags( software) # except: # raise Http404("Отзыв не найден") except Exception as error: pass dbl.log("Ошибка работы с отзывом" + str(error)) rating = [1, 2, 3, 4, 5] return render( request, 'review/review.html', { 'review': this_object, 'rating': rating, 'review_img': review_img, 'software': software, 'photo_dict': photo_dict, 'similar_block': similar_block, 'similar_tags_block': similar_tags_block, 'user': user })
def index(request): # Блок новинок new_soft = Software.get_new() dbl.log("0") # Ф-ия составления html кода горихонтальных виджетов block_new_soft = render_horizontal_widgets(new_soft, id_widget="new_software") # Блок видов ПО site_soft = Software.software_list_by_type(cl_val=2) block_site_soft = render_horizontal_widgets( site_soft, id_widget="site_software", display_type="style=display:none;", widget_shell=False, show_more="/softwares/?classification_1_value_2=2") desktop_soft = Software.software_list_by_type(cl_val=1) block_desktop_soft = render_horizontal_widgets( desktop_soft, id_widget="desktop_software", widget_shell=False, show_more="/softwares/?classification_1_value_1=1") mobile_soft = Software.software_list_by_type(cl_val=3) block_mobile_soft = render_horizontal_widgets( mobile_soft, id_widget="mobile_software", display_type="style=display:none;", widget_shell=False, show_more="/softwares/?classification_1_value_3=3") # Блок отзывов list_review = Review.objects.all().filter( date_of_delete=None, visibility=True, star__gte=4).order_by('-date')[:3] # Блок тегов list_tag = Tag.objects.all().filter(date_of_delete=None, visibility=True).order_by('name') return render( request, 'main/index.html', { 'block_new_soft': block_new_soft, 'block_site_soft': block_site_soft, 'block_desktop_soft': block_desktop_soft, 'block_mobile_soft': block_mobile_soft, 'list_review': list_review, 'list_tag': list_tag })
def upload_stw(request): form = OForm() if request.method == "POST": myfile = request.FILES['stw'] fs = FileSystemStorage() filename = fs.save(myfile.name, myfile) uploaded_file_url = filename softwares = Software(title=request.POST.get('title'), name=request.POST.get('name'), stw=uploaded_file_url) softwares.save() return HttpResponseRedirect('/download/soft_list') return render(request, "download/upload.html", {"form": form})
def favourites(request): # Получения пользователя user = CustomUser.get_user(request) dbl.log("1") if user: dbl.log("1") favourites = Software.get_favourites_by_user(user) dbl.log("1"+str(favourites)) # Словарь главных фото photo_dict = {} dbl.log("1") for soft in favourites: # Получение главного фото soft_photo = soft.get_main_photo() if soft_photo is not None: # Здесь перебор в цикле, но на самом деле в этом запросе всего 1 объект for s in soft_photo: dbl.log("1") photo_dict[soft.id] = s dbl.log("1") response= render(request, 'user/favourites.html', {'favourites':favourites, 'user':user, 'photo_dict':photo_dict}) return response
def add_software(request): """ Show the software form, and capture the information """ if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login?next=%s' % request.path) original_id = request.GET.get('oid', None) if request.method == 'POST': new_data = request.POST.copy() new_data.update(request.FILES) form = SoftwareForm(new_data) if form.is_valid(): new_software = Software(user=request.user, title=form.cleaned_data['title']) if original_id: new_software.original_id = original_id new_software.save() try: new_revision = Revision( software=new_software, version=form.cleaned_data['version'], authors=form.cleaned_data['authors'], contact=form.cleaned_data['contact'], short_description=form.cleaned_data['short_description'], description=form.cleaned_data['description'], changes='Initial Announcement on mloss.org.', project_url=form.cleaned_data['project_url'], tags=form.cleaned_data['tags'], language=form.cleaned_data['language'], operating_systems=form.cleaned_data['operating_systems'], dataformats=form.cleaned_data['dataformats'], os_license=form.cleaned_data['os_license'], paper_bib=form.cleaned_data['paper_bib'], download_url=form.cleaned_data['download_url'], tarball=form.cleaned_data['tarball'], thumbnail=form.cleaned_data['thumbnail'], screenshot=form.cleaned_data['screenshot'], ) if original_id: new_revision.original_id = original_id save_tarball(request, new_revision) save_images(request, new_revision, old_revision=None) new_revision.save() return HttpResponseRedirect(new_revision.get_absolute_url()) except: new_software.delete() else: form = SoftwareForm(initial={ 'user': request.user, 'changes': 'Initial Announcement on mloss.org.' }) return render_to_response('software/software_add.html', {'form': form}, context_instance=RequestContext(request))
def post_api_data(request): if request.method == "POST": software = Software() json_body = request.body.decode('utf-8') json_data = json.loads(json_body) software.title = json_data['title'] software.name = json_data['name'] software.stw = json_data['stw'] software.save() return JsonResponse("Uploded !", safe=False)
def insert_description(lang): if not SoftwareData.init_language(lang.lang_code): print "No data for lang:", lang else: print "\ntotal for %s: %s" % (lang.lang_code, SoftwareData.select().count()) i = 0 for s in SoftwareData.select(): try: software_obj = Software.objects.get(pkg_name=s.pkg_name) except: software_obj = Software(pkg_name=s.pkg_name) software_obj.save() try: l10n_obj = SoftwareL10n.objects.get(software=software_obj, language_code=lang) except: l10n_obj = SoftwareL10n(software=software_obj, language_code=lang, alias_name=s.alias_name, short_desc=s.short_desc, long_desc=s.long_desc) l10n_obj.save() i += 1 print "\rProgress: %s" % i,
def add_software(request): """ Show the software form, and capture the information """ if not request.user.is_authenticated(): return HttpResponseRedirect('/accounts/login?next=%s' % request.path) original_id = request.GET.get('oid', None) if request.method == 'POST': new_data = request.POST.copy() new_data.update(request.FILES) form = SoftwareForm(new_data) if form.is_valid(): new_software = Software(user=request.user, title=form.cleaned_data['title']) if original_id: new_software.original_id = original_id new_software.save() try: new_revision = Revision(software=new_software, version=form.cleaned_data['version'], authors=form.cleaned_data['authors'], contact=form.cleaned_data['contact'], short_description=form.cleaned_data['short_description'], description=form.cleaned_data['description'], changes='Initial Announcement on mloss.org.', project_url=form.cleaned_data['project_url'], tags=form.cleaned_data['tags'], language=form.cleaned_data['language'], operating_systems = form.cleaned_data['operating_systems'], dataformats = form.cleaned_data['dataformats'], os_license=form.cleaned_data['os_license'], paper_bib = form.cleaned_data['paper_bib'], download_url=form.cleaned_data['download_url'], tarball=form.cleaned_data['tarball'], thumbnail=form.cleaned_data['thumbnail'], screenshot=form.cleaned_data['screenshot'], ) if original_id: new_revision.original_id = original_id save_tarball(request, new_revision) save_images(request, new_revision, old_revision = None) new_revision.save() return HttpResponseRedirect(new_revision.get_absolute_url()) except: new_software.delete() else: form = SoftwareForm(initial={'user':request.user, 'changes':'Initial Announcement on mloss.org.'}) return render_to_response('software/software_add.html', { 'form': form }, context_instance=RequestContext(request))
def downloads(request): # Получения пользователя user = CustomUser.get_user(request) if user: downloads = Software.get_downloads_by_user(user) # Словарь главных фото photo_dict = {} for soft in downloads: # Получение главного фото soft_photo = soft.get_main_photo() if soft_photo is not None: # Здесь перебор в цикле, но на самом деле в этом запросе всего 1 объект for s in soft_photo: photo_dict[soft.id] = s response= render(request, 'user/downloads.html', {'downloads':downloads, 'user':user, 'photo_dict':photo_dict}) return response
def insert_into_database(self): """ For a given CRANPackage construct Software object and insert it into database """ try: me = User.objects.get(username=settings.R_CRAN_BOT) except User.DoesNotExist: import string from random import Random newpasswd = ''.join( Random().sample(string.letters+string.digits, 32) ) user = User.objects.create_user(settings.R_CRAN_BOT, settings.R_CRAN_BOT + '@mloss.org', newpasswd) user.save() me = User.objects.get(username=settings.R_CRAN_BOT) #don't insert crappy items having future date if self.date<datetime.datetime.now(): # check whether the package exists (without prefix) dbpkg = Software.objects.filter(title=self.name) if dbpkg.count() > 0: return # check whether the package exists (without prefix) dbpkg = Software.objects.filter(user=me, title=self.prefix+self.name) if dbpkg.count() == 0: # if not create a new Software project spkg = Software(user=me, title=self.prefix+self.name) spkg.save(silent_update=True) try: srev = Revision(software=spkg, version=self.version, short_description=self.short_description, description=self.description, os_license=self.os_license, language='R', operating_systems='agnostic', download_url=self.url, project_url=self.url, tags='r-cran', pub_date=self.date, updated_date=self.date, authors=self.author, changes="Initial Announcement on mloss.org by r-cran-robot") srev.save(silent_update=True) except: spkg.delete() else: #print 'Package ' + self.name + ' found, UPDATING...' assert(dbpkg.count() == 1) spkg = dbpkg[0] try: srev = Revision.objects.get(software=spkg, revision=0) # Don't mess around with manual entries. if srev.tags != 'r-cran': return except ObjectDoesNotExist: srev = None if srev and srev.version == self.version: srev.short_description=self.short_description srev.description=self.description srev.os_license=self.os_license srev.download_url=self.url srev.project_url=self.url srev.updated_date=self.date srev.authors=self.author srev.changes="Fetched by r-cran-robot on %s" % str(datetime.datetime.now()) else: srev = Revision(software=spkg, version=self.version, short_description=self.short_description, description=self.description, os_license=self.os_license, language='R', operating_systems='agnostic', download_url=self.url, project_url=self.url, tags='r-cran', pub_date=self.date, updated_date=self.date, authors=self.author, changes="Fetched by r-cran-robot on %s" % str(datetime.datetime.now())) spkg.increment_revisions() srev.save(silent_update=True)
def discussions(request, type='', id=0): similar_list = [] discussion_list = [] discussion_comment_block = "" similar_block = "" similar_tags_block = "" software = Software() try: if len(type) > 0 and id > 0: if type == 'softwares': software = Software.objects.get(id=id) # list_disc_id = [] # # Хэш комментариев к обсуждениям # comments_dict = {} # discussion_list = Discussion.objects.all().filter(date_of_delete=None, visibility=True, software=id).order_by('date') # for d in discussion_list: # list_disc_id.append(d.id) # comment_list = Comment.objects.filter(date_of_delete=None, visibility=True, discussion__in=list_disc_id).order_by('date') # for discussion in discussion_list: # list_comment_for_one_disc = [] # for comment in comment_list: # if comment.discussion == discussion: # list_comment_for_one_disc.append(comment) # # Добавляем ключ и значение в словарь # comments_dict[discussion.id] = list_comment_for_one_disc discussion_comment_block = render_discussion_comment( software, request, limit=0, show_more=False) dbl.log("Ошибка 1 ") # Второстепенные объекты - похожие ПО similar_block = software_views.render_similars( software, id_widget="same_software") dbl.log("Ошибка 2 ") similar_tags_block = software_views.render_similars_tags( software) return render( request, 'discussion/discussions.html', { 'discussion_comment_block': discussion_comment_block, 'software': software, 'similar_block': similar_block, 'similar_tags_block': similar_tags_block }) except Exception as error: pass dbl.log("Ошибка работы " + str(error)) # except: # raise Http404("Такого обсуждения нет, попробуйте позже") # return render(request, 'discussion/discussions.html', {'discussion_list':discussion_list, 'comments_dict':comments_dict, # 'software':software, 'similar_list':similar_list}) raise Http404("Такого обсуждения нет, попробуйте позже")
def get_validation_structure(self): test_software1 = Software(name="example", version="1.0", type="software_type") test_software2 = Software(name="example", version="1.1", type="software_type") validation_exceptions = ["ValidationRuleException", "ValidationRuleVersionException"] return [test_software1, test_software2], validation_exceptions