Мне нужно получить некоторые данные из API. Он возвращает GET в XML, и у меня возникают некоторые проблемы при попытке выяснить, как назначить некоторые данные из API для полей в моей модели в django / python.
API для activeCollab не позволяет мне создавать свой собственный идентификатор проекта, он автоматически генерирует номер для меня. Поэтому я хотел бы взять это число, а затем присвоить его полю API_id в моей модели проекта. Может ли кто-нибудь помочь мне понять, как взять XML, возвращаемый GET, и назначить его одному из моих полей.
ActiveCollab API Документация для проектов:
http://www.activecollab.com/docs/manuals/developers/api/projects
Вот мой models.py
class Project(models.Model):
client = models.ForeignKey(Clients, related_name='projects')
created_by = models.ForeignKey(User, related_name='created_by')
#general information
API_id = models.IntegerField(max_length=10, verbose_name='aC ProjectID', null=True, blank=True)
proj_name = models.CharField(max_length=255, verbose_name='Project Name')
pre_quote = models.CharField(max_length=3)
quote = models.IntegerField(max_length=10, verbose_name='Quote #', unique=True)
estimator = models.ForeignKey(User, related_name='Estimator', null=True)
desc = models.TextField(verbose_name='Description', null=True, blank=True)
starts_on = models.DateField(verbose_name='Start Date')
due_date = models.DateField(verbose_name='Due Date', null=True, blank=True)
completed_on = models.DateField(verbose_name='Finished On', null=True, blank=True)
notes = models.TextField(verbose_name='Notes', null=True, blank=True)
Views.py
def addProject(request):
if request.method == 'POST':
form = AddSingleProjectForm(request.POST)
if form.is_valid():
project = form.save(commit=False)
project.created_by = request.user
today = datetime.date.today()
project.pre_quote = "%s-" % (str(today.year)[2:4])
project.quote = Project.objects.latest().quote+1
project.save()
project.status.create(
value = form.cleaned_data.get('status', None)
)
#API activeCollab
params = urllib.urlencode({
'format':'xml',
'submitted':'submitted',
'project[name]': project.proj_name,
'project[overview]': project.desc,
'project[starts_on]': project.starts_on,
'project[leader_id]': 10,
})
req = urllib2.Request("web_url/public/api.php?path_info=/projects/add&token=####################", params)
f = urllib2.urlopen(req)
print f.read()
return HttpResponseRedirect('/project/')
else:
form = AddSingleProjectForm()
return render_to_response('project/addProject.html', {
'form': form, 'user':request.user}, context_instance=RequestContext(request))
Любые предложения будут оценены.
Steve
Ps. Вызов API, который я показал, заключается в создании нового проекта